gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:37:52 25 4
gpt4 key购买 nike

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

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

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

为了了解错误率的开箱即用估计和分类的错误矩阵,我只需在解释器中输入“myrf”即可。

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

请注意,我知道文档中有几个可能有用的属性(例如 feature_importances_oob_score_oob_decision_function_ ),尽管我不确定如何实际应用这些属性。

<小时/>

RF 脚本示例

import pandas as pd
from sklearn import ensemble

if __name__ == "__main__":
loc_train = "kaggle_forest\\train.csv"
loc_test = "kaggle_forest\\test.csv"
loc_submission = "kaggle_forest\\kaggle.forest.submission.csv"

df_train = pd.read_csv(loc_train)
df_test = pd.read_csv(loc_test)

feature_cols = [col for col in df_train.columns if col not in ['Cover_Type','Id']]

X_train = df_train[feature_cols]
X_test = df_test[feature_cols]
y = df_train['Cover_Type']
test_ids = df_test['Id']

clf = ensemble.RandomForestClassifier(n_estimators = 500, n_jobs = -1)

clf.fit(X_train, y)

with open(loc_submission, "wb") as outfile:
outfile.write("Id,Cover_Type\n")
for e, val in enumerate(list(clf.predict(X_test))):
outfile.write("%s,%s\n"%(test_ids[e],val))

最佳答案

训练后,如果您有测试数据和标签,您可以通过以下方式检查准确性并生成 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()

关于python - 如何评估随机森林分类器的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29148355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com