1
|
|
|
from sklearn.model_selection import cross_val_score |
2
|
|
|
from lightgbm import LGBMRegressor |
3
|
|
|
from sklearn.datasets import load_breast_cancer |
4
|
|
|
from hyperactive import Hyperactive |
5
|
|
|
|
6
|
|
|
data = load_breast_cancer() |
7
|
|
|
X, y = data.data, data.target |
8
|
|
|
|
9
|
|
|
|
10
|
|
|
def model(para, X_train, y_train): |
11
|
|
|
model = LGBMRegressor( |
12
|
|
|
num_leaves=para["num_leaves"], |
13
|
|
|
bagging_freq=para["bagging_freq"], |
14
|
|
|
learning_rate=para["learning_rate"], |
15
|
|
|
) |
16
|
|
|
scores = cross_val_score(model, X_train, y_train, cv=3) |
17
|
|
|
|
18
|
|
|
return scores.mean(), model |
19
|
|
|
|
20
|
|
|
|
21
|
|
|
# this defines the model and hyperparameter search space |
22
|
|
|
search_config = { |
23
|
|
|
model: { |
24
|
|
|
"num_leaves": range(2, 20), |
25
|
|
|
"bagging_freq": range(2, 12), |
26
|
|
|
"learning_rate": [1e-3, 1e-2, 1e-1, 0.5, 1.0], |
27
|
|
|
} |
28
|
|
|
} |
29
|
|
|
|
30
|
|
|
|
31
|
|
|
opt = Hyperactive(search_config, n_iter=100, n_jobs=2) |
32
|
|
|
|
33
|
|
|
# search best hyperparameter for given data |
34
|
|
|
opt.fit(X, y) |
35
|
|
|
|