我正在使用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