我使用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指标来衡量我的表现。
答案 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
导入分类器来拟合分类器,然后在测试集上运行不同的评分函数,从而检查分类器的其他评分方法。
请谨慎在这里:
使用GridSearchCV
和scoring=['roc_auc', 'recall']
等,对于指定的每个评分指标,您将获得网格参数的最佳分类器。例如,对于“ roc_auc”得分或“召回”得分,您将获得最佳分类器(超参数集),该分类器基于您在fitted
参数上指定的分类器。但是,如果只有一组超参数,并且使用GridSearchCV
来获得不同的评分方法,则可以使用sklearn.metrics
中的各个模块来做得更好。
如果您的意思是希望基于其他方法优化分类器,则应检查criterion
参数。