拟合模型时更改默认 RandomForestClassifier 的“分数”功能?
Posted
技术标签:
【中文标题】拟合模型时更改默认 RandomForestClassifier 的“分数”功能?【英文标题】:Change default RandomForestClassifier's "score" function when fitting the model? 【发布时间】:2016-06-27 09:28:09 【问题描述】:我使用来自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 指标。
【问题讨论】:
【参考方案1】:嗯,到目前为止,我所做的是将分类器包装到 GridSearchCV
中,我可以在其中指定评分方法。
所以:GS = grid_search.GridSearchCV(forest_clf, parameters, scoring='roc_auc',verbose=10)
为我工作。
但如果可以从分类器本身执行,我愿意接受任何建议,或者如果这不是正确的方法,我愿意提供任何理论解释。
【讨论】:
【参考方案2】:我认为您不能更改 RandomForestClassifier 的 score 方法使用的指标。
但是这段代码应该给你 auc:
from sklearn.metrics import roc_auc_score
roc_auc_score(y_eval, clf.predict_proba(X_eval))
【讨论】:
介意您为您的回答提供一些上下文吗? 对不起。我认为简短的回答通常会受到赞赏,但这可能有点太简短了。【参考方案3】:正如 Guiem Bosch 所提到的,获得不同评分方法的最佳方法是使用 GridSearchCV。确实RandomForestClassifier
作为评分方法有准确度。
但是,我不太确定您的问题到底是什么意思。您可以随时通过从sklearn.metrics
导入分类器后在测试集上运行不同的评分函数来检查分类器的其他评分方法。
这里要小心:
使用GridSearchCV
和scoring=['roc_auc', 'recall']
等,对于您指定的每个评分指标,您将获得网格参数的最佳分类器。例如,您将根据您在fitted
参数上指定的分数获得“roc_auc”分数或“召回”分数的最佳分类器(一组超参数)。但是,如果您只有一组超参数,并且您使用GridSearchCV
只是为了获得不同的评分方法,那么您可以使用sklearn.metrics
中的各个模块做得更好。
如果您的意思是希望您的分类器基于不同的方法进行优化,那么您应该检查criterion
参数。
【讨论】:
以上是关于拟合模型时更改默认 RandomForestClassifier 的“分数”功能?的主要内容,如果未能解决你的问题,请参考以下文章