AUC多分类python实战代码
时间: 2023-08-08 13:09:58 浏览: 265
以下是一个多分类AUC的Python实现代码:
```python
import numpy as np
from sklearn.metrics import roc_curve, auc
def multiclass_roc_auc_score(y_true, y_score):
# Compute ROC curve and ROC area for each class
fpr = dict()
tpr = dict()
roc_auc = dict()
n_classes = y_score.shape[1]
for i in range(n_classes):
fpr[i], tpr[i], _ = roc_curve(y_true == i, y_score[:, i])
roc_auc[i] = auc(fpr[i], tpr[i])
# Compute micro-average ROC curve and ROC area
fpr["micro"], tpr["micro"], _ = roc_curve(y_true.ravel(), y_score.ravel())
roc_auc["micro"] = auc(fpr["micro"], tpr["micro"])
# Compute macro-average ROC curve and ROC area
all_fpr = np.unique(np.concatenate([fpr[i] for i in range(n_classes)]))
mean_tpr = np.zeros_like(all_fpr)
for i in range(n_classes):
mean_tpr += np.interp(all_fpr, fpr[i], tpr[i])
mean_tpr /= n_classes
fpr["macro"] = all_fpr
tpr["macro"] = mean_tpr
roc_auc["macro"] = auc(fpr["macro"], tpr["macro"])
return roc_auc
```
这个函数使用了numpy和sklearn中的roc_curve和auc函数,可以计算多分类情况下的ROC AUC。其中,y_true是真实标签,y_score是预测概率矩阵,每一行代表一个样本,每一列代表一个类别。函数会返回一个字典,包含每个类别和微平均、宏平均的ROC AUC。
阅读全文