2

我一直运行的是在这个website所示的“平均降低精度”措施的实施:哪个准确度得分以用于平均降低精度与scikit RandomForestClassifier

在这个例子中,作者是使用随机森林回归RandomForestRegressor,但我现在用的是随机森林分类RandomForestClassifier。因此,我的问题是,如果我也应该使用r2_score的测量精度,或者我应该切换到经典的准确性accuracy_score或马修斯相关系数matthews_corrcoef

这里是否有人,如果我要切换与否。为什么?

感谢您的帮助!


下面是从网站的情况下,你都懒得码点击:)

from sklearn.cross_validation import ShuffleSplit 
from sklearn.metrics import r2_score 
from collections import defaultdict 

X = boston["data"] 
Y = boston["target"] 

rf = RandomForestRegressor() 
scores = defaultdict(list) 

#crossvalidate the scores on a number of different random splits of the data 
for train_idx, test_idx in ShuffleSplit(len(X), 100, .3): 
    X_train, X_test = X[train_idx], X[test_idx] 
    Y_train, Y_test = Y[train_idx], Y[test_idx] 
    r = rf.fit(X_train, Y_train) 
    acc = r2_score(Y_test, rf.predict(X_test)) 
    for i in range(X.shape[1]): 
     X_t = X_test.copy() 
     np.random.shuffle(X_t[:, i]) 
     shuff_acc = r2_score(Y_test, rf.predict(X_t)) 
     scores[names[i]].append((acc-shuff_acc)/acc) 
print "Features sorted by their score:" 
print sorted([(round(np.mean(score), 4), feat) for 
       feat, score in scores.items()], reverse=True) 

回答

2

r2_score是回归(连续响应变量),而经典的分类(离散分类变量)指标诸如此类accuracy_scoref1_scoreroc_auc(最后两个是最合适的,如果你有不平衡的y标签)是你的任务正确的选择。

随机

洗牌在输入数据矩阵中的每个特征和测量在这些分类指标的下降听起来像一个有效的方法来排名功能重要度。

+0

嗨@Jianxun李,感谢您的解释。所以你不会推荐MCC?如果您谈论不平衡的y标签,则意味着正确分类的案例分布不均匀。另外我不确定,为什么计算这个(标准化)的方式:'(acc-shuff_acc)/ acc'而不是'acc-shuff_acc'。你知道优点是什么吗? – dmeu

+0

@dmeu对不起,我忘了在帖子中包含'MCC'。我认为它和从混淆矩阵中得出的其他分类指标一样好。 –

+0

谢谢@李建勋!您对第一条评论中的后续问题有任何想法吗? – dmeu

相关问题