我正在使用scikit-learn进行机器学习。Scikit学习RandomForestClassifier()功能选择,只需选择火车设置?
我有800个具有2048个特征的样本,因此我想减少我的特征以获得更好的准确性。
它是一种多类问题(类0-5),并且特征包含1
的和0
的:[1,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0....,0]
我使用整体方法,RandomForestClassifier()
。
我应该只是功能选择培训数据?
是否足够如果我使用此代码:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = .3)
clf = RandomForestClassifier(n_estimators = 200,
warm_start = True,
criterion = 'gini',
max_depth = 13
)
clf.fit(X_train, y_train).transform(X_train)
predicted = clf.predict(X_test)
expected = y_test
confusionMatrix = metrics.confusion_matrix(expected, predicted)
原因精度没有得到更高。代码中的一切都好吗,还是我做错了什么?
我会非常感谢您的帮助。
你不介意,香草,发帖也十分重视你**'sklearn .__ version__'获得[从邮件列表,这本来就是问交叉转贴] **,也从'clf.set_params (oob_score = True).fit(...).oob_score_'为'(X_train,y_train)'resp。 **'(X,y)'**?谢谢。 – user3666197
也可以查看>>> http://stackoverflow.com/a/30471026/3666197 - 即** Breiman(伯克利)关于bootstrap-aggregation方法的论文,**通过设计避免过度拟合**和一个经验证的极限定理,它是基于RF的集合方法特有的.fit(X_test,y_test).oob_score_' lim->'.fit(X,y).oob_score_'等重要事物。解决** 2048D ** - 二进制“{0 | 1}”空间内的问题的目标本身不会受到“维度”的影响。更深入地了解RF的优势(可能有限的'max_depth',但**增加“森林宽度”(多样性)**)可以提供帮助。 – user3666197