sklearn.metrics 用法详解

这篇具有很好参考价值的文章主要介绍了sklearn.metrics 用法详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 用法概览

1.1 分类
函数 功能
metrics.accuracy_score 准确率
metrics.balanced_accuracy_score 在类别不均衡的数据集中,计算加权准确率
metrics.top_k_accuracy_score 获得可能性最高的k个类别
metrics.average_precision_score 根据预测分数计算平均精度 (AP)
metrics.brier_score_loss Brier 分数损失
metrics.f1_score F1 score
metrics.log_loss 交叉熵损失
metrics.precision_score 精确率
metrics.recall_score 召回率
metrics.jaccard_score Jaccard 相似系数得分
metrics.roc_auc_score 根据预测分数计算 Area Under the Receiver Operating Characteristic Curve(ROC AUC) 下的面积
metrics.cohen_kappa_score 衡量注释间一致性的统计量
1.2 聚类
函数 功能
metrics.adjusted_mutual_info_score 两个聚类之间的调整互信息(AMI)
metrics.adjusted_rand_score 调整兰德指数
metrics.completeness_score 给定GT的集群标记的完整性度量
metrics.fowlkes_mallows_score 测量一组点的两个聚类的相似性
metrics.homogeneity_score 同质性指标
metrics.mutual_info_score 互信息
metrics.normalized_mutual_info_score 标准化互信息
metrics.rand_score 兰德指数
metrics.v_measure_score V测度得分
1.3 回归
函数 功能
metrics.explained_variance_score 解释方差回归评分函数
metrics.mean_absolute_error 平均绝对误差
metrics.mean_squared_error 均方误差
metrics.mean_squared_log_error 平均平方对数误差
metrics.median_absolute_error 中位数绝对误差
metrics.r2_score R 2 R^2 R2(确定系数)

2. 数学原理

主要记录一下关于分类部分的数学原理。准确率 - accuracy,精确率 - precision,召回率 - recall,
F1值 - F1-score,ROC曲线下面积 - ROC-AUC (area under curve),PR曲线下面积 - PR-AUC。

对于一个二分类问题,假设真实标签y_labels=[1,1,0,1,1,0,0,0],我们预测的结果y_scores=[0.8,0.9,0.6,0.3,0.7,0.1,0.1,0.6]。假设threshold=0.5。那么可以得到y_preds=[1,1,1,0,1,0,0,1]。这时我们可以得到混淆矩阵(confusion matrix)为:

sklearn.metrics 用法详解

图1:混淆矩阵

混淆矩阵中所对应的每一个值的含义如下:
sklearn.metrics 用法详解

图2:混淆矩阵的含义

那么:
准确率= T P + T N T P + T N + F P + F N \frac{TP+TN}{TP+TN+FP+FN} TP+TN+FP+FNTP+TN,精准率= T P T P + F P \frac{TP}{TP+FP} TP+FPTP,召回率= T P T P + F N \frac{TP}{TP+FN} TP+FNTP,F1-scores= 2 ∗ P r e c i s i o n ∗ R e c a l l P r e c i s i o n + R e c a l l \frac{2*Precision*Recall}{Precision+Recall} Precision+Recall2PrecisionRecall

ROC/AUC的概念

ROC(Receiver Operating Characteristic)曲线,又称接受者操作特征曲线。该曲线最早应用于雷达信号检测领域,用于区分信号与噪声。后来人们将其用于评价模型的预测能力,ROC曲线是基于混淆矩阵得出的。

灵敏度(Sensitivity)= T P T P + F N \frac{TP}{TP+FN} TP+FNTP,特异度(Specificity)= T N F P + T N \frac{TN}{FP+TN} FP+TNTN
真正率(TPR)= 灵敏度= T P T P + F N \frac{TP}{TP+FN} TP+FNTP,假正率(FPR) = 1- 特异度 = F P F P + T N \frac{FP}{FP+TN} FP+TNFP

在上述二分类的例子中,我们取threshold=0.5可以的到一个y_predsthreshold从0取到1就可以得到不同的y_preds,进而计算出不同的(FPR,TPR)对。它们在坐标轴上对应了一条曲线,这条曲线就是ROC曲线,曲线下的面积就是AUC的值。如下图:
sklearn.metrics 用法详解

图3:ROC 曲线

多分类的计算
metrics.cohen_kappa_score:继续等待填坑

3. 实例

以之前的数据来计算每一个度量指标的值,这里用metrics.classification_report
metrics.classification_report(y_true, y_pred, *, labels=None, target_names=None, sample_weight=None, digits=2, output_dict=False, zero_division='warn')
注意到这里的参数是y_pred而不是y_score,所以它只能计算F1-score,而不能计算AUC值。
返回值的格式如下:
{'label 1': {'precision':0.5, 'recall':1.0, 'f1-score':0.67, 'support':1}, 'label 2': { ... }, ... }

from sklearn import metrics
import matplotlib.pyplot as plt

y_labels = [1,1,0,1,1,0,0,0]
y_scores=[0.8,0.9,0.6,0.3,0.2,0.1,0.1,0.6]
y_preds = [1,1,1,0,1,0,0,1] # threshold=0.5
report = metrics.classification_report(y_labels,y_preds)
fpr, tpr, thresholds = metrics.roc_curve(y_labels,y_scores)
auc = metrics.auc(fpr,tpr)
plt.plot(fpr,tpr,'*-')
plt.ylabel('TPR')
plt.xlabel('FPR')
plt.title('ROC curve')
print(report)

得到ROC曲线如图3所示,report的值如下:
sklearn.metrics 用法详解

图4:report结果

参考链接:
[1] https://scikit-learn.org/stable/modules/model_evaluation.html
[2] https://blog.csdn.net/qq_27575895/article/details/83781069
[3] https://laurenoakdenrayner.com/2018/01/07/the-philosophical-argument-for-using-roc-curves/文章来源地址https://www.toymoban.com/news/detail-401468.html

到了这里,关于sklearn.metrics 用法详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • snprintf函数的用法详解

    snprintf()函数是一种格式化函数,用于将格式化的字符串存储到一个字符数组中,并且有一个参数用来限制输出的最大字符数。 语法: int snprintf ( char * s, size_t n, const char * format, … ); 参数: s:指向要存储字符串(由format参数格式化)的字符数组。 n:指定存储字符串的最大字

    2024年02月10日
    浏览(48)
  • flush()函数用法详解

    最近在写一个小项目时用到了Java的序列化,在写入输出流时用到了 flush() 函数。网上搜了一下感觉讲的不是很详细,在此写一下自己的理解 先给出代码片段 在以上代码中我们用ObjectOutputStream 类用来序列化obj对象,并将该对象序列化到一个文件中。 我们给出了细微差别的两

    2024年02月05日
    浏览(77)
  • 【SQL】COUNT()函数 用法详解

    COUNT函数用法: COUNT ( [ALL | DISTINCT] column | expression | *) ALL指示统计所有值,而DISTINCT强制函数仅对不同的值进行操作。 默认情况下,使用ALL选项。 条件表达式 COUNT()函数中条件表达式加 OR null。例如, SELECT COUNT(number 200 OR null) FROM vf; COUNT()函数中条件表达式使用

    2024年04月25日
    浏览(33)
  • C++ freopen函数用法详解

    在OI里赛制中 如果没有文件操作或文件操作被注释,等待着你的就是 爆零 的命运。C和C++的文件操作,一般是用fopen或fstream,我们用 freopen ,即文件重定向。它的用法其实也挺简单。 参数: _Filename :要打开的文件名。 _Mode :打开方式,同fopen。 _File :一个FILE型指针,可以

    2024年02月06日
    浏览(61)
  • python内置函数bytes()用法详解

            python内置函数bytes返回一个新的bytes类型的对象,bytes类型对象是不可变序列,包含范围为 0 = x 256 的整数。bytes可以看做是bytearray的不可变版本,它同样支持索引和切片操作 bytes语法 class bytes([source[, encoding[, errors]]]) 语法结构: 参数解释: 可选形参source可以传入字

    2024年02月15日
    浏览(62)
  • SQL中CONVERT()函数用法详解

    SQL中CONVERT函数格式: CONVERT(data_type,expression[,style]) 参数说明: expression 是任何有效的 Microsoft® SQL Server™ 表达式。。 data_type 目标系统所提供的数据类型,包括 bigint 和 sql_variant。不能使用用户定义的数据类型。 length nchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参

    2024年02月05日
    浏览(54)
  • Python中的睡眠函数用法详解

    Python中的睡眠函数用法详解 睡眠函数是Python中常用的函数之一,它允许程序在执行过程中暂停一段时间。在进行并发编程、定时任务或模拟等场景中,睡眠函数特别有用。本文将详细介绍Python中睡眠函数的用法,并提供相应的源代码。 Python中的睡眠函数由time模块提供,具体

    2024年02月05日
    浏览(53)
  • Python中的filter函数用法详解

    目录 引言 一、filter函数基本用法 二、filter函数应用场景 1、筛选符合条件的元素 2、数据清洗和预处理 3、复杂条件筛选 4、与其他函数结合使用 三、filter函数与lambda表达式 四、filter函数与列表推导式 五、总结 Python中的filter函数是一种内置的高效过滤器,用于从序列中筛选

    2024年02月21日
    浏览(54)
  • python中getattr()函数用法详解

    getattr()  函数用于返回一个对象属性值。 getattr()语法结构: object -- 对象。 name -- 字符串,对象属性。 default -- 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。 返回值:返回对象属性值。 示例代码1: 运行结果: 示例代码2: 运行结果: 示例代码

    2024年02月16日
    浏览(42)
  • python中reshape函数用法详解

    reshape函数 reshape函数是Numpy库中的一个函数,可以用于改变一个数组的形状,例如将一个二维数组转换成一个三维数组。 程序运行结果: 下面是reshape函数的具体实现细节: 其中,array表示要改变形状的数组,newshape表示新的形状,order表示元素在新数组中的存储顺序(可选,

    2024年02月16日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包