2014-04-01 49 views
0

我正在使用scikit-learn手动构建装袋分类器。我需要这样做,因为我有三个数据子集,而且我需要在每个数据集上训练一个分类器。所以我基本上做的是创建三个分类器并在子集上训练每个分类器。然后给出一个测试集,我下面找到ROC AUC:构建手动装袋分类器后绘制ROC曲线

 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。所以基本上我保持fprtpr每个之后roc_auc轨道倍使用这样的名单:

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

的问题是,每个折叠后fprtpr的长度不同的阵列,所以我不能只是它们求和并除以3以绘制ROC曲线。我想绘制ROC曲线,但我无法弄清楚如何去做。我该如何解决这个问题?

回答

0

基本上,您需要在计算roc_auc之前合并交叉验证折叠的结果,然后计算所有表现。如果你正在做一个交叉验证,你必须这样做,但是你可以在这里做一个类似的模式。

Here更详细的解释。