拟合模型时更改默认 RandomForestClassifier 的 "score" 函数?

Change default RandomForestClassifier's "score" function when fitting the model?

我使用 sklearn 中的 RandomForestClassifier 执行拟合操作:

clf.fit(X_train,y_train,sample_weight=weight)

我不知道如何更改评估指标,我认为这只是准确性。

我问这个是因为我看到使用 XGBOOST 包可以精确指定此指标。示例:

clf.fit(X_train, y_train, eval_metric="auc", eval_set=[(X_eval, y_eval)])

所以,我的问题是:我可以对 sklearn 中的 RandomForestClassifier 做同样的事情吗?我需要根据 AUC 指标来衡量我的表现。

好吧,到目前为止我所做的是将分类器包装到一个 GridSearchCV 中,我可以在其中指定评分方法。

所以:GS = grid_search.GridSearchCV(forest_clf, parameters, scoring='roc_auc',verbose=10) 适合我。

但如果可以从分类器本身执行,我愿意接受任何建议,或者如果这不是正确的方法,我愿意接受任何理论解释。

正如 Guiem Bosch 提到的,获得不同评分方法的最佳方式是通过 GridSearchCV。事实上 RandomForestClassifier 作为评分方法具有准确性。

但是,我不太确定你的问题到底是什么意思。您可以随时通过 运行 在测试集上导入不同的评分函数来检查分类器的其他评分方法,方法是从 sklearn.metrics.

中导入分类器。

这里要小心:

  • 使用 GridSearchCVscoring=['roc_auc', 'recall'] 等,对于您指定的每个评分指标,您将获得网格参数的最佳分类器。例如,根据您在 fitted 参数上指定的分类器,您将获得 'roc_auc' 分数或 'recall' 分数的最佳分类器(超参数集)。但是,如果您只有一组超参数并且您正在使用 GridSearchCV 来获得不同的评分方法,那么您可以使用来自 sklearn.metrics.

    的各个模块来更好地做到这一点
  • 如果您的意思是希望根据不同的方法优化分类器,那么您应该检查 criterion 参数。

我认为您不能更改 RandomForestClassifier 的评分方法使用的指标。​​

但是这段代码应该给你 auc:

from sklearn.metrics import roc_auc_score
roc_auc_score(y_eval, clf.predict_proba(X_eval))