Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python scikit RandomForestClassifier用于平均降低准确度的准确度分数是多少_Python_Machine Learning_Statistics_Scikit Learn_Classification - Fatal编程技术网

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)