我正在努力使用Scikit学习Python中的随机森林.我的问题是我用它进行文本分类(3个类 - 正/负/中性),我提取的特征主要是单词/ unigrams,所以我需要将它们转换为数字特征.我找到了一种方法做它DictVectorizer的fit_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)
Run Code Online (Sandbox Code Playgroud)
我的问题是该fit_transform方法正在处理火车数据集,其中包含大约8000个实例,但是当我尝试将我的测试集转换为数字特征时,也就是大约80000个实例,我得到一个内存错误,说:
testFeatures1 = vec.fit_transform(testFeatures)
File …Run Code Online (Sandbox Code Playgroud) classification machine-learning random-forest scikit-learn text-classification
我使用scikit-learn和PCA来减少尺寸问题.
我有两个numpy矩阵,一个有大小(1050,4096),另一个有大小(50,4096).我试图减小两者的尺寸以产生(1050,399)和(50,399)但是,在做了pca之后我得到了(1050,399)和(50,50)矩阵.一个矩阵用于knn训练,另一个用于knn测试.我的代码下面有什么问题?
pca = decomposition.PCA()
pca.fit(train)
pca.n_components = 399
train_reduced = pca.fit_transform(train)
pca.n_components = 399
pca.fit(test)
test_reduced = pca.fit_transform(test)
Run Code Online (Sandbox Code Playgroud)