gpt4 book ai didi

machine-learning - Scikit learn - 测试集上的 fit_transform

转载 作者:行者123 更新时间:2023-11-30 08:22:37 24 4
gpt4 key购买 nike

我正在努力通过 Scikit learn 在 Python 中使用随机森林。我的问题是我用它进行文本分类(分为 3 类 - 正/负/中性),我提取的特征主要是单词/一元组,所以我需要将它们转换为数字特征。我找到了一种使用 DictVectorizerfit_transform 来做到这一点的方法:

from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import classification_report
from sklearn.feature_extraction import DictVectorizer

vec = DictVectorizer(sparse=False)
rf = RandomForestClassifier(n_estimators = 100)
trainFeatures1 = vec.fit_transform(trainFeatures)

# Fit the training data to the training output and create the decision trees
rf = rf.fit(trainFeatures1.toarray(), LabelEncoder().fit_transform(trainLabels))

testFeatures1 = vec.fit_transform(testFeatures)
# Take the same decision trees and run on the test data
Output = rf.score(testFeatures1.toarray(), LabelEncoder().fit_transform(testLabels))

print "accuracy: " + str(Output)

我的问题是 fit_transform 方法正在处理训练数据集,其中包含大约 8000 个实例,但是当我尝试将测试集也转换为数字特征(大约 80000 个实例)时,我收到一个内存错误:

testFeatures1 = vec.fit_transform(testFeatures)
File "C:\Python27\lib\site-packages\sklearn\feature_extraction\dict_vectorizer.py", line 143, in fit_transform
return self.transform(X)
File "C:\Python27\lib\site-packages\sklearn\feature_extraction\dict_vectorizer.py", line 251, in transform
Xa = np.zeros((len(X), len(vocab)), dtype=dtype)
MemoryError

什么可能导致此问题?是否有解决方法?非常感谢!

最佳答案

您不应该对测试数据执行 fit_transform 操作,而只能执行 transform 操作。否则,您将获得与训练期间使用的矢量化不同的矢量化。

对于内存问题,我推荐 TfIdfVectorizer,它有许多降低维度的选项(通过删除罕见的一元语法等)。

更新

如果唯一的问题是拟合测试数据,只需将其分成小块即可。而不是类似的东西

x=vect.transform(test)
eval(x)

你可以做到

K=10
for i in range(K):
size=len(test)/K
x=vect.transform(test[ i*size : (i+1)*size ])
eval(x)

记录结果/统计数据并随后进行分析。

特别是

predictions = []

K=10
for i in range(K):
size=len(test)/K
x=vect.transform(test[ i*size : (i+1)*size ])
predictions += rf.predict(x) # assuming it retuns a list of labels, otherwise - convert it to list

print accuracy_score( predictions, true_labels )

关于machine-learning - Scikit learn - 测试集上的 fit_transform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21998008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com