机器学习-XGBoost和SHAP解析数据

一、引言

在机器学习领域,XGBoost 表现出色,具有高效性、准确性、灵活性和良好的防过拟合能力。高效性使其能快速处理大规模复杂数据,降低训练时间成本。通过组合弱学习器提高准确性和泛化能力。其支持多种任务和自定义指标,参数调优选项丰富。内置正则化机制防止过拟合。同时,SHAP 对模型解释起关键作用,能计算特征的 SHAP 值来明确特征对预测结果的贡献,帮助理解模型决策。

二、数据准备和模型训练

1. 导入所需库

为后续的工作准备好所需的工具,我们需要引入如 numpy 、pandas 用于数据处理,xgboost 用于模型构建,用于模型解释的shap,用于可视化的seaborn和matplotlib,以及 sklearn 中的一些模块用于数据划分、评估指标计算等。

from sklearn.datasets import load_irisimport pandas as pdfrom sklearn.model_selection import train_test_splitimport xgboost as xgbfrom sklearn.metrics import classification_report, confusion_matriximport seaborn as snsimport matplotlib.pyplot as pltimport shap

2. 加载数据集并划分

首先加载了鸢尾花数据集。然后将数据集的数据部分转换为 DataFrame 格式,并添加了目标列 target 。接着,分别定义了特征 X 和目标 y ,其中 X 是去除了 target 列的数据集,y 就是 target 列。之后,对数据集进行了两次划分。第一次将数据集按照 7:3 的比例划分为临时训练集 X_temp 、测试集 X_test 、临时训练集对应的目标 y_temp 和测试集对应的目标 y_test ,并根据 y 的分布进行分层抽样。第二次将临时训练集按照 8:2 的比例进一步划分为训练集 X_train 、验证集 X_val 、临时训练集对应的目标 y_temp 划分出的训练集目标 y_train 和验证集目标 y_val ,同样根据 y_temp 的分布进行分层抽样。这样的划分有助于在模型训练中分别进行训练、验证和最终测试,以评估模型的性能和泛化能力。例如,在训练模型时,可以使用 X_train 和 y_train ,在验证模型时使用 X_val 和 y_val ,在最终评估模型效果时使用 X_test 和 y_test 。

# 加载鸢尾花数据集iris = load_iris()iris_df = pd.DataFrame(data=iris.data, columns=iris.feature_names)iris_df['target'] = iris.targetX = iris_df.drop(['target'], axis=1)y = iris_df['target']
# 数据集划分X_temp, X_test, y_temp, y_test = train_test_split(X, y, test_size=0.3, random_state=42, stratify=y)X_train, X_val, y_train, y_

你可能感兴趣的:(机器学习,人工智能,数据分析,python)