Python scikit RandomForestClassifier用于平均降低准确度的准确度分数是多少
我一直在执行“平均降低精度””度量,如图所示: 在本例中,作者使用的是随机森林回归器Python scikit RandomForestClassifier用于平均降低准确度的准确度分数是多少,python,machine-learning,statistics,scikit-learn,classification,Python,Machine Learning,Statistics,Scikit Learn,Classification,我一直在执行“平均降低精度””度量,如图所示: 在本例中,作者使用的是随机森林回归器随机森林回归器,但我使用的是随机森林分类器随机森林分类器。因此,我的问题是,我是否也应该使用r2_分数来衡量准确度,或者我是否应该切换到经典准确度accurity_分数或马修斯相关系数matthews_corrcoef 这里有人知道我该不该换。为什么 谢谢你的帮助 这是网站上的代码,以防你懒得点击:) r2_分数用于回归(连续响应变量),而经典分类(离散分类变量)指标,如accurity_分数和f1_分数roc
随机森林回归器
,但我使用的是随机森林分类器随机森林分类器
。因此,我的问题是,我是否也应该使用r2_分数
来衡量准确度,或者我是否应该切换到经典准确度accurity_分数
或马修斯相关系数matthews_corrcoef
这里有人知道我该不该换。为什么
谢谢你的帮助
这是网站上的代码,以防你懒得点击:)
r2_分数
用于回归(连续响应变量),而经典分类(离散分类变量)指标,如accurity_分数
和f1_分数
roc_auc
(如果y标签不平衡,最后两个指标最合适)是任务的正确选择
随机洗牌输入数据矩阵中的每个特征,并测量这些分类指标的下降,这听起来像是对特征重要性进行排名的有效方法。Hi@Jianxun Li,感谢您的解释。所以你不推荐MCC?如果你谈论不平衡的y型标签,你的意思是正确分类的案例分布不均匀。我也不确定,为什么它是这样(标准化)计算的:
(acc-shuff\u acc)/acc
,而不仅仅是acc-shuff\u acc
。你知道它的优点是什么吗?@dmeu很抱歉,我忘了在帖子中加入MCC
。我认为它和从混乱矩阵中得到的其他分类指标一样好。谢谢@Jianxun Li!您对第一条评论中的后续问题有什么想法吗?@dmeu对于这个特定的模型,使用非规范化的精度下降似乎是可以的。如果你想在不同的数据集中比较不同模型中的特征重要性,那么标准化可能是至关重要的。啊,好吧,这很有意义-是的,一旦我想开始比较,我就必须使用标准化平均值。
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)