优化SHAP主效应图拟合曲线与交点标注直观展示特征影响变化与趋势

背景

SHAP主效应值,即该特征在独立作用时对模型预测的贡献,这种方式剥离了交互效应的影响,更加直观地展现了主效应的变化趋势,为分析特征的独立作用提供了清晰的视角,有助于更深入地理解模型的特征行为,详情参考文章——期刊配图:SHAP主效应图绘制解释单个特征在独立作用时对模型预测的贡献

然而,仅仅展示主效应值的分布还不够直观。拟合曲线的引入,基于LOWESS(局部加权回归)的平滑曲线【当然其它拟合方法也可以,这里参考的是以下shap依赖图绘制的文章,也是往期文章——文献复现——优化SHAP依赖图拟合曲线与交点标注的新应用】,可以更好地捕捉主效应的全局趋势,揭示模型对特征的敏感性变化。同时,交点标注则进一步突出关键点——即SHAP值为0的位置,这些交点反映特征从正向影响到负向影响的临界点,为在特征影响变化与趋势提供参考

图片

代码实现

模型构建

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt 
import warnings
warnings.filterwarnings("ignore")

plt.rcParams['font.family'] = 'Times New Roman'
plt.rcParams['axes.unicode_minus'] = False
df = pd.read_excel('2024-12-17-公众号Python机器学习AI.xlsx')
from sklearn.model_selection import train_test_split, KFold

X = df.drop(['Y'],axis=1)
y = df['Y']

# 划分训练集和测试集
X_temp, X_test, y_temp, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 然后将训练集进一步划分为训练集和验证集
X_train, X_val, y_train, y_val = train_test_split(X_temp, y_temp, test_size=0.125, random_state=42)  # 0.125 x 0.8 = 0.1

import optuna  
from xgboost import XGBRegressor  
from sklearn.metrics import mean_squared_error
def objective(trial):
    params = {
        'n_estimators': trial.suggest_categorical('n_estimators', [50, 100, 200, 300]), 
        'max_depth': trial.suggest_int('max_depth', 3, 15, step=1), 
        'learning_rate': trial.suggest_loguniform('learning_rate', 0.01, 0.3), 
        'subsample': trial.suggest_uniform('subsample', 0.5, 1.0), 
        'colsample_bytree': trial.suggest_uniform('colsample_bytree', 0.5, 1.0),
        'gamma': trial.suggest_uniform('gamma', 0, 5)
    }

    model = XGBRegressor(**params, random_state=42)
    model.fit(X_train, y_train)
    y_pred = model.predict(X_val)
    return mean_square
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Python机器学习AI

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

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

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

打赏作者

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

抵扣说明:

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

余额充值