创建和训练一个 XGBoost 分类模型,并评估其在训练集和测试集上的性能。
1. 导入 XGBoost
import xgboost as xgb
XGBoost 是一种强大的梯度提升算法,用于处理分类和回归任务,尤其适合大规模数据和复杂特征。
2. 创建模型实例
xgb_clf = xgb.XGBClassifier(...)
这里创建了一个 XGBoost 分类器对象,配置了超参数。以下是各超参数的含义:
objective='binary:logistic'
:目标是二分类任务,使用逻辑回归作为输出。booster='gbtree'
:使用基于树的提升方法。n_estimators=284
:树的数量,表示迭代次数。max_depth=2
:每棵树的最大深度,防止过拟合。reg_alpha=0.071
:L1 正则化参数,控制模型的稀疏性,越大越严格。min_child_weight=0.217
:每个叶节点的最小样本权重,防止过拟合。colsample_bynode=0.265
:每棵树的列采样率,指定每次分裂使用的特征比例。subsample=0.268
:每棵树的样本采样比例。learning_rate=0.062
:学习率,控制每棵树对最终预测的贡献。use_label_encoder=False
:禁用 XGBoost 的标签编码(从 1.3 版开始默认启用)。scale_pos_weight=0.463
:类别权重,用于处理类别不平衡问题。
3. 训练模型
xgb_clf = xgb_clf.fit(X_train, y_train)
- 将训练集特征 XtrainX_{\text{train}}Xtrain 和目标变量 ytrainy_{\text{train}}ytrain 输入到模型中,完成训练。
- 训练过程:XGBoost 会逐步构建多棵决策树,并优化损失函数(如逻辑损失)来提升模型性能
performance_clf(xgb_clf, X_train, y_train, metrics_name='train')
performance_clf(xgb_clf, X_test, y_test, metrics_name='test')
- 使用自定义的
performance_clf
函数,评估模型在训练集和测试集上的性能。 - 参数:
metrics_name='train'
或metrics_name='test'
:区分在训练集和测试集上的评估。X_train, y_train
和X_test, y_test
:分别为训练集和测试集数据