首页 > 其他分享 >模型评估指标——sklearn.metrics模块

模型评估指标——sklearn.metrics模块

时间:2023-04-21 19:55:10浏览次数:31  
标签:sample None weight average metrics score 模块 true sklearn

sklearn.metrics模块

  • 该模块主要包含分数函数、性能指标、成对指标、距离计算

1. 分类性能指标

1.1. accuracy_score()

  • 计算所有样本中分类正确样本所占的比例

  • 语法

    ## 语法
    sklearn.metrics.accuracy_score(y_true, y_pred, *, normalize=True, sample_weight=None)
    

    y_true:y的真实值

    y_pred:y的预测值

    normalize:若为True(默认),返回分类得分,若为False,返回分类正确的样本个数

    sample_weight:样本权重

  • 返回值是得分,若normalize=True,返回值是float型

  • 在二分类问题中,等价于jaccard_score

1.2. f1_score()

  • 计算F1得分,即precision和recall的调和平均数

    \(F1 = 2 * (precision * recall) / (precision + recall)\)

    \(precision=\frac{TP}{TP+FP}\)

    \(recall=\frac{TP}{TP+FN}=TPR=sensitivity\)

  • 若为多分类或多标签问题,则是每个类别的F1得分的平均值,各个类别所占的权重根据参数average指定

  • 语法

    ## 语法
    sklearn.metrics.f1_score(y_true, y_pred, *, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')
    

    y_true:y的真实值

    y_pred:y的预测值

    labels:array-like,若average!='binary'时,表示标签集的顺序

    pos_label:str or int,当average='binary',且是二分类问题时,指明要计算得分的类别,当average!='binary'时,不起作用

    average:{‘micro’, ‘macro’, ‘samples’, ‘weighted’, ‘binary’} or None,针对多分类问题,若为None,则返回每类的得分,否则,通过指定的方式计算每类得分的平均值

    micro:通过计算所有真阳性、假阴性、假阳性来全局的计算得分

    macro:计算每类的得分,再求未加权平均值

    weighted:计算每类的得分,再计算加权平均值,根据每类的真实样本数设置权重

    samples:计算每个实例的指标,再求均值

    binary:仅适用于二分类问题,返回pos_label指定的类别的结果

    sample_weight:样本权重

    zero_division:当precision或recall无定义时,默认指标返回0,并引发警告

  • 返回值为F1得分,float或float的数组

1.3. jaccard_score()

  • 计算jaccard相似系数得分,等于两个标签集的交集的大小除以并集的大小

  • 语法

    ## 语法
    sklearn.metrics.jaccard_score(y_true, y_pred, *, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')
    

    参数与f1_score的参数一样

  • 返回值为jaccard相似系数得分,float或float的数组

1.4. roc_auc_score()

  • 计算auc,即ROC曲线下面积

  • 语法

    sklearn.metrics.roc_auc_score(y_true, y_score, *, average='macro', sample_weight=None, max_fpr=None, multi_class='raise', labels=None)
    

    y_true:y的真实标签

    y_score:估计器计算出的每个样本属于每种类别的概率,如果是二分类,则是estimator.predict_proba(X)[:,1],或者是estimator.decision_function(X);如果是多分类或多标签,则是(n_samples, n_classes)形状的概率

    average:{‘micro’, ‘macro’, ‘samples’, ‘weighted’} or None

    多分类仅对macro和weighted有效,None仅对multi_class='ovr'有效,micro仅对multi_class='ovr'有效

    sample_weight:样本权重

    max_fpr:float > 0 and <= 1,仅对二分类有效,若不是None,对AUC在[0,max_fpr]范围内标准化

    multi_class:{‘raise’, ‘ovr’, ‘ovo’},仅适用于多分类

    raise:引发错误

    ovr:One-vs-rest,计算每类相对于其余类别的AUC,对类别不均衡较敏感

    ovo:One-vs-one,计算所有可能的成对类别的平均AUC,对类别不均衡不敏感

    labels:仅适用于多分类目标,索引y_score种类别标签的列表,即y_score中的类别是按照labels中顺序排列的

  • 返回auc值,float

1.5. roc_curve()

  • 仅限于二分类问题,计算真阳率、假阳率

  • 语法

    sklearn.metrics.roc_curve(y_true, y_score, *, pos_label=None, sample_weight=None, drop_intermediate=True)
    

    y_true:真实类别,如果不是{-1,1}或{0,1},那么pos_label参数需要明确给出

    pos_label:正类的标签,若为None,而二分类为{-1,1}或{0,1},则正类被设置为1

    sample_weight:样本权重

    drop_intermediate:是否去掉一些不会出现在绘制的ROC曲线上的次优阈值

  • 返回值

    fpr:针对每个阈值的假阳率

    tpr:针对每个阈值的真阳率

    thresholds:一列递减的用来判断正负样本的阈值,最大值设置为max(y_score)+1

1.6. auc()

  • 使用梯形规则计算AUC值

    sklearn.metrics.auc(x, y)
    

    x:x的坐标,递增或递减的,即假阳率

    y:y的坐标,即真阳率

1.7. classification_report()

  • 构建一个文本报告,展示主要的分类指标

  • 语法

    sklearn.metrics.classification_report(y_true, y_pred, *, labels=None, target_names=None, sample_weight=None, digits=2, output_dict=False, zero_division='warn')
    

    labels:要包含在报告中的标签索引的列表

    target_names:对应labels的名字

    digits:格式化输出浮点型数据的小数位数,若output_dict=True,则该参数会被忽视,不会四舍五入

    output_dict:若为True,则返回输出为字典

  • 返回值为str或dict,返回每类的precision, recall, F1 score

2. 回归性能指标

2.1. r2_score()

  • 计算回归决定系数

    \(R^2(y,\hat y)=1-\frac{\sum_{i=1}^n (y_i-\hat y_i)^2}{\sum_{i=1}^n (y_i-\bar y)^2}\)

    最大值是1,等于1表示性能最好,可能会出现负值

  • 语法

    sklearn.metrics.r2_score(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average', force_finite=True)
    

    y_true:目标真实值

    y_pred:目标的预测值

    sample_weight:样本权重

    multioutput:{‘raw_values’, ‘uniform_average’, ‘variance_weighted’}, array-like of shape (n_outputs,) or None,用来定义多个输出分数的聚合

    raw_values:在多输出输入的情况下,返回一组完整的分数。

    uniform_average:所有输出的分数均采用相同权重进行平均

    variance_weighted:加权平均,根据每个单独输出的方差进行加权。

    force_finite:若为True,当得分出现NaN和-Inf时,分别用1和0代替

  • 返回值是\(R^2\),float

2.2. mean_squared_error()

  • 计算MSE,均方误差

    \(MSE(y,\hat y)=\frac{1}{n}\sum_{i=1}^n (y_i-\hat y_i)^2\)

    n是样本量

  • 语法

    sklearn.metrics.mean_squared_error(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average', squared=True)
    

    multioutput:{‘raw_values’, ‘uniform_average’} or array-like of shape (n_outputs,)

    squared:若为True,返回MSE值,若为False,返回RMSE值

  • 返回float or ndarray of floats,非负,当等于0时模型效果最好

标签:sample,None,weight,average,metrics,score,模块,true,sklearn
From: https://www.cnblogs.com/DYDNyang/p/17341567.html

相关文章

  • ImportError: DLL load failed while importing QtChart: 找不到指定的模块
    这个错误通常是由于您的Python环境缺少QtChart模块或QtChart模块依赖的库文件之一导致的。解决此问题的方法可能因操作系统和Python环境而异,但下面是一些常见的解决方法:检查是否已安装QtChart模块和其依赖项。您可以使用pip命令在终端中安装QtChart模块:Copycodepipinstal......
  • Django框架——手写web框架、wsgiref模块、动静态网页、jinja2模块、主流web框架、Dja
    web应用'''通过浏览器访问的应用程序!!!'''1.两种模式c/sb/s B/S:browser---------------->server2.web应用程序的有点 2.1只需要一个浏览器即可2.2 节省资源2.3 他们不需要更新,因为所有新的特性都在服务器上执行3.web应用程序的缺点 #特别依赖服务端程序的健壮......
  • pyinstaller 打包时第三方模块与图片资源加载
    打包命令pyinstaller--onefile--windowed**.py 修改**.spec文件pathex=['/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/ddddocr'],datas=[('./images','images'),('/Library/Frameworks/Python.fram......
  • 阶乘 reduce函数 operator模块
       fromfunctoolsimportreducefromoperatorimportmuldeffact(n):#使用reduce和operator.mul函数计算阶乘returnreduce(mul,range(1,n+1))#使用reduce函数和一个匿名函数计算阶乘#returnreduce(lambdaa,b:a*b,range(1,n+1)) ......
  • python-ldap模块
    文章目录模块作用模块安装代码示例参考文档模块作用python操作ldap的库,可以对ldap的数据进行增删改查,官方文档地址:https://www.python-ldap.org/en/latest/index.html模块安装pipinstallpython-ldap代码示例不断完善中……#!/usr/bin/envpython#-*-coding:utf-8-*-#......
  • PYTHON - datetime 模块
    datetime模块1.1主要类date日期对象time时间对象datetime日期时间对象timedelta两个时间之间的时间间隔1.2date类date对象由year年份、month月份及day日期三个部分来构成的1.2.1获取当前日期fromdatetimeimportdatetime,datetoday=datetime.today().dat......
  • os模块常用方法
    os模块是Python标准库中的一个模块,提供了与操作系统相关的函数和变量,可以用于文件/目录操作、进程管理、环境变量等操作。以下是os模块的常用函数和变量:1.getcwd()函数:获取当前工作目录。```pythonimportos#获取当前工作目录path=os.getcwd()print(path)```2.chdir(......
  • metrics-server
    E041914:27:25.5663661scraper.go:140]"Failedtoscrapenode"err="Get\"https://192.168.5.130:10250/metrics/resource\":x509:certificateisvalidfor192.168.5.134,not192.168.5.130"node="192.168.5.130"......
  • 详解argparse 模块
    在Python中,可以使用argparse模块来控制代码的参数。argparse可以读取命令行输入的参数,并根据定义的规则进行解析和处理。控制变量取值以下是一个简单的例子,说明如何在Python中使用argparse:importargparseparser=argparse.ArgumentParser(description='PyTorch......
  • 浪潮信息等企业评审通过OTII-E模块化服务器技术规范V1.0
    ■■ 近期,ODCC服务器工作组组织线上评审会议,评审通过了《OTII-E模块化服务器技术规范V1.0》。评审会议上,浪潮信息、英特尔、中国信通院等相关单位的近50位专家参与了在线评审,深入讨论目前OTII系列标准发展的关键问题、行业价值和发展方向。OTII-E是OTII系列标准中的最新技术规范,将......