0

私は 2 つの不均衡なクラス、50,000 のサンプルを持っており、陽性はセットで %5 発生します。データは 2 次元です。

問題は、ExtraTreesClassifierを使用していることです。oob_score_は問題ないように見えますが、cross_validation.cross_val_scoreでf1 スコアを調べると、低い値が得られます。分類子が問題ないかゴミか、完全に混乱しています。

from sklearn.ensemble import ExtraTreesClassifier
trees = ExtraTreesClassifier(bootstrap=true, oob_score=True,n_estimators=100,class_weight="auto")

for i in range(1, 101):
    trees.set_params(n_estimators=i)    
    trees.fit(x,y)
    print trees.oob_score_

0.919955 0.919353 0.919353 ... 増加しています。

私がするとき

from sklearn import cross_validation as cval
cv = cval.StratifiedKFold(y, 2)
cval.cross_val_score(trees, x, y, scoring="f1", cv=cv)

結果は array([ 0.01604747, 0.01250169]) で、かなり悪いです。

誰かが私を啓発できますか?前もって感謝します。

4

1 に答える 1

0

out of bag スコアリング メトリックは精度です。データの不均衡を考えると、結果は正常です。

スコアリング メトリクスの選択を許可する停止中のプル リクエストがあります https://github.com/scikit-learn/scikit-learn/pull/3723

今のところ、oob_decision_score_属性を使用して oob f1-score を計算できます。

于 2015-07-22T13:21:09.107 に答える