sklearn中的roc_auc_score(二分类或多分类)

官方API地址:

sklearn.metrics.roc_auc_score — scikit-learn 1.2.2 documentationExamples using sklearn.metrics.roc_auc_score: Release Highlights for scikit-learn 0.22 Release Highlights for scikit-learn 0.22 Probability Calibration curves Probability Calibration curves Multicl...https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html?highlight=roc_auc_score#sklearn.metrics.roc_auc_score

对于二分类

直接用预测值与标签值计算

代码:

# ---encoding:utf-8---
# @Time    : 2023/6/6 17:41
# @Author  : CBAiotAigc
# @Email   :1050100468@qq.com
# @Site    : 
# @File    : 癌症分类.py
# @Project : 机器学习
# @Software: PyCharm
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
import pandas as pd
from sklearn.metrics import accuracy_score, roc_auc_score


def logistic_regression_二分类():
    data = pd.read_csv("./breast-cancer-wisconsin.csv")
    data.info()

    data = data.replace(to_replace="?", value=np.NaN)
    data = data.dropna()

    x = data.iloc[:, 1:-1].values
    y = data.iloc[:, -1].values

    x_train, x_test, y_train, y_test = train_test_split(x, y, train_size=0.8, shuffle=True, stratify=y, random_state=22)
    transformer = StandardScaler()
    x_train = transformer.fit_transform(x_train)
    x_test = transformer.transform(x_test)

    estimator = LogisticRegression()
    estimator.fit(x_train, y_train)

    y_pred = estimator.predict(x_test)
    print(accuracy_score(y_pred, y_test))
    print(roc_auc_score(y_test, y_test))


if __name__ == '__main__':
    logistic_regression_二分类()

 对于多分类

与二分类y_pred不同的是,概率分数y_pred_prob

代码:

# ---encoding:utf-8---
# @Time    : 2023/6/6 17:41
# @Author  : CBAiotAigc
# @Email   :1050100468@qq.com
# @Site    : 
# @File    : 癌症分类.py
# @Project : 机器学习
# @Software: PyCharm
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
import pandas as pd
from sklearn.metrics import accuracy_score, roc_auc_score


def logistic_regression_多分类():
    data = pd.read_csv("./iris.csv", header=None)
    data.info()
    x = data.iloc[:, :-1].values
    data.columns = ["1", "2", "3", "4", "Class"]
    y = data[["Class"]]

    def myapply(x):
        classify = x.unique().tolist()
        list_ = []
        for current in x:
            for idx, c in enumerate(classify):
                if current == c:
                    list_.append(idx)

        return list_

    y = y.apply(myapply)["Class"].values
    # print(y)

    x_train, x_test, y_train, y_test = train_test_split(x, y, train_size=0.8, shuffle=True, stratify=y, random_state=22)

    transformer = StandardScaler()
    x_train = transformer.fit_transform(x_train)
    x_test = transformer.fit_transform(x_test)

    estimator = LogisticRegression()
    estimator.fit(x_train, y_train)

    y_pred = estimator.predict(x_test)

    print(accuracy_score(y_pred, y_test))
    print(roc_auc_score(y_test, estimator.predict_proba(x_test), multi_class="ovr"))


if __name__ == '__main__':
    logistic_regression_多分类()

roc_auc_score的multi_class参数的解释:

multi_class是用于多分类问题的参数。在二元分类时,分类器需要将每个实例分到两个类别之一。而在多元分类时,分类器一般需要将一个实例分到多个类别之一。

multi_class参数共有三种取值:

  1. 'raise': 如果标签中包含了多个类别并且multi_class没有显式地被设置为 'ovr' 或 'ovo' ,那么roc_auc_score函数将抛出一个 ValueError 异常。

  2. 'ovr': One-vs-rest策略。将多分类问题拆成多个二分类子问题。对于每个类别,都训练一个二分类模型来区分该类别和其他所有类别的差异。对于多分类问题,将会创建n个模型,其中n是类别的数量。

  3. 'ovo': One-vs-one策略。 每次只选择两个类别计算AUC,最终的AUC为所有类别的AUC均值。对于多分类问题,将会创建$ n*(n-1)/2 $个模型,其中n是类别的数量。

在处理具有大量类别的多分类问题时,ovo 策略的计算代价会变得非常高,因为它需要构建大量的二分类器。而 ovr 策略通常比 ovo 策略更有效,但也更容易受到样本不平衡和噪音数据的影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/26990.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何查询期刊的SCI分区

好消息是CSDN AI写作助手上线了 我不用自己一个字一个字去写SCI分区是啥(x) 然而—— 麻了还是自己写吧, 在人工智能这条路上,CSDN还是需要努力。 简单来说,我们做科研、发文章,肯定是需要比较的 谁的…

创客匠人CEO蒋洪波:用门店思维做直播

互联网时代,转型线上做知识付费成为教育培训行业的主流,直播教学成为新型的教学模式受到了广泛认可。很多老师在线下培训深耕多年,知识储备丰富,但想要转型线上又缺少方法,缺少去改变的欲望,怕转型做线上直…

docker安装golang

最近玩 docker 比较多,试试安装 golang 操作系统:Linux 第一步 先看一下镜像: docker images 看一下我们目前的镜像中,是不是有go 如果有,版本不合适等,可以考虑删除,重新安装,也…

Linux之进程间通信——管道

文章目录 前言一、进程间通信1.概念2.目的3.进程间通信分类 二、管道1.管道介绍2.管道分类1.匿名管道pipi创建管道文件,打开读写端fork子进程关闭父进程的读取端,关闭子进程的写入端读写特征管道特征 2.命名管道mkfifo创建管道文件删除管道文件通信 三、…

Blindly Assess Image Quality in the Wild Guided by ASelf-Adaptive Hyper Network

Abstract 真实失真图像的盲图像质量评估(BIQA)一直是一个具有挑战性的问题,因为在野外采集的图像包含各种各样的内容和各种类型的失真。目前绝大多数的BIQA方法都专注于如何预测合成图像的质量,但当应用于真实世界的失真图像时却失败了。为了应对这一挑…

一站式完成车牌识别任务:从模型优化到端侧部署

交通领域的应用智能化不断往纵深发展,其中最为成熟的车牌识别早已融入人们的日常生活之中,在高速公路电子收费系统、停车场等场景中随处可见。一些企业在具体业务中倾向采用开源方案降低研发成本,但现有公开的方案中少有完成端到端的车牌应用…

DMBOK知识梳理for CDGA/CDGP——第三章数据治理

关 注gzh“大数据食铁兽” 回复“知识点”获取《DMBOK知识梳理for CDGA/CDGP》常考知识点(第三章数据治理) 第三章 数据治理 第三章在是CDGA|CDGP考试的重点考核章节之一,知识点比较密集,本章重点为语境关系图及数据治理概念…

给电脑重装系统的时间需要多久才能装好

在进行电脑重装系统时,如果遇到系统安装时间过长的情况,可能会引起用户的困惑和不安。本文将介绍一些常见的原因和解决方法,以帮助您理解并应对系统安装时间过长的情况。 ​工具/原料: 系统版本:Windows 10 专业版 品…

Python数据攻略-Pandas的数据创建与基础特性

大家好,我是Mr数据杨!今天将进入Python的Pandas数据世界,就像三国演义中的英雄们,用聪明才智塑造自己的命运。 记得三国中,周瑜曾利用兵法巧妙策划火烧赤壁,击败曹军。这就像创建一个Pandas DataFrame&…

JavaSE笔记(七)重制版

多线程与反射 前面我们已经讲解了JavaSE的大部分核心内容,最后一章,我们还将继续学习JavaSE中提供的各种高级特性。这些高级特性对于我们之后的学习,会有着举足轻重的作用。 多线程 **注意:**本章节会涉及到 操作系统 相关知识…

宝塔面板搭建网站教程:Linux下使用宝塔一键搭建网站,内网穿透发布公网上线

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 转载自cpolar内网穿透的文章:使用宝塔面板快速搭建网站,并内网穿透实现公网远程访问 前言 宝塔面板作为简单好用的服务器运维管理面板&…

Spring为什么默认是单例的?

目录 一、五种作用域 二、单例bean与原型bean的区别 三、单例Bean的优势与劣势 一、五种作用域 1.singleton: singleton是Spring Bean的默认作用域,也就是单例模式。在整个应用程序中,只会创建一个实例,Bean的所有请求都会共享这个实例。 …

简单上手!快速将另一个报表的页面添加到 FastReport .NET!

FastReport 是功能齐全的报表控件,可以帮助开发者可以快速并高效地为.NET,VCL,COM,ActiveX应用程序添加报表支持,由于其独特的编程原则,现在已经成为了Delphi平台最优秀的报表控件,支持将编程开…

人车网租赁软件开发|人车网租赁系统|租赁系统源码功能

经过租赁小程序不只可以使物品得到充沛的运用,还能减少一些资源的浪费,租赁行业这两年因为互联网技术的完善,发展也在不断进步,租赁系统定制开发功能也在不断完善,那么企业想要开发租赁小程序的时分需求留意哪些方面呢…

长尾词挖掘,长尾词的优化方法有哪些

我们都知道,长尾词能给我们带来较高的流量和转化率,且优化难度低,成本低。今天就来分享长尾词的优化方法。 首先需要挖掘长尾词,挖掘长尾词的方法以下3种比较实用: 1、使用长尾词挖掘工具 可以通过第三方工…

小波和小波变换(应试)

零基础小白共计花费2小时38分04秒完成对小波的“平地起高楼”学习。 记录所有学习过程。 一、大致浏览PPT 这个阶段跳着看,太难的跳过 1.总结知识点 共四个部分 1.小波介绍 2.小波变换 小波变换的定义连续小波变换的定义离散小波变换小波重构 3.哈尔小波变换 …

【C++初阶】初识模板

👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&#x1…

地理空间数据云管理-四维轻云1.3.2-版本更新内容

很多用户想要在不上传数据的情况下查看案例数据,我们在四维轻云1.3.2版本中为新用户新增了示例项目。此外,此次更新还新增了标绘数据模式和场景定时保存提醒功能,优化了插件启动流程以及移动和旋转变化轴。 1、新增示例项目 示例项目中包含…

Ubuntu 登录提示信息`Message of The Day`(MOTD)定制与开关

一、效果 登录Ubuntu的时候,在控制台可能会弹出一系列提示消息,有欢迎消息、系统信息、更新信息等等: 这些提示消息被称为Message of The Day,简称MOTD。 Ubuntu与其它Linux版本不太一样,它引入了MOTD 的概念。 这些…

健康管理系统开发笔记

健康管理系统 项目介绍功能架构项目结构maven项目搭建 项目介绍 健康管理系统是一款应用于健康管理机构的业务系统,实现健康管理机构工作内容 可视化、会员管理专业化、健康评估数字化、健康干预流程化、知识库集成化,从而提 高健康管理师的工作效率&a…
最新文章