2017-01-24 7 views

ответ

0

мультиклассируют АУК СОХ может быть достигнуто либо путем расчета кривой для каждого класса независимо друг от друга или суммирования значений между классами.

Вы можете найти более подробную информацию 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() 
Смежные вопросы