def build(self, dataset):
evaluators = []
cv = 5 # todo: have to adjust to dataset size
if self.field_manager.target.is_categorizable():
parameter_candidates = [
{"kernel": ["linear"], "C": [1, 10, 100]},
{"kernel": ["rbf"], "gamma": [1e-1, 1e-2, 1e-3, 1e-4], "C": [1, 10, 100]}
]
# todo: have to think about scoring parameter (default is accuracy, so f1 related score may be appropriate)
evaluator = GridSearchCV(
SVC(C=1),
parameter_candidates,
cv=cv
)
evaluators.append(evaluator)
else:
evaluator1 = GridSearchCV(
linear_model.ElasticNet(),
{"alpha": [0.1, 0.5, 0.7, 1], "l1_ratio": [(r + 1) / 10 for r in range(10)]},
cv=cv
)
parameter_candidates = [
{"kernel": ["rbf"], "gamma": [1e-3, 1e-4], "C": [1, 10, 100]}
]
# todo: have to think about scoring parameter (default is accuracy, so f1 related score may be appropriate)
evaluator2 = GridSearchCV(
SVR(C=1),
parameter_candidates,
cv=cv
)
evaluators.append(evaluator1)
evaluators.append(evaluator2)
self.model_score = 0
self.model = None
for e in evaluators:
e.fit(dataset.data, dataset.target)
if e.best_score_ > self.model_score:
self.model_score = e.best_score_
self.model = e.best_estimator_
评论列表
文章目录