利用GridSearchCV,以测试集AUC为评价标准对XGBoost模型调参,并输出测试集AUC、训练集AUC、测试集f1_score、训练集f1_score
时间: 2024-02-05 22:05:01 浏览: 86
好的,那么我将为您提供一份示例代码,该代码利用GridSearchCV对XGBoost模型进行调参,并输出测试集AUC、训练集AUC、测试集f1_score、训练集f1_score。请您参考以下代码:
```python
# 导入所需的库和数据
import pandas as pd
import numpy as np
from xgboost import XGBClassifier
from sklearn.model_selection import GridSearchCV, train_test_split
from sklearn.metrics import roc_auc_score, f1_score
from sklearn.datasets import make_classification
# 生成样本数据
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=0, random_state=42)
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 定义XGBoost分类器模型
xgb_model = XGBClassifier()
# 定义需要调整的超参数和其取值范围
param_grid = {
'max_depth': [3, 4, 5],
'learning_rate': [0.1, 0.01, 0.001],
'n_estimators': [100, 200, 300]
}
# 定义GridSearchCV对象
grid_search = GridSearchCV(xgb_model, param_grid=param_grid, scoring='roc_auc', cv=5, n_jobs=-1)
# 运行GridSearchCV对象,得到最优的超参数
grid_search.fit(X_train, y_train)
best_params = grid_search.best_params_
# 根据最优的超参数重新定义XGBoost分类器模型
xgb_model = XGBClassifier(**best_params)
# 训练模型
xgb_model.fit(X_train, y_train)
# 计算训练集和测试集的AUC和f1_score
train_auc = roc_auc_score(y_train, xgb_model.predict_proba(X_train)[:, 1])
test_auc = roc_auc_score(y_test, xgb_model.predict_proba(X_test)[:, 1])
train_f1 = f1_score(y_train, xgb_model.predict(X_train))
test_f1 = f1_score(y_test, xgb_model.predict(X_test))
# 输出训练集和测试集的AUC和f1_score
print("Training AUC: {:.4f}".format(train_auc))
print("Testing AUC: {:.4f}".format(test_auc))
print("Training f1_score: {:.4f}".format(train_f1))
print("Testing f1_score: {:.4f}".format(test_f1))
```
在上面的代码中,我们首先生成了一个样本数据,并利用train_test_split函数将其划分为训练集和测试集。然后,我们定义了XGBoost分类器模型和需要调整的超参数及其取值范围。接着,我们定义了一个GridSearchCV对象,指定了需要调整的超参数、分类器模型、评价指标和交叉验证数,并运行了GridSearchCV对象。然后,我们根据最优的超参数重新定义XGBoost分类器模型,并使用训练集训练模型。最后,我们计算了训练集和测试集的AUC和f1_score,并输出了这些指标的值。
希望这个回答能够帮助到您!
阅读全文