0

我有 2 个不平衡的类,50 000 个样本,阳性发生在 %5 中。数据是二维的。

问题是,我正在使用ExtraTreesClassifieroob_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

袋外评分指标是准确性。鉴于您的数据不平衡,结果是正常的。

有一个停滞的拉取请求允许选择评分指标 https://github.com/scikit-learn/scikit-learn/pull/3723

目前,您仍然可以使用oob_decision_score_属性计算 oob f1-score。

于 2015-07-22T13:21:09.107 回答