在XGBoost中使用随机搜索和网格搜索对所有数据进行超参数调整的代码
时间: 2024-01-22 10:19:54 浏览: 100
随机搜索 超参数调节
以下是在XGBoost中使用随机搜索和网格搜索对所有数据进行超参数调整的代码:
```python
import xgboost as xgb
from sklearn.model_selection import RandomizedSearchCV, GridSearchCV
from scipy.stats import uniform
# Load data
X, y = ...
# Define parameter grid for grid search
param_grid = {
'max_depth': [3, 5, 7],
'learning_rate': [0.1, 0.01, 0.001],
'n_estimators': [100, 500, 1000],
'gamma': [0, 0.1, 0.01],
'subsample': [0.8, 0.9, 1],
'colsample_bytree': [0.8, 0.9, 1]
}
# Define parameter distribution for random search
param_dist = {
'max_depth': [3, 5, 7],
'learning_rate': uniform(loc=0.001, scale=0.1),
'n_estimators': [100, 500, 1000],
'gamma': uniform(loc=0, scale=0.1),
'subsample': uniform(loc=0.8, scale=0.2),
'colsample_bytree': uniform(loc=0.8, scale=0.2)
}
# Define XGBoost model
xgb_model = xgb.XGBRegressor()
# Perform grid search
grid_search = GridSearchCV(estimator=xgb_model, param_grid=param_grid, cv=5, n_jobs=-1)
grid_search.fit(X, y)
# Print best parameters and score
print("Best parameters: ", grid_search.best_params_)
print("Best score: ", grid_search.best_score_)
# Perform random search
random_search = RandomizedSearchCV(estimator=xgb_model, param_distributions=param_dist, cv=5, n_jobs=-1)
random_search.fit(X, y)
# Print best parameters and score
print("Best parameters: ", random_search.best_params_)
print("Best score: ", random_search.best_score_)
```
首先,我们加载数据。然后,我们定义了一个参数网格和参数分布,用于网格搜索和随机搜索。然后,我们定义了XGBoost模型,并使用GridSearchCV和RandomizedSearchCV执行网格搜索和随机搜索。最后,我们打印出最佳参数和分数。
在这个示例中,我们使用了几个常见的参数,但可以根据需要进行调整。请注意,这些搜索可能需要一段时间来运行,具体取决于数据集的大小和所选择的参数范围。
阅读全文