ROC曲线计算过程例子
·
三个类别:
| Sample | True | Predict |
|---|---|---|
| 1 | [0 0 1] | [0.1 0.2 0.7] |
| 2 | [0 1 0] | [0.1 0.6 0.3] |
| 3 | [1 0 0] | [0.5 0.2 0.3] |
| 4 | [0 0 1] | [0.1 0.1 0.8] |
| 5 | [1 0 0] | [0.4 0.2 0.4] |
| 6 | [0 1 0] | [0.6 0.3 0.1] |
| 7 | [0 1 0] | [0.4 0.2 0.4] |
| 8 | [0 1 0] | [0.4 0.1 0.5] |
| 9 | [0 0 1] | [0.1 0.1 0.8] |
| 10 | [0 1 0] | [0.1 0.8 0.1] |
ROC曲线一般是针对二分类问题的,那对于多分类问题ROC曲线该怎么绘制?
也是One vs. Rest原则,将其中一类看做正例,其它看做负例。比如我们有三个类别,那我们就可以绘制3条ROC曲线。
以第一个类别为例,将类别一看做正例,其它看做负例,得到下面的表:
| Sample | True | Score |
|---|---|---|
| 1 | n | 0.1 |
| 2 | n | 0.1 |
| 3 | p | 0.5 |
| 4 | n | 0.1 |
| 5 | p | 0.4 |
| 6 | n | 0.6 |
| 7 | n | 0.4 |
| 8 | n | 0.4 |
| 9 | n | 0.1 |
| 10 | n | 0.1 |
按Score从小到大排序,得到:
| Sample | True | Score |
|---|---|---|
| 6 | n | 0.6 |
| 3 | p | 0.5 |
| 5 | p | 0.4 |
| 7 | n | 0.4 |
| 8 | n | 0.4 |
| 1 | n | 0.1 |
| 2 | n | 0.1 |
| 4 | n | 0.1 |
| 9 | n | 0.1 |
| 10 | n | 0.1 |
得到TPR和FPR:
| Sample | True | Score | TPR | FPR |
|---|---|---|---|---|
| 6 | n | 0.6 | 0/2 | 0/8 |
| 3 | p | 0.5 | 1/2 | 1/8 |
| 5 | p | 0.4 | 2/2 | 3/8 |
| 7 | n | 0.4 | ||
| 8 | n | 0.4 | ||
| 1 | n | 0.1 | 2/2 | 8/8 |
| 2 | n | 0.1 | ||
| 4 | n | 0.1 | ||
| 9 | n | 0.1 | ||
| 10 | n | 0.1 |
以FPR为横坐标,TPR为纵坐标,就可以绘制ROC曲线。
我们用Scikit-Learn进行FPR和TPR的计算,并用Matplotlib绘制ROC曲线如下:
import numpy as np
import matplotlib.pyplot as plt
from sklearn import metrics
y_true = np.array([[0, 0, 1],
[0, 1, 0],
[1, 0, 0],
[0, 0, 1],
[1, 0, 0],
[0, 1, 0],
[0, 1, 0],
[0, 1, 0],
[0, 0, 1],
[0, 1, 0]])
y_predict = np.array([[0.1, 0.2, 0.7],
[0.1, 0.6, 0.3],
[0.5, 0.2, 0.3],
[0.1, 0.1, 0.8],
[0.4, 0.2, 0.4],
[0.6, 0.3, 0.1],
[0.4, 0.2, 0.4],
[0.4, 0.1, 0.5],
[0.1, 0.1, 0.8],
[0.1, 0.8, 0.1]])
fpr, tpr, _ = metrics.roc_curve(y_true[:, 0], y_predict[:, 0])
print(fpr)
print(tpr)
plt.plot(fpr, tpr, marker='x', clip_on=False, )
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.0])
plt.show()
Out:
[0. 0.125 0.125 0.375 1. ]
[0. 0. 0.5 1. 1. ]
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)