![生信交流与合作请关注公众号@生信探索](https://i-blog.csdnimg.cn/blog_migrate/c29a7abe8ef1e3be58fb1c1cbe997ce2.png)
ROC(全称为Receiver operating characteristic,意为受试者特征曲线)是一个二维平面空间中一条曲线,而AUC则是曲线下方面积(Area Under Curve)的计算结果,是一个具体的值
x轴是FPR,y轴是TPR,曲线上的每个点就对应着一组(FPR,TPR)坐标,所以我们的任务就是计算出所有的(FPR,TPR)坐标然后用线把他们连接起来就形成了ROC曲线,而AUC可以通过曲线下面积计算而来。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.metrics import RocCurveDisplay
首先手动创建一组预测值和对应的真实值,0一般为负类,1为正类,而且正类多设置为研究中较为关心的标签,比如把1设置为肿瘤,或者疾病。
np.random.seed(1314)
geneA = np.random.uniform(size=10)
label = [0]*5 + [1]*5
df = pd.DataFrame({
'geneA':geneA,'label':label})
df = df.sort_values('geneA',ascending=False)
df.reset_index(drop=True,inplace=True) # 恢复行索引从0开始递增
df
geneA label
0 0.928483 1
1 0.864400 0
2 0.828642 1
3 0.749421 0
4 0.464414 1
5 0.407268 1
6 0.210935 0
7 0.140796 0
8 0.082719 0
9 0.012973 1
从1开始降低阈值