ML之shap:基于boston波士顿房价回归预测数据集利用shap值对XGBoost模型实现可解释性案例

 ML之shap:基于boston波士顿房价回归预测数据集利用shap值对XGBoost模型实现可解释性案例 

目录

基于boston波士顿房价回归预测数据集利用shap值对XGBoost模型实现可解释性案例

# 1、定义数据集

# 2、数据集预处理

# 4、基于XGBR模型实现shap值分析

# 4.1、模型建立并训练

# 4.2、基于模型本身输出特征重要性

# 4.3、局部独立图可视化某特征的变化如何影响模型的输出及该特征值的分布

# 4.4、利用Shap值解释XGBR模型

# 4.5、基于XGBoost模型实现Shap值可视化分析


相关文章
ML之shap:基于boston波士顿房价回归预测数据集利用shap值对XGBoost模型实现可解释性案例
ML之shap:基于boston波士顿房价回归预测数据集利用Shap值对LiR线性回归模型实现可解释性案例
ML之shap:基于boston波士顿房价回归预测数据集利用Shap值对LiR线性回归模型、XGBoost模型实现可解释性案例实现代码

基于boston波士顿房价回归预测数据集利用shap值对XGBoost模型实现可解释性案例

# 1、定义数据集

更新中……

# 2、数据集预处理

更新中……

# 4、基于XGBR模型实现shap值分析

# 4.1、模型建立并训练

# 4.2、基于模型本身输出特征重要性

XGBR_importance_dict: [('DIS', 57), ('RM', 42), ('LSTAT', 39), ('PTRATIO', 29), ('NOX', 28), ('TAX', 28), ('CRIM', 23), ('B', 15), ('AGE', 13), ('RAD', 8), ('INDUS', 8), ('CHAS', 4), ('ZN', 1)]

# 4.3、局部独立图可视化某特征的变化如何影响模型的输出及该特征值的分布

# 4.4、利用Shap值解释XGBR模型

# 4.5、基于XGBoost模型实现Shap值可视化分析

# (1)、利用局部独立图计算shap值

     

# (2)、某列样本值(特征值)、及其对应shap值散点图可视化

# (3)、对所有样本中每个特征计算shap平均绝对值/最大绝对值条形图可视化

# (4)、对所有样本中每个特征计算shap平均绝对值蜂群图可视化

# (5)、对所有样本中每个特征计算shap平均绝对值热图可视化

# (6)、基于cluste算法处理相关性的特征并可视化

### 使用XGBoost模型实现房价数据的可视化分析 #### 数据准备与加载 为了进行有效的可视化分析,首先需要准备好用于训练和测试的数据集。以Boston房价数据集为例,在Python环境中可以通过`sklearn.datasets`模块轻松获取该数据集[^1]。 ```python from sklearn import datasets import pandas as pd # 加载波士顿房价数据集 boston = datasets.load_boston() df = pd.DataFrame(boston.data, columns=boston.feature_names) df['PRICE'] = boston.target ``` #### 构建并训练XGBoost模型 完成数据预处理之后,下一步就是构建XGBoost回归模型,并对其进行训练。这里采用默认参数快速搭建一个基础版本的XGBoost模型[^3]。 ```python import xgboost as xgb from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error # 划分特征变量与目标变量 X = df.drop('PRICE', axis=1) y = df['PRICE'] # 将数据划分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=123) # 创建DMatrix对象供XGBoost使用 dtrain = xgb.DMatrix(X_train, label=y_train) dtest = xgb.DMatrix(X_test, label=y_test) # 设置初始参数 params = { 'objective': 'reg:squarederror', } # 训练模型 model = xgb.train(params=params, dtrain=dtrain, num_boost_round=100) ``` #### 可视化实际对比预测 通过绘制图表比较真实价格与预测价格之间的差异,能够直观地评估模型性能。此部分展示了如何创建散点图来展示两者的关系[^2]。 ```python import matplotlib.pyplot as plt import seaborn as sns # 获取预测结果 predictions = model.predict(dtest) # 绘制实际 vs 预测图形 plt.figure(figsize=(8, 6)) sns.scatterplot(x=y_test, y=predictions) line = range(int(min(y_test)), int(max(y_test)) + 1) plt.plot(line, line, color='red') # 对角线表示完美拟合情况 plt.xlabel('Actual Prices') plt.ylabel('Predicted Prices') plt.title('Actual Price VS Predicted Price') plt.show() ``` #### SHAP解释模型决策逻辑 除了基本的结果可视化外,还可以借助SHAP库进一步探索各个输入特征对于最终输出的影响程度。这有助于理解哪些因素最影响房屋定价以及它们是如何共同作用于模型预测中的。 ```python import shap explainer = shap.TreeExplainer(model) shap_values = explainer.shap_values(X_test) # 总览各特征的重要性 shap.summary_plot(shap_values, X_test, feature_names=X.columns.tolist(), plot_type="bar") # 局部依赖关系绘图 for name in ['RM', 'LSTAT']: # 这里选择了两个重要特征作为例子 shap.dependence_plot(name, shap_values, X_test, interaction_index=None, feature_names=X.columns.tolist()) ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个处女座的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值