2014-04-01 52 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更詳細的解釋。