y_score = np.array(y_score).T # 计算并绘制 AUC 曲线 fpr = dict() tpr = dict() roc_auc = dict() for i in range(y_test.shape[1]): fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[0, :, i])怎么修正
时间: 2024-01-21 17:17:57 浏览: 99
directory.csv Employee_monthly_salary.csv titanic_train.csv
根据你提供的代码,我看到 y_score 是一个三维数组,它的第一维是样本数,第二维是类别数,第三维是阈值。而在计算 ROC 曲线时,只需要使用 y_score 的第二维和第三维,即每个类别在不同阈值下的得分。因此,你需要修改代码如下:
```python
y_score = np.array(y_score) # 去掉转置操作
fpr = dict()
tpr = dict()
roc_auc = dict()
for i in range(y_test.shape[1]):
fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i, :].ravel()) # 传入每个类别的得分
roc_auc[i] = auc(fpr[i], tpr[i]) # 计算 AUC
```
这里,我们将 y_score 的第二维作为循环变量 i,即每次计算一个类别的 ROC 曲线和 AUC 值。在计算 ROC 曲线时,我们需要将 y_score 的第一维和第三维展开成一维数组,即使用 ravel() 方法。最后,我们将每个类别的 AUC 值存储在字典 roc_auc 中。
阅读全文