meta_learning.model()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 6
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nop 1
dl 0
loc 6
rs 10
c 0
b 0
f 0
1
import random
2
import numpy as pd
3
import pandas as pd
4
5
from sklearn.datasets import load_iris
6
from sklearn.datasets import make_classification
7
from sklearn.neighbors import KNeighborsClassifier
8
from sklearn.ensemble import GradientBoostingRegressor
9
from sklearn.model_selection import cross_val_score
10
11
from hyperactive import Hyperactive
12
13
14
def model(opt):
15
    knr = KNeighborsClassifier(n_neighbors=opt["n_neighbors"])
16
    scores = cross_val_score(knr, X, y, cv=5)
0 ignored issues
show
introduced by
The variable y does not seem to be defined in case the for loop on line 29 is not entered. Are you sure this can never be the case?
Loading history...
introduced by
The variable X does not seem to be defined in case the for loop on line 29 is not entered. Are you sure this can never be the case?
Loading history...
17
    score = scores.mean()
18
19
    return score
20
21
22
search_space = {
23
    "n_neighbors": list(range(1, 80)),
24
}
25
26
27
search_data_list = []
28
29
for i in range(25):
30
    n_samples = random.randint(100, 1000)
31
    n_features = random.randint(3, 20)
32
    n_informative = n_features - random.randint(0, n_features - 2)
33
34
    X, y = make_classification(
35
        n_samples=n_samples,
36
        n_classes=2,
37
        n_features=n_features,
38
        n_informative=n_informative,
39
        n_redundant=0,
40
        random_state=i,
41
    )
42
43
    hyper = Hyperactive(verbosity=False)
44
    hyper.add_search(model, search_space, n_iter=10)
45
    hyper.run()
46
47
    search_data = hyper.search_data(model)
48
49
    search_data["size_X"] = X.size
50
    search_data["itemsize_X"] = X.itemsize
51
    search_data["ndim_X"] = X.ndim
52
53
    search_data["size_y"] = y.size
54
    search_data["itemsize_y"] = y.itemsize
55
    search_data["ndim_y"] = y.ndim
56
57
    search_data_list.append(search_data)
58
59
60
meta_data = pd.concat(search_data_list)
61
62
X_meta = meta_data.drop(["score"], axis=1)
63
y_meta = meta_data["score"]
64
65
66
gbr = GradientBoostingRegressor()
67
gbr.fit(X_meta, y_meta)
68
69
data = load_iris()
70
X_new, y_new = data.data, data.target
71
72
X_meta_test = pd.DataFrame(range(1, 100), columns=["n_neighbors"])
73
74
X_meta_test["size_X"] = X_new.size
75
X_meta_test["itemsize_X"] = X_new.itemsize
76
X_meta_test["ndim_X"] = X_new.ndim
77
78
X_meta_test["size_y"] = y_new.size
79
X_meta_test["itemsize_y"] = y_new.itemsize
80
X_meta_test["ndim_y"] = y_new.ndim
81
82
83
y_meta_pred = gbr.predict(X_meta_test)
84
85
y_meta_pred_max_idx = y_meta_pred.argmax()
86
n_neighbors_best = search_space["n_neighbors"][y_meta_pred_max_idx]
87
88
hyper = Hyperactive()
89
hyper.add_search(model, search_space, n_iter=200)
90
hyper.run()
91