淘宝客网站根目录,seo搜索如何优化,益阳网络,怎么在百度上做自己的网站问题#xff1a;上一篇的案例#xff0c;真的患癌症的#xff0c;能被检查出来的概率#xff1f;
一、精确率和召回率
1、混淆矩阵 在分类任务下#xff0c;预测结果(Predicted Condition)与正确标记(True Condition)之间存在四种不同的组合#xff0c;构成混淆矩阵(适…问题上一篇的案例真的患癌症的能被检查出来的概率
一、精确率和召回率
1、混淆矩阵 在分类任务下预测结果(Predicted Condition)与正确标记(True Condition)之间存在四种不同的组合构成混淆矩阵(适用于多分类)
预测结果是预测值 正确标记是真实值 用来求精确率和召回率的
TP True Possitive FN False Negative FP False Possitive TN True Negative
2、精确率(Precision)与召回率(Recall) 精确率预测结果为正例样本中真实为正例的比例
即是TP / (TP FP)
召回率真实为正例的样本中预测结果为正例的比例
即是TP / (TP FN)
3、真的患癌症的能被检查出来的概率 - 召回率
二、F1-score
1、反映了模型的稳健性
等价于2*精确率*召回率 / (精确率 召回率) Precision是预测的好瓜中有多少真正的好瓜Recall是所有真正的好瓜被预测对了多少
三、分类评估报告API
1、sklearn.metrics.classification_report(y_true, y_pred, labels[], target_namesNone) y_true真实目标值 y_pred估计器预测目标值 labels指定类别对应的数字 我们在传y_true、y_pred传的是数字将数字表示出来 target_names目标类别名称 分类报告显示 return每个类别精确率与召回率
2、在上一篇代码后添加
# 查看精确率、召回率、F1-score
from sklearn.metrics import classification_reportreport classification_report(y_test, y_predict, labels[2, 4], target_names[良性, 恶性])print(report)
运行结果
support是样本数量
四、样本不均衡的情况
1、假设这样一个情况总共有100个人如果99个样本癌症1个样本非癌症不管怎样我全都预测正例(默认癌症为正例),准确率就为99%但是这样效果并不好这就是样本不均衡下的评估问题 准确率99% 召回率99 / 99 100% 精确率99 / 100 99% F1-score2*99%*100% / 199% 99.497%
就是瞎猜全都蒙成换了癌症不负责任的模型 这种情况我们是要避免的我们目前学习到的这些分类指标都不能反映出它的问题所在 样本不均衡正样本太多反例太少
五、ROC曲线与AUC指标 1、ROC曲线 蓝色的线是ROC曲线
2、AUC指标 ROC曲线和x轴、y轴包成的区域的面积
衡量好坏我们看的是AUC指标AUC越接近1越好越接近0.5越不好
3、ROC曲线是怎么来的 TPR TP / (TP FN) - 就是召回率 所有真实类别为1的样本中预测类别为1的比例 FPR FP / (FP FN) 所有真实类别为0的样本中预测类别为1的比例
TPR是正例的召回率FPR是反例的召回率 ROC曲线就是由TPR和FPR这两个指标构成的
当TPRFPR 正例的召回率、反例的召回率都为1说明是在瞎猜就是红色的斜线面积是 1*1/2 0.5
当TPRFPR TPR接近于1FPR接近于0就是接近于Perfect Classification面积是 1*11
当TPRFPR 就是一条反曲线做反向预测用
4、AUC的意义 1AUC的概率意义是随机取一对正负样本正样本得分大于负样本的概率 2AUC的最小值为0.5最大值为1取值越高越好 3AUC1完美分类器采用这个预测模型时不管设定什么阈值都能得出完美预测。绝大多数预测的场合不存在完美分类器 40.5AUC1优于随机猜测。这个分类器模型妥善设定阈值的话能有预测价值 5最终AUC的范围在[0.5, 1]之间并且越接近1越好
六、AUC的计算API
1、sklearn.metrics.roc_auc_score(y_true, y_score) 计算ROC曲线面积即AUC值 y_true每个样本的真实类别必须传0(反例)1(正例) y_score可以是预测得分可以是正例的估计概率、置信值或者分类器方法的返回值
2、代码
y_test.head()# y_true每个样本的真实类别必须传0(反例)1(正例)
# 将y_test转换成01
y_true np.where(y_test 3, 1, 0)y_truefrom sklearn.metrics import roc_auc_scoreroc_auc_score(y_true, y_predict)
运行结果
七、小结
AUC只能用来评价二分类 AUC非常适合评价样本不平衡中的分类器性能