在构建手动装袋分类器后绘制ROC曲线

时间:2014-04-01 16:48:14

标签: python scikit-learn

我使用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。因此,基本上我会在每次折叠后使用以下列表跟踪fprtprroc_auc

folds_auc.append(roc_auc)
folds_fpr.append(fpr)
folds_tpr.append(tpr)

问题是每次折叠后fprtpr都是不同长度的数组,所以我不能将它们相加并除以3以绘制ROC曲线。我想绘制ROC曲线,但我无法弄清楚如何这样做。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

基本上,您需要在计算roc_auc之前合并交叉验证折叠的结果,然后计算所有的性能。如果您正在进行交叉验证,那么您必须做什么,但您可以在此处执行类似的架构。

Here详细解释了这一点。

答案 1 :(得分:0)