jupyter notebook中GBM调参
时间: 2023-11-16 12:07:51 浏览: 70
以下是在Jupyter Notebook中使用LightGBM进行调参的步骤:
1.导入必要的库和数据集
```python
import lightgbm as lgb
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
data = load_breast_cancer()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)
```
2.将数据集转换为LightGBM的数据格式
```python
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test)
```
3.设置参数空间并进行调参
```python
from hyperopt import fmin, tpe, hp, STATUS_OK, Trials
space = {
'max_depth': hp.quniform('max_depth', 2, 10, 1),
'learning_rate': hp.loguniform('learning_rate', -5, 0),
'n_estimators': hp.quniform('n_estimators', 50, 500, 1),
'subsample': hp.uniform('subsample', 0.1, 1),
'colsample_bytree': hp.uniform('colsample_bytree', 0.1, 1),
'reg_alpha': hp.uniform('reg_alpha', 0, 1),
'reg_lambda': hp.uniform('reg_lambda', 0, 1),
'min_child_weight': hp.quniform('min_child_weight', 1, 10, 1),
'objective': 'binary',
'boosting_type': 'gbdt',
'metric': 'binary_logloss',
'num_threads': 4,
'verbose': -1
}
def objective(params):
model = lgb.train(params, train_data, valid_sets=[test_data], num_boost_round=1000, early_stopping_rounds=50, verbose_eval=False)
score = model.best_score['valid_0']['binary_logloss']
return {'loss': score, 'status': STATUS_OK}
trials = Trials()
best = fmin(fn=objective, space=space, algo=tpe.suggest, max_evals=100, trials=trials)
```
4.输出最佳参数
```python
print(best)
```
阅读全文