当前位置: 首页 > article >正文

Python60日基础学习打卡D32

我们已经掌握了相当多的机器学习和python基础知识,现在面对一个全新的官方库,看看是否可以借助官方文档的写法了解其如何使用。

我们以pdpbox这个机器学习解释性库来介绍如何使用官方文档。

大多数 Python 库都会有官方文档,里面包含了函数的详细说明、用法示例以及版本兼容性信息。

通常查询方式包含以下2种:

  1. GitHub 仓库:https://github.com/SauceCat/PDPbox
  2. PyPI 页面:PDPbox · PyPI
  3. 官方文档:PDPbox — PDPbox 0.2.1+1.g7fae76b.dirty documentation

一般通过github仓库都可以找到对应的官方文档那个。

-在官方文档中搜索函数名,然后查看函数的详细说明和用法示例

# pip install pdpbox scikit-learn pandas plotly
# pip install pdpbox --upgrade  # 升级pdpbox

下面以鸢尾花三分类项目来演示如何查看官方文档

import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
# 加载鸢尾花数据集
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['target'] = iris.target  # 添加目标列(0-2类:山鸢尾、杂色鸢尾、维吉尼亚鸢尾)# 特征与目标变量
features = iris.feature_names  # 4个特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度
target = 'target'  # 目标列名# 划分训练集与测试集
X_train, X_test, y_train, y_test = train_test_split(df[features], df[target], test_size=0.2, random_state=42
)# 训练模型
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

RandomForestClassifier(random_state=42)

In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.

此时模型已经建模完毕,这是一个经典的三分类项目,之前在基础班的项目三提到过sklearn提供的示例数据集,不了解的同学自行百度了解下该数据。

现在我们开始对这个模型进行解释性分析

先进入官方文档 PDPbox — PDPbox 0.2.1+1.g7fae76b.dirty documentation 

在官方文档中,通常会有一个“API Reference”或“Documentation”部分,列出所有可用的函数、类和方法。

pdpbox这个库比较小,所以非常适合我们学习用法,如果你英语比较差的话,推荐你去应用商店安装一个免费网页翻译插件

插件地址

我们选择第一个图来进行绘制

我的经典如下:

  1. 库的官方文档是用来知道这个库有什么方法的
  2. python文件中悬停功能是用来查看这个方法如何用的(也要搭配官方文档的说明)

现在我们第一步是实例化这个类,TargetPlot类

  1. 先导入这个类(三种不同的导入和引用方法)
  2. 传入实例化参数

# 首先要确保库的版本是最新的,因为我们看的是最新的文档,库的版本可以在github上查看
import  pdpbox
print(pdpbox.__version__)  # pdpbox版本
# 导入这个类
from pdpbox.info_plots import TargetPlot  # 导入TargetPlot类

可以鼠标悬停在这个类上,来查看定义这个类所需要的参数,以及每个参数的格式

ctrl进入可以查看这个类的详细信息

只能查看到他的初始化方法,但是无法看到他的普通方法。注意到提示我们有plot方法,但是看不到普通方法需要传入的参数

可以发现这个类继承了_InfoPlot类,此时我们再次进入_InfoPlot类里面,可以找到这个继承的plot方法

# 选择待分析的特征(如:petal length (cm))
feature = 'petal length (cm)'
feature_name = feature  # 特征显示名称
# 选择待分析的特征(如:petal length (cm))
feature = 'petal length (cm)'
feature_name = feature  # 特征显示名称# 初始化TargetPlot对象(移除plot_type参数)
target_plot = TargetPlot(df=df,  # 原始数据(需包含特征和目标列)feature=feature,  # 目标特征列feature_name=feature_name,  # 特征名称(用于绘图标签)# target='target',  # 多分类目标索引(鸢尾花3个类别)target='target',  # 多分类目标索引(鸢尾花3个类别)grid_type='percentile',  # 分桶方式:百分位num_grid_points=10  # 划分为10个桶
)
d:\Anaconda\envs\vs\lib\site-packages\pdpbox\utils.py:215: SettingWithCopyWarning:A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value insteadSee the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copyd:\Anaconda\envs\vs\lib\site-packages\pdpbox\utils.py:221: SettingWithCopyWarning:A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value insteadSee the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
# 调用plot方法绘制图形
target_plot.plot()
(Figure({'data': [{'hovertemplate': '%{text}','marker': {'color': '#5BB573', 'opacity': 0.5},'name': 'count','text': array([11., 13., 26., 16., 13., 20., 17., 15., 19.]),'textposition': 'outside','type': 'bar','width': 0.36,'x': array([0, 1, 2, 3, 4, 5, 6, 7, 8], dtype=int64),'xaxis': 'x','y': array([11, 13, 26, 16, 13, 20, 17, 15, 19], dtype=int64),'yaxis': 'y'},{'hovertemplate': '%{text}','line': {'color': '#636EFA'},'marker': {'color': '#636EFA'},'mode': 'lines+markers+text','name': 'Average target','text': [0.0, 0.0, 0.0, 1.0, 1.0, 1.15, 1.765, 2.0, 2.0],'textposition': 'top center','type': 'scatter','x': array([0, 1, 2, 3, 4, 5, 6, 7, 8], dtype=int64),'xaxis': 'x','y': array([0.        , 0.        , 0.        , 1.        , 1.        , 1.15      ,1.76470588, 2.        , 2.        ]),'yaxis': 'y2'}],'layout': {'height': 600,'showlegend': False,'template': '...','title': {'text': ('Target plot for feature <b>pet' ... 'ifferent feature values.</sup>'),'x': 0,'xref': 'paper'},'width': 1200,'xaxis': {'anchor': 'y','domain': [0.0, 1.0],'ticktext': [[1.0, 1.4), [1.4, 1.5), [1.5, 2.63), [2.63,4.1), [4.1, 4.5), [4.5, 4.9), [4.9, 5.19),[5.19, 5.7), [5.7, 6.9]],'tickvals': array([0, 1, 2, 3, 4, 5, 6, 7, 8]),'title': {'text': '<b>petal length (cm)</b> (value)'}},'yaxis': {'anchor': 'x', 'domain': [0.0, 0.98], 'range': [0, 31.2], 'title': {'text': 'count'}},'yaxis2': {'anchor': 'x','domain': [0.0, 0.98],'overlaying': 'y','range': [0, 2.4],'showgrid': False,'side': 'right','title': {'text': 'Average target'}}}}),None,x        value      percentile  count    target0  0   [1.0, 1.4)    [0.0, 11.11)     11  0.0000001  1   [1.4, 1.5)  [11.11, 22.22)     13  0.0000002  2  [1.5, 2.63)  [22.22, 33.33)     26  0.0000003  3  [2.63, 4.1)  [33.33, 44.44)     16  1.0000004  4   [4.1, 4.5)  [44.44, 55.56)     13  1.0000005  5   [4.5, 4.9)  [55.56, 66.67)     20  1.1500006  6  [4.9, 5.19)  [66.67, 77.78)     17  1.7647067  7  [5.19, 5.7)  [77.78, 88.89)     15  2.0000008  8   [5.7, 6.9]  [88.89, 100.0]     19  2.000000)
# 看起来很奇怪,我们查看下类型
type(target_plot.plot())
Out[ ]:tuplelen(target_plot.plot()) # 查看元组的形状,元组只有len方法,没有shape方法
Out[ ]:3#我们来依次查看这个元组返回的究竟是什么内容?target_plot.plot()[0]target_plot.plot()[1]
# 居然什么也没有返回type(target_plot.plot()[1]) 
Out[26]:NoneTypetarget_plot.plot()[2]

Out[]:

xvaluepercentilecounttarget
00[1.0, 1.4)[0.0, 11.11)110.000000
11[1.4, 1.5)[11.11, 22.22)130.000000
22[1.5, 2.63)[22.22, 33.33)260.000000
33[2.63, 4.1)[33.33, 44.44)161.000000
44[4.1, 4.5)[44.44, 55.56)131.000000
55[4.5, 4.9)[55.56, 66.67)201.150000
66[4.9, 5.19)[66.67, 77.78)171.764706
77[5.19, 5.7)[77.78, 88.89)152.000000
88[5.7, 6.9][88.89, 100.0]192.000000

这个返回的是目标变量(或预测值)在不同特征区间的统计摘要。这是 PDPbox(Partial Dependence Plot) 库生成的核心分析数据。他已经在图上被可视化出来了

实际上,返回一个三元组 (fig, axes, summary_df),其中 fig 是 Plotly 的 Figure 对象。要查看或修改图形的形状(如宽度、高度、边距等),可以直接操作这个 Figure 对象。

在官方文档介绍中的plot方法最下面,写明了参数和对应的返回值

综上需要注意,我们关注一个类需要关注如下信息

  1. 传入的参数和对应的格式
  2. 类对应的方法的返回值

最后,我们用规范的形式来完成

fig, axes, summary_df = target_plot.plot(which_classes=None,  # 绘制所有类别(0,1,2)show_percentile=True,  # 显示百分位线engine='plotly',template='plotly_white'
)# 手动设置图表尺寸(单位:像素)
fig.update_layout(width=800,  # 宽度800像素height=500,  # 高度500像素title=dict(text=f'Target Plot: {feature_name}', x=0.5)  # 居中标题
)fig.show()

其中,fig.update_layout() 是对 Plotly 图表进行 二次修改 的核心方法。很多绘图工具都是调用的底层的绘图包,所以要想绘制出想要的图表,需要先了解底层绘图包的语法。

这里暂且不做阐述,有兴趣自行了解

相关文章:

Python60日基础学习打卡D32

我们已经掌握了相当多的机器学习和python基础知识&#xff0c;现在面对一个全新的官方库&#xff0c;看看是否可以借助官方文档的写法了解其如何使用。 我们以pdpbox这个机器学习解释性库来介绍如何使用官方文档。 大多数 Python 库都会有官方文档&#xff0c;里面包含了函数…...

面向恶劣条件的道路交通目标检测----大创自用(当然你也可以在里面学到很多东西)

全部内容梳理 目标检测的两个任务&#xff1a; 预测标签 边界框 语义分割 实力分割 一个是类别 一个是实例级别 分类任务把每个图像当作一张图片看待 所有解决方法是先生成候选区域 再进行分类 置信度&#xff1a; 包括对类别和边界框预测的自信程度 输出分类和IOU分数的…...

基于Java(SSM)+MySQL实现(Web)具有智能推荐功能的图书销售系统

具有智能推荐功能的图书销售系统 1.绪论 1.1 背景、目的、意义 随着互联网的不断发展&#xff0c;电子商务逐渐代替传统的交易方式。各种类型的电子商务网站层出不穷&#xff0c;但细分之下电子商务网站主要分为 B2B&#xff0c;B2C&#xff0c;C2B&#xff0c;C2C 这四大类…...

浙大团队研发Earth Explorer系统,探索深时演化/地学剖面/科研场景,赋能深时地球科学研究

深时地球科学研究聚焦地球的漫长历史&#xff0c;探寻从数十亿年前到如今的地质演化过程&#xff0c;研究范畴广泛&#xff0c;涵盖了地球内部结构、物质组成、生命演化&#xff0c;以及地球与外部环境的相互作用等关键领域。近年来&#xff0c;地学可视化分析方法对多维时空交…...

docker 启动一个python环境的项目

安装镜像 docker pull python:3.8-slim8902端口 启动容器 tail -f /dev/null 持续监听空文件&#xff0c;保持容器活跃 docker run -it \-p 8902:8902 \--name api_mock2 \-v /home/py/test:/app \-w /app \python:3.8-slim \tail -f /dev/null进入容器 docker exec -it api…...

31-35【动手学深度学习】深度学习硬件

1. CPU和GPU 1.1 CPU CPU每秒钟计算的浮点运算数为0.15&#xff0c;GPU为12。GPU的显存很低&#xff0c;16GB&#xff08;可能32G封顶&#xff09;&#xff0c;CPU可以一直插内存。 左边是GPU&#xff08;只能做些很简单的游戏&#xff0c;视频处理&#xff09;&#xff0c;中…...

Linux问题排查-内存使用率高如何分析原因

以下是针对 Linux 系统内存使用率高的分步排查方法&#xff0c;结合用户进程占用、tmpfs 内存占用、内核内存泄漏和黑洞内存等特殊情况进行分析&#xff1a; 第一步&#xff1a;初步观察系统整体内存使用情况 1. 查看系统内存概况 命令&#xff1a;free -h 或 cat /proc/mem…...

SpringMVC2

一、springmvc 接收请求 类上、方法上 RequestMapping GetMapping PostMapping package com.hl.springmvc02.web; ​ import jdk.nashorn.internal.objects.annotations.Getter; import org.springframework.web.bind.annotation.*; ​ RestController RequestMapping(&qu…...

【每日一题丨2025年5.12~5.18】排序相关题

个人主页&#xff1a;Guiat 归属专栏&#xff1a;每日一题 文章目录 1. 【5.12】P1068 [NOIP 2009 普及组] 分数线划定2. 【5.13】P5143 攀爬者3. 【5.14】P12366 [蓝桥杯 2022 省 Python B] 数位排序4. 【5.15】P10901 [蓝桥杯 2024 省 C] 封闭图形个数5.【5.16】P12165 [蓝桥…...

ElasticSearch性能优化

ES基础概念介绍&#xff1a; 索引&#xff1a;类似于MySQL中的表&#xff0c;它是具有相同特征的一个数据集。文档&#xff1a;格式为JSON格式&#xff0c;类似于MySQL中的一条数据&#xff0c;它是数据存储的基本数据单元&#xff0c;每一条文档都有一个唯一的ID。查询&#x…...

Typora + PicGo + GitHub 配置图床——图片自动上传 详细教程

文章目录 一、创建 GitHub 仓库二、添加私人令牌三、下载 PicGo四、配置 PicGo五、测试 一、创建 GitHub 仓库 进入 Github 官网 注册一个属于自己的账号&#xff0c;点击创建仓库。 2. 创建自己的新仓库。仓库设置为公开&#xff0c;方便上传图片&#xff08;你设置私有也可以…...

QT+Visual Studio 配置开发环境教程

一、QT架构 Qt Creator 是一个轻量级、跨平台的 IDE&#xff0c;专为 Qt 开发量身打造&#xff0c;内置对 qmake/CMake 的深度支持、Kits 配置管理、原生 QML 调试器以及较低的资源占用维基百科。 而在 Windows 环境下&#xff0c;Visual Studio 配合 Qt VS Tools 扩展则可将 Q…...

缺乏经验的 PCB 过孔建模方法

您是一名背板设计人员,被指派设计一种新的高速、多千兆位串行链路架构,从多个线卡到背板上的多个交换矩阵交换卡。这些链路必须在第一天以 6GB/s 的速度运行,并且为 10GB/s (IEEE 802.3KR) 做好产品演进的准备。时间表很紧,您需要提出一个背板架构,以允许程序的其余部分…...

layui 介绍

layui&#xff08;谐音&#xff1a;类 UI) 是一套开源的 Web UI 解决方案&#xff0c;采用自身经典的模块化规范&#xff0c;并遵循原生 HTML/CSS/JS 的开发方式&#xff0c;极易上手&#xff0c;拿来即用。其风格简约轻盈&#xff0c;而组件优雅丰盈&#xff0c;从源代码到使用…...

【漫话机器学习系列】265.普拉托变换的相关问题(Issues With Platt Scaling)

Platt Scaling 的相关问题详解 | 模型校准中的隐患分析 在机器学习模型中&#xff0c;模型预测的“置信度”并不一定等于真实的概率。为了提高模型预测结果的可解释性和实用性&#xff0c;我们通常会使用一种后处理的概率校准方法——Platt Scaling&#xff08;普拉托变换&…...

【Linux高级全栈开发】2.2.1 Linux服务器百万并发实现2.2.2 Posix API与网络协议栈

【Linux高级全栈开发】2.2.1 Linux服务器百万并发实现2.2.2 Posix API与网络协议栈 高性能网络学习目录 基础内容&#xff08;两周完成&#xff09;&#xff1a; 2.1网络编程 2.1.1多路复用select/poll/epoll2.1.2事件驱动reactor2.1.3http服务器的实现 2.2网络原理 百万并发…...

LlamaIndex

1、大语言模型开发框架的价值是什么? SDK:Software Development Kit,它是一组软件工具和资源的集合,旨在帮助开发者创建、测试、部署和维护应用程序或软件。 所有开发框架(SDK)的核心价值,都是降低开发、维护成本。 大语言模型开发框架的价值,是让开发者可以更方便地…...

springboot使用xdoc-report包导出word

背景&#xff1a;项目需要使用xdoc-report.jar根据设置好的word模版&#xff0c;自动填入数据 导出word 框架使用 我的需求是我做一个模板然后往里面填充内容就导出我想要的word文件&#xff0c;问了下chatgpt还有百度&#xff0c;最后选用了xdocreport这个框架&#xff0c;主…...

leetcode 3356. 零数组变换 II 中等

给定一个长度为 n 的整数数组 nums 和一个二维数组 queries&#xff0c;其中 queries[i] [li, ri]。 对于每个查询 queries[i]&#xff1a; 在 nums 的下标范围 [li, ri] 内选择一个下标 子集。将选中的每个下标对应的元素值减 1。 零数组 是指所有元素都等于 0 的数组。 …...

重拾GMP

目录 GMP总结 线程协程三家对比GMP调度模型 mgp过一遍流程 g 一个G的生命周期 mpschedt全局队列g0视角看看G的调度流程 四大调度类型 主动调度被动调度正常调度抢占调度 宏观的调度流程上面流程的具体细节 schedule()findRunnable()execute()gosched_m()park_m()与ready()goe…...

实验分享|基于千眼狼sCMOS科学相机的流式细胞仪细胞核成像实验

实验背景 流式细胞仪与微流控技术&#xff0c;为细胞及细胞核成像提供新的路径。传统流式细胞仪在细胞核成像检测方面存在检测通量低&#xff0c;荧光信号微弱等局限&#xff0c;故某光学重点实验室开发一种基于高灵敏度sCMOS科学相机并集成在自组荧光显微镜的微流控细胞核成像…...

C++学习:六个月从基础到就业——C++11/14:其他语言特性

C学习&#xff1a;六个月从基础到就业——C11/14&#xff1a;其他语言特性 本文是我C学习之旅系列的第四十四篇技术文章&#xff0c;也是第三阶段"现代C特性"的第六篇&#xff0c;主要介绍C11/14中引入的其他重要语言特性。查看完整系列目录了解更多内容。 引言 在前…...

【Linux笔记】——线程池项目与线程安全单例模式

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;Linux &#x1f339;往期回顾&#x1f339;&#xff1a; 【Linux笔记】——简单实习一个日志项目 &#x1f516;流水不争&#xff0c;争的是滔滔不息 一、线程池设计二…...

数据驱动的社会舆情监测与分析——用算法洞察世界脉动

数据驱动的社会舆情监测与分析——用算法洞察世界脉动 在信息爆炸的时代,社会舆情的变化可以在极短时间内产生深远影响。从企业品牌到公共政策,社交媒体和新闻平台上的讨论能够直接影响决策者的策略制定。因此,数据驱动的舆情监测与分析 逐渐成为政府、企业以及社会机构的重…...

OD 算法题 B卷 【最佳植树距离】

文章目录 最佳植树距离 最佳植树距离 在直线的公路上种树&#xff0c;给定坑位数量和位置&#xff0c;及需要种多少棵树苗&#xff1b;树苗之间的最小距离是多少时&#xff0c;可以保证种的最均匀&#xff08;树苗之间的最小距离最大&#xff09;&#xff1b; 输入描述&#…...

ZooKeeper 原理解析及优劣比较

大家好&#xff0c;这里是架构资源栈&#xff01;点击上方关注&#xff0c;添加“星标”&#xff0c;一起学习大厂前沿架构&#xff01; 引言 在分布式系统中&#xff0c;服务注册、配置管理、分布式锁、选举等场景都需要一个高可用、一致性强的协调服务。Apache ZooKeeper 凭…...

实战5:个性化数字艺术生成与销售

盈利思路 数字艺术销售&#xff1a; 平台销售&#xff1a;将生成的数字艺术作品上传到像OpenSea、Foundation等NFT平台进行售卖。每一件独特的艺术品可以通过NFT技术保证其唯一性&#xff0c;吸引收藏家和投资者。 定价策略&#xff1a;根据作品的复杂度、创意性以及市场需求来…...

是德科技 | 单通道448G未来之路:PAM4? PAM6? PAM8?

内容来源&#xff1a;是德科技 随着数据中心规模的不断扩大以及AI大模型等技术的兴起&#xff0c;市场对高速、大容量数据传输的需求日益增长。例如&#xff0c;AI训练集群中GPU等设备之间的互联需要更高的传输速率来提升效率。在技术升级方面&#xff0c;SerDes技术的不断进步…...

OceanBase 开发者大会,拥抱 Data*AI 战略,构建 AI 数据底座

5 月 17 号以“当 SQL 遇见 AI”为主题的 OceanBase 开发者大会在广州举行&#xff0c;因为行程的原因未能现场参会&#xff0c;仍然通过视频直播观看了全部的演讲。总体来说&#xff0c;这届大会既有对未来数据库演进方向的展望&#xff0c;也有 OceanBase 新产品的发布&#…...

STM32IIC协议基础及Cube配置

STM32IIC协议基础及Cube配置 一&#xff0c;IC协议简介1&#xff0c;核心特点2&#xff0c;应用场景 二&#xff0c;IC协议基础概念1&#xff0c;总线结构2&#xff0c;主从架构3&#xff0c;设备寻址4&#xff0c;起始和停止条件5&#xff0c;数据传输6&#xff0c;应答机制 三…...