我使用scikit-learn手动构建套袋分类器。我需要这样做,因为我有三个数据子集,我需要在每个子集上训练一个分类器。所以我基本上做的是创建三个RandomForestClassifier
分类器并在子集上训练每个分类器。然后给出一个测试集,我执行以下操作来查找ROC AUC:
probas2 = estimators[2].predict_proba(X_test)
probas3 = estimators[3].predict_proba(X_test)
probas4 = estimators[4].predict_proba(X_test)
probas = probas2[:,1] + probas3[:,1] + probas4[:,1]
probas = probas / 3.0
fpr, tpr, thresholds = roc_curve(y_test, probas)
roc_auc = auc(fpr, tpr)
然而,我需要的是进行3倍交叉验证,然后绘制ROC曲线并输出AUC。因此,基本上我会在每次折叠后使用以下列表跟踪fpr
,tpr
和roc_auc
:
folds_auc.append(roc_auc)
folds_fpr.append(fpr)
folds_tpr.append(tpr)
问题是每次折叠后fpr
和tpr
都是不同长度的数组,所以我不能将它们相加并除以3以绘制ROC曲线。我想绘制ROC曲线,但我无法弄清楚如何这样做。我该如何解决这个问题?
答案 0 :(得分:0)
基本上,您需要在计算roc_auc
之前合并交叉验证折叠的结果,然后计算所有的性能。如果您正在进行交叉验证,那么您必须做什么,但您可以在此处执行类似的架构。
Here详细解释了这一点。
答案 1 :(得分:0)