如何解决为什么我得到不同的 roc_auc_scores?
我正在研究一个二元分类问题,并使用以下代码通过 5 折交叉验证找到 ROC_AUC 分数(在每个折叠处)。
cv = KFold(n_splits=5,shuffle=True,random_state=41)
classifier=RandomForestClassifier()
tprs = []
aucs = []
mean_fpr = np.linspace(0,1,100)
for i,(train,test) in enumerate (cv.split(X,y)):
clf=classifier.fit(X[train],y[train])
prediction=clf.predict_proba(X[test])[:,1]
fpr,tpr,t=roc_curve(y[test],prediction)
tprs.append(np.interp(mean_fpr,fpr,tpr))
roc_auc=auc(fpr,tpr)
aucs.append(roc_auc)
plt.plot(fpr,lw=2,alpha=1,label='Fold %d (AUC=%0.4f)'%(i+1,roc_auc))
plt.plot([0,1],[0,linestyle='--',color='k',label='Chance',alpha=1)
mean_tpr = np.mean(tprs,axis=0)
mean_auc = auc(mean_fpr,mean_tpr)
std_auc = np.std(aucs)
plt.plot(mean_fpr,mean_tpr,color='b',label=r'Mean ROC (AUC = %0.4f $\pm$ %0.4f)' % (mean_auc,std_auc),alpha=1)
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC')
plt.legend(loc="lower right")
plt.show()
除了 ROC_AUC 分数之外,我还想计算其他性能指标,例如准确率、准确率、每折的召回率。为此,我使用了以下代码,但与我在上面获得的分数相比,我在此处获得的 ROC_AUC 分数不同。
from sklearn.metrics import make_scorer,accuracy_score,precision_score,recall_score,roc_auc_score
scoring={'accuracy': make_scorer(accuracy_score),'recall': make_scorer(recall_score),'precision': make_scorer(precision_score),'roc_auc_score':make_scorer(roc_auc_score)}
results=model_selection.cross_validate(estimator=classifier,X=X,y=y,cv=cv,scoring=scoring)
谁能指出我哪里出错了?还有如何计算每个折叠的其他指标?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。