Я изо всех сил пытаюсь использовать Random Forest в Python с обучением Scikit. Моя проблема в том, что я использую его для классификации текста (в 3 классах - положительный/отрицательный/нейтральный), а функции, которые я извлекаю, - это в основном слова/униграммы, поэтому мне нужно преобразовать их в числовые функции. Я нашел способ сделать это с помощью fit_transform
DictVectorizer
:
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
С чем это может быть связано и есть ли обходной путь? Большое спасибо!