知识点回顾:
1.官方文档的检索方式:github和官网
2.官方文档的阅读和使用:要求安装的包和文档为同一个版本
3.类的关注点:
实例化所需要的参数
普通方法所需要的参数
普通方法的返回值
4.绘图的理解:对底层库的调用
作业:参考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)
# 首先要确保库的版本是最新的,因为我们看的是最新的文档,库的版本可以在github上查看
import pdpbox
print(pdpbox.__version__) # pdpbox版本0.3.0
# 导入这个类
from pdpbox.info_plots import InteractPredictPlot # 导入InteractPredictPlot类
# 确保 X_test 是 pandas DataFrame 类型,并且是一个独立的副本
import pandas as pd
if not isinstance(X_test, pd.DataFrame):
X_test = pd.DataFrame(X_test)
else:
X_test = X_test.copy()
# 打印 X_test 的类型和基本信息
print(f"X_test 类型: {type(X_test)}")
X_test.info()
# 选择要分析的两个特征
selected_features = ['sepal length (cm)', 'sepal width (cm)']
feature_names = ['花萼长度', '花萼宽度']
# 实例化 InteractPredictPlot 类
target_plot = InteractPredictPlot(
df=X_test,
features=selected_features,
feature_names=feature_names,
model=model,
model_features=features,
n_classes=3 # 鸢尾花数据集有 3 个类别
)
# 调用 plot 方法绘制可视化图形
fig, axes, summary_df = target_plot.plot(
which_classes=None, # 绘制所有类别
show_percentile=True, # 显示百分位线
engine='plotly',
template='plotly_white'
)
# 可以根据需要调整图形布局
fig.update_layout(
width=1200,
height=800,
title=dict(text=f'交互预测图: {", ".join(feature_names)}', x=0.5)
)
# 显示图形
fig.show()