Completed
Push — master ( b9a0a2...54ed88 )
by Simon
05:27
created

sklearn_LogisticRegression   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 1
eloc 29
dl 0
loc 43
rs 10
c 0
b 0
f 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A model() 0 12 1
1
from sklearn.datasets import load_iris
2
from sklearn.model_selection import cross_val_score
3
from sklearn.linear_model import LogisticRegression
4
5
from hyperactive import Hyperactive
6
7
iris_data = load_iris()
8
X = iris_data.data
9
y = iris_data.target
10
11
12
def model(para, X_train, y_train):
13
    model = LogisticRegression(
14
        C=para["C"],
15
        dual=para["dual"],
16
        penalty=para["penalty"],
17
        solver=para["solver"],
18
        multi_class=para["multi_class"],
19
        max_iter=para["max_iter"],
20
    )
21
    scores = cross_val_score(model, X_train, y_train, cv=3)
22
23
    return scores.mean(), model
24
25
26
# this defines the model and hyperparameter search space
27
search_config = {
28
    model: {
29
        "penalty": ["l1", "l2"],
30
        "C": [1e-4, 1e-3, 1e-2, 1e-1, 0.5, 1.0, 5.0, 10.0, 15.0, 20.0, 25.0],
31
        "dual": [False],
32
        "solver": ["liblinear"],
33
        "multi_class": ["auto", "ovr"],
34
        "max_iter": range(300, 1000, 10),
35
    }
36
}
37
38
39
opt = Hyperactive(search_config, n_iter=100, n_jobs=2)
40
41
# search best hyperparameter for given data
42
opt.fit(X, y)
43