更改默认的RandomForestClassifier' s"得分"适合模型时的功能?

时间:2016-03-12 00:00:49

标签: scikit-learn random-forest

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

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)])

所以,我的问题是:我可以对来自RandomForestClassifier的{​​{1}}做同样的事情。我需要根据AUC指标来衡量我的表现。

3 个答案:

答案 0 :(得分:1)

我认为您无法更改RandomForestClassifier的score方法使用的指标。​​

但是此代码应为您提供auc:

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

正如Guiem Bosch提到的那样,获得不同评分方法的最佳方法是GridSearchCV。的确,RandomForestClassifier作为评分方法具有准确性。

但是,对于您的问题的确切含义,我不太确定。始终可以通过从sklearn.metrics导入分类器来拟合分类器,然后在测试集上运行不同的评分函数,从而检查分类器的其他评分方法。

请谨慎在这里:

  • 使用GridSearchCVscoring=['roc_auc', 'recall']等,对于指定的每个评分指标,您将获得网格参数的最佳分类器。例如,对于“ roc_auc”得分或“召回”得分,您将获得最佳分类器(超参数集),该分类器基于您在fitted参数上指定的分类器。但是,如果只有一组超参数,并且使用GridSearchCV来获得不同的评分方法,则可以使用sklearn.metrics中的各个模块来做得更好。

  • 如果您的意思是希望基于其他方法优化分类器,则应检查criterion参数。