如何评估随机森林分类器的性能?

2024-06-16 14:27:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近开始使用scikit learnsklearn.ensemble.RandomForestClassifier在Python中使用随机林实现。我在Kaggle上找到了一个示例脚本,用随机森林(见下文)对土地覆盖进行分类,我正试图用它来磨练我的技能。我对评估随机森林分类的结果很感兴趣。在

例如,如果我要使用R中的randomForest执行分析,我将使用randomForest包中的varImpPlot()来评估变量的重要性:

require(randomForests)
...
myrf = randomForests(predictors, response)
varImpPlot(myrf)

为了了解错误率的现成估计和分类的误差矩阵,我只需在解释器中输入“myrf”。在

如何使用Python以编程方式评估这些错误度量?

注意,我知道文档中有几个潜在的有用属性(例如feature_importances_oob_score_,和{}),尽管我不确定如何实际应用这些属性。在


RF脚本示例

^{pr2}$

Tags: 脚本示例属性森林分类scikitensemble见下文
2条回答

您可以使用的一些基本指标是精确度、f1分数和接收器工作特性曲线下的面积,这些都可以在sklearn库中找到。在

您可以在sklearn库here中找到可用的度量。在

培训后,如果您有测试数据和标签,您可以通过以下方式检查准确性并生成ROC图/AUC分数:

from sklearn.metrics import classification_report
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt

# overall accuracy
acc = clf.score(X_test,Y_test)

# get roc/auc info
Y_score = clf.predict_proba(X_test)[:,1]
fpr = dict()
tpr = dict()
fpr, tpr, _ = roc_curve(Y_test, Y_score)

roc_auc = dict()
roc_auc = auc(fpr, tpr)

# make the plot
plt.figure(figsize=(10,10))
plt.plot([0, 1], [0, 1], 'k ')
plt.xlim([-0.05, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.grid(True)
plt.plot(fpr, tpr, label='AUC = {0}'.format(roc_auc))        
plt.legend(loc="lower right", shadow=True, fancybox =True) 
plt.show()

相关问题 更多 >