ROC曲线
链接1:https://blog.csdn.net/sun91019718/article/details/101314545
讲解了fpr,tpr,threshold=roc_curve(y_true,y_score)
阈值是y_score内的元素去重后加入一个‘最大值+1’的值降序排序后组成的数据,每一个元素作为阈值,数据类型是一维数组。比如:y_score=np.array([0, 1, 2,0,3,1])对应的threshold=np.array([4, 3, 2,1,0])
y_true:真实结果数据,数据类型是数组
y_score:预测结果数据,可以是标签数据也可以是概率值,数据类型是形状 与y_true一致的数组
pos_label:默认为None,只有当标签数据如{0,1}、{-1,1}二分类数据才能默认;否则需要设置正样本值
我的scikit-learn (0.18.1)
import numpy as np
from sklearn import metrics
y = np.array([1, 1, 2, 2])
scores = np.array([0.1, 0.4, 0.35, 0.8])
fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)
print(fpr,’\n’,tpr,’\n’,thresholds)
[0. 0.5 0.5 1. ]
[0.5 0.5 1. 1. ]
[0.8 0.4 0.35 0.1 ]
没有最大值+1,可能是旧版本
import numpy as np
from sklearn import metrics
y = np.array([1, 1, 2, 2])
scores = np.array([0.1, 0.4, 0.35, 0.8])
fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)
pos_label=2 是指在y中标签为2的是标准阳性标签,其余值是阴性。
True binary labels. If labels are not either {-1, 1} or {0, 1}, then pos_label should be explicitly given.
AUC
链接2:https://blog.csdn.net/qq_22238533/article/details/78666436
曲线下面积对所有可能的分类阈值的效果进行综合衡量。曲线下面积的一种解读方式是看作模型将某个随机正类别样本排列在某个随机负类别样本之上的概率。以下面的样本为例,逻辑回归预测从左到右以升序排列。
https://blog.csdn.net/yuxiaosmd/article/details/83046162这一篇有点长,没讲AUC怎么计算。
注意:roc_auc_score(),传入预测的分类结果和预测的概率都是可以计算的。但正确的做法是传入预测概率,这样才符合AUC的计算原理。并且传入分类结果的话,auc指标会更低,因为曲线变粗糙了。
若利用roc_curve()产生fpr和tpr,再结合auc,计算结果与roc_auc_score相同。但这种方法无法计算预测分类结果的auc,会报错。
R2_score
链接3:r2_score评价回归模型 ,简洁明了
链接4: 讲述了原理
两个链接没有说明符号分别代表什么:
y
i
y_i
yi :实际值
y
ˉ
i
\bar{y}_i
yˉi:实际值的平均值
y
^
i
\hat{y}_i
y^i:预测值
R 2 R^2 R2越接近于1,表示回归的效果越好。
https://www.cnblogs.com/jiangkejie/p/10677858.html这篇提到为什么少用这个指标