XGBoost 五拆交叉验证代码 AUC
时间: 2024-08-16 17:08:40 浏览: 57
Xgboost案例源代码.zip
XGBoost 是一款高效的梯度提升决策树库,常用于机器学习竞赛和工业界的数据建模。交叉验证是一种评估模型性能的方法,特别是对于AUC(Area Under the Curve,曲线下面积),它衡量的是分类模型预测概率分布和真实标签之间的重叠程度。
以下是使用XGBoost进行五折交叉验证并计算AUC的一段Python示例代码:
```python
import xgboost as xgb
from sklearn.model_selection import KFold
from sklearn.metrics import roc_auc_score
# 假设你已经有了预处理好的数据 X_train, y_train 和特征列名 feat_names
X = X_train
y = y_train
# 创建一个KFold实例,这里设定5折
kfold = KFold(n_splits=5, shuffle=True)
# 初始化AUC总和
all_auc = 0
# 对于每一次训练集和验证集的划分
for train_index, val_index in kfold.split(X):
X_train, X_val = X[train_index], X[val_index]
y_train, y_val = y[train_index], y[val_index]
# 使用XGBClassifier,并指定交叉验证
model = xgb.XGBClassifier()
model.fit(X_train, y_train, eval_set=[(X_val, y_val)], early_stopping_rounds=10, eval_metric='auc')
# 预测验证集并获取AUC分数
y_pred_proba = model.predict_proba(X_val)[:, 1] # 假设二分类问题,索引1对应正类概率
auc = roc_auc_score(y_val, y_pred_proba)
all_auc += auc
# 计算平均AUC值
avg_auc = all_auc / kfold.n_splits
print(f"Cross-validation AUC: {avg_auc}")
```
在这个例子中,我们对数据进行了五次分割,每次训练模型并在验证集上评估其AUC,最后取平均得到最终的交叉验证AUC值。
阅读全文