2017-01-24 6 views

答えて

0

多クラスAUC ROCは、独立して、すべてのクラスの曲線を計算するか、クラス間の値を集約のいずれかによって達成することができる

おかげ。

あなたはより多くの情報hereを見つけることができますが、私はまた、種々の曲線をプロットするためのコードを添付して下に(コードが添付リンクから来た):

# Compute macro-average ROC curve and ROC area 

# First aggregate all false positive rates 
all_fpr = np.unique(np.concatenate([fpr[i] for i in range(n_classes)])) 

# Then interpolate all ROC curves at this points 
mean_tpr = np.zeros_like(all_fpr) 
for i in range(n_classes): 
    mean_tpr += interp(all_fpr, fpr[i], tpr[i]) 

# Finally average it and compute AUC 
mean_tpr /= n_classes 

fpr["macro"] = all_fpr 
tpr["macro"] = mean_tpr 
roc_auc["macro"] = auc(fpr["macro"], tpr["macro"]) 

# Plot all ROC curves 
plt.figure() 
plt.plot(fpr["micro"], tpr["micro"], 
    label='micro-average ROC curve (area = {0:0.2f})' 
      ''.format(roc_auc["micro"]), 
    color='deeppink', linestyle=':', linewidth=4) 

plt.plot(fpr["macro"], tpr["macro"], 
    label='macro-average ROC curve (area = {0:0.2f})' 
      ''.format(roc_auc["macro"]), 
    color='navy', linestyle=':', linewidth=4) 

colors = cycle(['aqua', 'darkorange', 'cornflowerblue']) 
for i, color in zip(range(n_classes), colors): 
    plt.plot(fpr[i], tpr[i], color=color, lw=lw, 
     label='ROC curve of class {0} (area = {1:0.2f})' 
     ''.format(i, roc_auc[i])) 

plt.plot([0, 1], [0, 1], 'k--', lw=lw) 
plt.xlim([0.0, 1.0]) 
plt.ylim([0.0, 1.05]) 
plt.xlabel('False Positive Rate') 
plt.ylabel('True Positive Rate') 
plt.title('Some extension of Receiver operating characteristic to multi-class') 
plt.legend(loc="lower right") 
plt.show() 
関連する問題