@@ -31,6 +31,24 @@ def data_aug(X, y, sample_multi=5, feature_multi=5):
3131
3232 return X_list , y_list
3333
34+ def model (para , X , y ):
35+ model = DecisionTreeClassifier (
36+ max_depth = para ["max_depth" ],
37+ min_samples_split = para ["min_samples_split" ],
38+ min_samples_leaf = para ["min_samples_leaf" ],
39+ )
40+ scores = cross_val_score (model , X , y , cv = 3 )
41+
42+ return scores .mean ()
43+
44+ search_config_model = {
45+ model : {
46+ "max_depth" : range (2 , 50 ),
47+ "min_samples_split" : range (2 , 50 ),
48+ "min_samples_leaf" : range (1 , 50 ),
49+ }
50+ }
51+
3452
3553def meta_opt (para , X_list , y_list ):
3654 scores = []
@@ -39,46 +57,30 @@ def meta_opt(para, X_list, y_list):
3957 X_list , y_list = data_aug (X , y , sample_multi = 3 , feature_multi = 3 )
4058
4159 for X , y in zip (X_list , y_list ):
42- def model (para , X , y ):
43- model = DecisionTreeClassifier (
44- max_depth = para ["max_depth" ],
45- min_samples_split = para ["min_samples_split" ],
46- min_samples_leaf = para ["min_samples_leaf" ],
60+
61+ for n_iter in [10 , 25 , 50 , 100 ]:
62+ opt = Hyperactive (
63+ search_config_model ,
64+ optimizer = {
65+ "ParticleSwarm" : {"inertia" : para ["inertia" ], "cognitive_weight" : para ["cognitive_weight" ], "social_weight" : para ["social_weight" ]}
66+ },
67+ n_iter = n_iter ,
68+ verbosity = None ,
4769 )
48- scores = cross_val_score (model , X , y , cv = 3 )
49-
50- return scores .mean ()
51-
52- search_config = {
53- model : {
54- "max_depth" : range (2 , 50 ),
55- "min_samples_split" : range (2 , 50 ),
56- "min_samples_leaf" : range (1 , 50 ),
57- }
58- }
59-
60- opt = Hyperactive (
61- search_config ,
62- optimizer = {
63- "ParticleSwarm" : {"inertia" : para ["inertia" ], "cognitive_weight" : para ["cognitive_weight" ], "social_weight" : para ["social_weight" ]}
64- },
65- n_iter = 30 ,
66- verbosity = None ,
67- )
68- opt .search (X , y )
69- score = opt .score_best
70- scores .append (score )
70+ opt .search (X , y )
71+ score = opt .score_best
72+ scores .append (score )
7173
7274 return np .array (scores ).mean ()
7375
7476
75- search_config = {
77+ search_config_meta = {
7678 meta_opt : {
7779 "inertia" : np .arange (0 , 1 , 0.01 ),
7880 "cognitive_weight" : np .arange (0 , 1 , 0.01 ),
7981 "social_weight" : np .arange (0 , 1 , 0.01 ),
8082 }
8183}
8284
83- opt = Hyperactive (search_config , optimizer = "Bayesian" , n_iter = 30 )
85+ opt = Hyperactive (search_config_meta , optimizer = "Bayesian" , n_iter = 30 )
8486opt .search (X_list , y_list )
0 commit comments