gpt4 book ai didi

scikit-learn - sklearn RandomForestClassifier 与 auc 方法中 ROC-AUC 分数的差异

转载 作者:行者123 更新时间:2023-12-05 06:42:49 24 4
gpt4 key购买 nike

我分别从 sklearn 的 RandomForestClassifier 和 roc_curve、auc 方法收到不同的 ROC-AUC 分数。

以下代码让我获得了 0.878 的 ROC-AUC(即 gs.best_score_):

def train_model(mod = None, params = None, features = None, 
outcome = ...outcomes array..., metric = 'roc_auc'):
gs = GridSearchCV(mod, params, scoring=metric, loss_func=None, score_func=None,
fit_params=None, n_jobs=-1, iid=True, refit=True, cv=10, verbose=0,
pre_dispatch='2*n_jobs', error_score='raise')
gs.fit(...feature set df..., outcome)

print gs.best_score_
print gs.best_params_

return gs

model = RandomForestClassifier(random_state=2000, n_jobs=-1)
features_to_include = [...list of column names...]

parameters = {
'n_estimators': [...list...], 'max_depth':[...list...],
'min_samples_split':[...list...], 'min_samples_leaf':[...list...]
}

gs = train_model(mod = model, params = parameters, features = features_to_include)

然而,以下代码让我获得了 0.97 的 ROC-AUC:

fpr = dict()
tpr = dict()
roc_auc = dict()
fpr['micro'], tpr['micro'], _ = roc_curve(...outcomes array...,
gs.predict_proba(...feature set df...)[:, 1])
roc_auc['micro'] = auc(fpr['micro'], tpr['micro'])

为什么会有这样的差异?我的代码有问题吗?

谢谢!克里斯

最佳答案

它们会返回不同的值,原因有二:

  1. 由于 GridSearchCV 方法将您的数据分成 10 组(您在代码中进行 10 折交叉验证),因此使用 9 进行训练,并报告最后一个的 AUC团体。您得到的 best_score_ 只是报告的最高 AUC(更多信息请阅读 here)。您的 roc_curve 计算报告了整个集合的 AUC。

  2. 默认的交叉验证 roc_auc 是宏版本(参见 here ),但您稍后的计算计算的是微观版本。

关于scikit-learn - sklearn RandomForestClassifier 与 auc 方法中 ROC-AUC 分数的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35818237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com