【发布时间】:2015-05-22 18:56:58
【问题描述】:
我最近开始使用 Python 中的随机森林实现,使用 scikit learn sklearn.ensemble.RandomForestClassifier。我在Kaggle 上找到了一个示例脚本,用于使用随机森林(见下文)对土地覆盖物进行分类,我正试图用它来磨练我的技能。我有兴趣评估随机森林分类的结果。
例如,如果我要在 R 中使用 randomForest 执行分析,我将使用 randomForest 包中的 varImpPlot() 评估变量重要性:
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))
【问题讨论】:
-
我不确定您到底在寻找什么。您是要查找功能重要性还是 fpr/tpr?如果是后者,下面的答案将为您提供那些,但如果您正在寻找前者,您可以使用 clf.feature_importances_ 它将为您提供一个重要性向量,该向量与您放入模型中的特征相对应。跨度>
标签: python machine-learning scikit-learn random-forest