Python一些小操作

矢量图

from matplotlib_inline import backend_inline
backend_inline.set_matplotlib_formats('svg')

matplotlib中文问题

import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
plt.rcParams["axes.unicode_minus"]=False #该语句解决图像中的“-”负号的乱码问题

可见文章Matplotlib中文乱码解决方案(两种方式)

散点矩阵图

import pandas as pd
import mglearn
grr = pd.plotting.scatter_matrix(iris_dataframe, # 要绘制散点矩阵图的特征数据
                                 c=y_train, # 指定颜色映射的依据
                                 figsize=(15, 15),
                                 marker='o',
                                 hist_kwds={'bins': 20}, # 直方图分为 20 个区间
                                 s=60,
                                 alpha=.8, # 透明度
                                 cmap=mglearn.cm3) # 设置颜色映射

ROC曲线和AUC值

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

  • y_true : 数组,形状 = [n_samples],真实标签
  • y_score : 数组,形状 = [n_samples],可以是正类样本的概率值,或置信度分数,或decision_function返回的距离
  • pos_label : 整数或者字符串, 默认None,表示被认为是正类样本的类别
  • sample_weight : 形如 [n_samples]的类数组结构,可不填,表示样本的权重
  • drop_intermediate : 布尔值,默认True,如果设置为True,表示会舍弃一些ROC曲线上不显示的阈值点,这对于计算一个比较轻量的ROC曲线来说非常有用
  • 这个类返回:FPR,Recall以及阈值。

sklearn.metrics.roc_auc_score (y_true, y_score, average=’macro’, sample_weight=None, max_fpr=None)

输入的参数也比较简单,就是真实标签,和与roc_curve中一致的置信度分数或者概率值。

例1
import numpy as np
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt

# 假设有以下真实标签和预测概率
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])

# 计算ROC曲线的点
fpr, tpr, thresholds = roc_curve(y_true, y_scores)

# 计算AUC值
roc_auc = auc(fpr, tpr)

# 画ROC曲线
plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic Example')
plt.legend(loc="lower right")
plt.show()

在这里插入图片描述

例2

除了可以用sklearn.metrics.auc这个类来计算AUC面积,也可以使用roc_auc_score这个类。

# 准备数据
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.svm import SVC
from sklearn.metrics import roc_curve,roc_auc_score

class_1 = 500  #类别1有500个样本。标签为0
class_2 = 50  #类别2只有50个。标签为1
centers = [[0.0, 0.0], [2.0, 2.0]]  #设定两个类别的中心
clusters_std = [1.5, 0.5]  #设定两个类别的标准差,通常来说,样本量比较大的类别会更加松散
X, y = make_blobs(n_samples=[class_1, class_2], centers=centers, cluster_std=clusters_std, random_state=0,
                  shuffle=False)
# X:(550, 2) y:(550,) 有0和1两类

# 训练模型
clf_proba = SVC(kernel="linear", C=1.0, probability=True).fit(X, y)
# 这里的thresholds不是概率值,而是距离值中的阈值,所以它可以大于1,也可以小于0
FPR, recall, thresholds = roc_curve(y, clf_proba.decision_function(X), pos_label=1)
auc_score = roc_auc_score(y, clf_proba.decision_function(X))

# 绘制图形
plt.figure()
plt.plot(FPR, recall, color='red', label='ROC curve (area = %0.2f)' % auc_score)
plt.plot([0, 1], [0, 1], color='black', linestyle='--')
plt.xlim([-0.05, 1.05])
plt.ylim([-0.05, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('Recall')
plt.title('ROC Curve')
plt.legend(loc="lower right")
plt.show()

在这里插入图片描述
可见文章(8) 支持向量机(下)(模型评估指标、ROC曲线)

例3
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_curve, auc

# 生成带有噪声的数据集
X, y = make_classification(n_samples=1000, n_features=20, n_classes=2, 
                           n_informative=10, n_redundant=5, n_clusters_per_class=2, 
                           weights=[0.5, 0.5], flip_y=0.3, random_state=42)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 定义模型
models = {
    'Logistic Regression': LogisticRegression(max_iter=10000),
    'Support Vector Machine': SVC(probability=True),
    'Random Forest': RandomForestClassifier(n_estimators=100)
}

# 画ROC曲线
plt.figure(figsize=(10, 8))
for name, model in models.items():
    model.fit(X_train, y_train)
    y_prob = model.predict_proba(X_test)[:, 1]  # 获取正类的预测概率
    fpr, tpr, _ = roc_curve(y_test, y_prob)
    roc_auc = auc(fpr, tpr)
    
    plt.plot(fpr, tpr, label=f'{name} (AUC = {roc_auc:.2f})')

plt.plot([0, 1], [0, 1], 'k--')  # 绘制对角线
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.0])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic (ROC) Curve')
plt.legend(loc='lower right')
plt.grid()
plt.show()

在这里插入图片描述

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

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

相关文章

[数据集][目标检测]盲道检测数据集VOC+YOLO格式2173张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2173 标注数量(xml文件个数):2173 标注数量(txt文件个数):2173 标注…

室内外融合定位是如何做到成为定位领域的新宠

在信息化高速发展的今天,定位技术已成为人们生活和工作中不可或缺的一部分。随着物联网、智慧城市等领域的蓬勃发展,传统的单一定位方式已无法满足复杂多变的环境需求。在这样的背景下,室内外融合定位技术应运而生,以其独特的优势…

RockPI 4A单板Linux 4.4内核下的RK3399 GPIO功能解析

RockPI 4A单板Linux 4.4内核下的RK3399 GPIO功能解析 摘要:本文将基于RockPI 4A单板,介绍Linux 4.4内核下RK3399 GPIO(通用输入输出)功能的使用方法。通过详细的代码解析和示例,帮助读者理解如何在Linux内核中使用GPI…

Docker部署深度学习模型

基础概念 Docker Docker是一个打包、分发和运行应用程序的平台,允许将你的应用程序和应用程序所依赖的整个环境打包在一起。比如我有一个目标检测的项目,我想分享给朋友,那么他首先需要在自己的电脑上配置好显卡驱动、CUDA、CuDNN&#xff…

探索多头混合专家(MH-MoE)模型的先进架构

在深度学习领域,大型模型如大型语言模型(LLMs)和大型多模态模型(LMMs)因其在各个领域的有效性而受到广泛关注。然而,这些模型在训练和推理时面临着巨大的计算成本。为了解决这一问题,研究者们提…

微服务框架下,因发送端与消费端的vhost不一致,导致rabbitmq出现严重的消息堆积

一、背景 在生产环境下,rabbitmq机器出现磁盘空间不足的报警,发现是某个队列的消息只有生产,迟迟没有消费。 可以得到的信息是: 队列queue是data_center_file_change_queue队列绑定的交换机是resourceChangeExchange&#xff0c…

【画板案例-线宽 Objective-C语言】

一、接下来,我们来说这个,线宽, 1.示例程序里边,这个slider,是改变线宽的,在最左边的时候,我画一下, 是这种线宽,还是有一定宽度的啊,跟我们这个默认的,不是1像素, 然后,最右边呢,也是有一个宽度的, 然后呢,这个线宽,我就给它,最小值设置成5,最大值设置成3…

淘宝扭蛋机小程序,扭蛋市场创新模式

扭蛋机作为潮玩市场的娱乐消费方式,成为了当下消费者的新宠。扭蛋机凭借自身性价比高、商品多样、惊喜性等特点,吸引了各个年龄层的消费者,不仅年轻人喜欢,不少小学生和老年人也非常喜欢,扭蛋机市场迎来了快速发展期。…

【学习笔记】Windows GDI绘图(十二)双缓冲管理(用GIF动画测试)

文章目录 引言默认双缓冲SetStyle 手动管理双缓冲图形BufferedGraphicsManager缓冲图形管理器BufferedGraphicsContext 缓冲图形上下文BufferedGraphics 图形缓冲区验证双缓冲的效果(Gif动画显示非正常速度)结束语性能对比 引言 图形编程中一个常见的问题就是闪烁,…

男士内裤比较好的品牌有哪些?五款物超所值的男款内裤安利

挑选男士内裤时,哪一款更合适呢?这个问题想必让许多人感到困惑。现在市场上的男士内裤种类繁多,确实让人眼花缭乱,不知从何下手。为了帮助大家解决这一难题,今天特地为大家整理了一些选购男士内裤的技巧,并…

EverWeb 强大的零基础Mac网页设计制作软件

搜索Mac软件之家下载EverWeb 强大的零基础Mac网页设计制作软件 EverWeb 4.2是非专业网页设计师的绝佳网页制作工具,无需编码即可创建美观、响应迅速的网站。只需拖放自己的图像、文本和其他任何html元素到网页布局的任何位置。 EverWeb的功能特性: 下…

代理结算不再繁琐,Xinstall让App推广更轻松

在移动互联网时代,App的推广与获客已成为企业发展的重要一环。然而,随着推广模式的多样化,如何高效地管理App推广的代理结算,成为了许多企业面临的难题。Xinstall凭借其强大的超级渠道功能,为企业提供了一个完美的解决…

Shopee与Lazada卖家如何运用自养号测评稳定提升销量于评价

在跨境电商行业中,测评对于提高产品销量是个非常优秀的辅助方式。作为东南亚电商巨头,Shopee和Lazada这两大主流平台上,卖家竞争也尤为激烈,卖家们不断寻求有效的方法提升自己的产品销量。为了应对这一挑战,测评应运而…

物联网-高性能时序数据库QuestDB

高性能时序数据库QuestDB 开源地址:https://github.com/questdb/questdb 官网:https://questdb.io/ 当前 13.9k start 自带免费可视化管理界面 支持各种语言客户端 C & C .NET Go Java Node.js Python Rust 上手容易可兼容 Postgresql InfluxDB …

Major European 银行 X Incredibuild

关于公司 Major European 银行是一家顶级的跨国欧洲金融巨头,拥有跨越三个世纪的悠久历史,在包括英国、埃及和美国等关键市场在内的全球55个国家拥有业务。该机构提供从零售银行和财富管理,到投资咨询和风险管理的全面服务。 面临的挑战 M…

用贪心算法计算十进制数转二进制数(整数部分)

十进制整数转二进制数用什么方法?网上一搜,大部分答案都是用短除法,也就是除2反向取余法。这种方法是最基本最常用的,但是计算步骤多,还容易出错,那么还有没有其他更好的方法吗? 一、短除反向取…

漏洞挖掘 | 记一次信息泄露到登入后台

这次是项目上遇到的一个洞,打开页面是一个红红的登录页面 这里就不放图了,浓浓的红色气息~ 老样子抓登录包 虽然是明文传输但是爆破弱口令无果 f12大法,审计源代码,在其中一个js文件中发现了这个接口 拼接URL进行访问 感觉有点东…

热搜爆了!AI秒写3篇湖南高考作文,邀你来打分!

今天上午 全国高考语文科目结束 作文题目成为焦点 相关话题立刻冲上热搜 今年湖南高考采用的是新课标 I 卷 作文题涉及到了人工智能 引发大量网友讨论 ↓↓↓ 随着互联网的普及、人工智能的应用,越来越多的问题能很快得到答案。那么,我们的问题是…

Switch双系统:2024.6,自己动手丰衣足食版

文章目录 资源(追本溯源)AtmosphereHekateRekadoDBINXThemesInstallerTesla-MenuSysClkRetroArch其他常用插件 基础教程(自己动手丰衣足食版)大气层双系统教程安装插件大气层系统升级救砖和恢复官方系统版本其他不推荐使用使用Mac…

ts类型声明文件、内置声明文件

1. ts类型声明文件 在ts中以d.ts为后缀的文件就是类型声明文件,主要作用是为js模块提供类型信息支持,从而获得类型提示 1.1 第三方包用ts编写的,会自动生成一个 .d.ts文件,进行类型声明 1.2 有些包不是用ts编写的,在…