GridSearchCV与手动配置参数的RandomForestClassifier之间roc_auc_score结果不一致的问题
GridSearchCV与手动配置参数的RandomForestClassifier之间roc_auc_score结果不一致的问题
嘿,我一眼就发现你代码里的关键问题啦!
你手动计算AUC的时候,把参数传错了!看这一行:
auc = roc_auc_score(y_hat, y_hat_prob)
roc_auc_score的第一个参数应该是真实标签,第二个才是模型输出的预测概率值。你现在把模型预测出的类别标签y_hat当成真实标签传进去了,这相当于让模型和自己的预测结果比——模型对自己预测的类别肯定会给出最高的概率值,两者完全对应,ROC曲线直接就是完美的对角线(左上角到右下角),AUC自然会是1.0,这根本不是模型在验证集上的真实表现!
只需要把这行代码改成用真实的验证集标签y_validate就好:
auc = roc_auc_score(y_validate, y_hat_prob)
改完之后,手动训练的模型AUC就会和GridSearchCV得到的结果(0.84左右)在同一个区间了。
另外还有个小细节可以注意一下:RandomForestClassifier默认的random_state是None,这意味着每次训练时的随机数种子不一样,生成的决策树也会有细微差别,可能导致AUC有一点点波动。如果想要完全复现GridSearch里的最优模型结果,可以给手动训练的分类器加上固定的随机状态(比如random_state=0),和GridSearch中的模型保持一致。
备注:内容来源于stack exchange,提问作者akaphenom
相关产品推荐
相关产品推荐

