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

day32 python解释性库PDPbox

目录

一、初识PDPbox官方文档

二、准备鸢尾花数据集和训练模型

三、使用PDPbox进行解释性分析

1. 导入类并实例化对象

2. 调用plot方法绘制图形

3. 探索返回值的意义

四、总结与感悟


作为一名正在学习机器学习的学生,今天要学习一个非常有趣的库——PDPbox(Partial Dependence Plot Toolbox)。这个库能够帮助我们可视化特征对模型预测的影响,让我们更好地理解模型的决策过程。今天,我将通过一个经典的鸢尾花数据集三分类项目,分享我是如何从PDPbox的官方文档入手,一步步完成特征影响的可视化分析的。

一、初识PDPbox官方文档

在探索新的Python库时,我总是会先去查看它的官方文档。PDPbox的官方文档 PDPbox — PDPbox 0.2.1+1.g7fae76b.dirty documentation 给了我很大的帮助。虽然我还在努力提升英语水平,但通过安装一个免费的网页翻译插件,我能够比较顺畅地阅读文档内容。

我发现,大多数Python库的官方文档都会有一个“API Reference”或“Documentation”部分,这里详细列出了所有可用的函数、类和方法。PDPbox库虽然不大,但对于我这样的新手来说,正好合适用来学习如何使用官方文档来掌握一个库的用法。

二、准备鸢尾花数据集和训练模型

在开始使用PDPbox之前,我先准备了一个经典的机器学习项目——鸢尾花数据集的三分类问题。这个数据集包含4个特征:花萼长度、花萼宽度、花瓣长度和花瓣宽度。我使用了sklearn库来加载数据集,并用RandomForestClassifier训练了一个模型。以下是代码示例:

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)

三、使用PDPbox进行解释性分析

模型训练完成后,我迫不及待地打开了PDPbox的官方文档,寻找可以用来可视化特征影响的类和方法。我发现了一个叫TargetPlot的类,它看起来很适合用来绘制目标变量在不同特征值下的分布情况。

1. 导入类并实例化对象

根据官方文档的说明,我首先导入了TargetPlot类,并尝试实例化对象。在这个过程中,我遇到了一个SettingWithCopyWarning的警告,提示我可能在对DataFrame的切片进行赋值操作时出现了问题。我查阅了Pandas的官方文档 Indexing and selecting data — pandas 2.2.3 documentation,了解到这可能是因为我在操作数据时没有正确使用.loc方法。以下是代码示例:

import pdpbox
print(pdpbox.__version__)  # 确保版本是最新的from pdpbox.info_plots import TargetPlot  # 导入TargetPlot类# 选择待分析的特征
feature = 'petal length (cm)'
feature_name = feature  # 特征显示名称# 初始化TargetPlot对象
target_plot = TargetPlot(df=df,  # 原始数据(需包含特征和目标列)feature=feature,  # 目标特征列feature_name=feature_name,  # 特征名称(用于绘图标签)target='target',  # 多分类目标索引(鸢尾花3个类别)grid_type='percentile',  # 分桶方式:百分位num_grid_points=10  # 划分为10个桶
)

2. 调用plot方法绘制图形

实例化对象后,我调用了plot方法来绘制目标变量的分布图。我发现这个方法返回了一个三元组(fig, axes, summary_df),其中fig是Plotly的Figure对象,axes是绘图的坐标轴对象(在这个例子中返回的是None),而summary_df是一个DataFrame,包含了目标变量在不同特征区间的统计摘要。以下是代码示例:

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()

3. 探索返回值的意义

在绘制完图形后,我开始好奇plot方法返回的三元组(fig, axes, summary_df)究竟是什么。通过查阅官方文档,我了解到fig是可以用来进一步修改图表外观的Plotly Figure对象,summary_df则是包含了目标变量在不同特征区间的统计摘要数据。这些信息让我对特征如何影响目标变量有了更直观的理解。

四、总结与感悟

通过今天的实践,我不仅学会了如何使用PDPbox的TargetPlot类来可视化特征对目标变量的影响,还掌握了如何通过官方文档来探索和使用新的Python库。

@浙大疏锦行

相关文章:

  • 差分数组 - 对区间内元素的统一操作
  • Coze工作流-选择器的用法
  • LangChain入门和应用#1
  • COMPUTEX 2025 | 广和通5G AI MiFi解决方案助力移动宽带终端迈向AI新未来
  • 【java第19集】java面向对象编程详解
  • k8s-NetworkPolicy
  • Datawhale 5月llm-universe 第4次笔记
  • 【题解-洛谷】P6180 [USACO15DEC] Breed Counting S
  • docker面试题(4)
  • Win11上安装docker
  • 深度学习+Flask 打包一个AI模型接口并部署上线
  • 系统架构设计师案例分析题——数据库缓存篇
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.4.9)
  • 第14天-Matplotlib实现数据可视化
  • 计算机视觉与深度学习 | Python实现CEEMDAN-ABC-VMD-DBO-CNN-LSTM时间序列预测(完整源码和数据)
  • 考取AZ-305 认证的心得
  • docker中使用openresty
  • 企业级数据加密权威方案:从 AES-CBC 到 AES-GCM 的升级实践
  • HJ23 删除字符串中出现次数最少的字符【牛客网】
  • 【项目】SpringBoot +MybatisPlus集成多数据源
  • 对话生态学者:如果地球重启,人类会被“格式化”吗?|涟漪效应
  • 浙江台州女厅官林虹被决定逮捕,曾因直播带货广受关注
  • 失智老人有两个儿子却欠费住养老院两年多,法检合力指定监护人
  • 又有明星分析师晋升管理层:“白金分析师”武超则已任中信建投证券党委委员
  • 李公明 | 一周画记:德里达哲学还是接地气的
  • 家庭医生可提前5天预约三甲医院号源,上海常住人口签约率达45%,