IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> sklearn分类任务模型评价指标汇总与AUC-ROC曲线及代码示例 -> 正文阅读

[人工智能]sklearn分类任务模型评价指标汇总与AUC-ROC曲线及代码示例

1. 分类指标

二分类可以参考下图:
在这里插入图片描述

准确率 = 预测对的样本数 / 全部样本数
精确率 = 被预测出的正例样本数 / 预测为正例的样本数
召回率 = 预测且真的是正例的样本数 / 正例的样本数
二分类F1 = 2 * 精确率 * 召回率 /(精确率 + 召回率)

多分类中F1一般用Macro F1Micro F1

  • Macro F1:将n分类的评价拆成n个二分类的评价,计算每个二分类任务的F1 score,这些计算出来的F1 score求平均即为Macro F1
  • Micro F1:将n分类的评价拆成n个二分类的评价,将n个二分类评价的TP、FP、RN对应相加(看混淆矩阵),计算得出每组的准确率与召回率,最后按照二分类计算F1的方法,代入公式得出的F1值即为Micro F1

因为Macro F1计算时每个样本的F1权重相同,最后求平均会受样本数量少的类别影响大,在数据各类样本不均衡的情况下,采用Micro F1较为合理,其他情况两者都行,都是F1越大越好

2. 整合工具函数

使用工具方法:

import matplotlib.pyplot as plt


def get_score(true_data, result_prediction, save_roc_path=None, model_name=None):
    """
    分类问题的得分辅助函数
    :param true_data: 真实值,是要预测的目标
    :param result_prediction: 预测值,用模型预测出来的值
    :param save_roc_path: 保存roc曲线的路径
    :param model_name: 模型名
    :return:
    """
    from sklearn.metrics import accuracy_score
    from sklearn.metrics import precision_score
    from sklearn.metrics import recall_score, f1_score
    from sklearn.metrics import roc_curve, auc

    acc = accuracy_score(true_data, result_prediction) # 准确率
    prec = precision_score(true_data, result_prediction) # 精确率
    recall = recall_score(true_data, result_prediction) # 召回率
    f1 = f1_score(true_data, result_prediction) # F1

    fpr, tpr, thersholds = roc_curve(true_data, result_prediction)
    roc_auc = auc(fpr, tpr)

    plt.plot(fpr, tpr, 'k--', label='ROC (area = {0:.2f})'.format(roc_auc), lw=2)
    plt.xlabel('False Positive Rate')
    plt.ylabel('True Positive Rate')
    plt.title('ROC Curve')
    plt.legend(loc="lower right")
    if save_roc_path:
        plt.savefig(save_roc_path)
    plt.show()
    score_list = [acc, prec, recall, f1, roc_auc]
    print('模型{}:'.format(model_name), score_list)
    return score_list

3. 使用示例

import matplotlib.pyplot as plt
import numpy as np


def get_score(true_data, result_prediction, save_roc_path=None, model_name=None):
    """
    分类问题的得分辅助函数
    :param true_data: 真实值,是要预测的目标
    :param result_prediction: 预测值,用模型预测出来的值
    :param save_roc_path: 保存roc曲线的路径
    :param model_name: 模型名
    :return:
    """
    from sklearn.metrics import accuracy_score
    from sklearn.metrics import precision_score
    from sklearn.metrics import recall_score, f1_score
    from sklearn.metrics import roc_curve, auc

    acc = accuracy_score(true_data, result_prediction)
    prec = precision_score(true_data, result_prediction)
    recall = recall_score(true_data, result_prediction)
    f1 = f1_score(true_data, result_prediction)

    fpr, tpr, thersholds = roc_curve(true_data, result_prediction)
    roc_auc = auc(fpr, tpr)

    plt.plot(fpr, tpr, 'k--', label='ROC (area = {0:.2f})'.format(roc_auc), lw=2)
    plt.xlabel('False Positive Rate')
    plt.ylabel('True Positive Rate')
    plt.title('ROC Curve')
    plt.legend(loc="lower right")
    if save_roc_path:
        plt.savefig(save_roc_path)
    plt.show()
    score_list = [acc, prec, recall, f1, roc_auc]
    print('模型{}:'.format(model_name), score_list)
    return score_list


if __name__ == '__main__':
    my_score = get_score(
        true_data=np.random.randint(0, 2, size=100),  # 假设为真实值
        result_prediction=np.random.randint(0, 2, size=100),  # 假设为预测值
    )

返回值为:

模型None: [0.53, 0.6136363636363636, 0.47368421052631576, 0.5346534653465346, 0.5391676866585067]

这里列表中的值依次为:[准确率,精确率,召回率,F1,roc-auc],并且得到ROC曲线:
在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:28:52  更:2022-02-28 15:30:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 18:51:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码