Hyperopt调整参数被卡住 [英] Hyperopt tuning parameters get stuck
问题描述
我正在测试使用hyperopt库调整SVM的参数. 通常,当我执行此代码时,进度条停止并且代码被卡住. 我不明白为什么.
I'm testing to tune parameters of SVM with hyperopt library. Often, when i execute this code, the progress bar stop and the code get stuck. I do not understand why.
这是我的代码:
from hyperopt import fmin, tpe, hp, STATUS_OK, Trials
X_train = normalize(X_train)
def hyperopt_train_test(params):
if 'decision_function_shape' in params:
if params['decision_function_shape'] == "ovo":
params['break_ties'] = False
clf = svm.SVC(**params)
y_pred = clf.fit(X_train, y_train).predict(X_test)
return precision_recall_fscore_support(y_test, y_pred, average='macro')[0]
space4svm = {
'C': hp.uniform('C', 0, 20),
'kernel': hp.choice('kernel', ['linear', 'sigmoid', 'poly', 'rbf']),
'degree': hp.uniform('degree', 10, 30),
'gamma': hp.uniform('gamma', 10, 30),
'coef0': hp.uniform('coef0', 15, 30),
'shrinking': hp.choice('shrinking', [True, False]),
'probability': hp.choice('probability', [True, False]),
'tol': hp.uniform('tol', 0, 3),
'decision_function_shape': hp.choice('decision_function_shape', ['ovo', 'ovr']),
'break_ties': hp.choice('break_ties', [True, False])
}
def f(params):
print(params)
precision = hyperopt_train_test(params)
return {'loss': -precision, 'status': STATUS_OK}
trials = Trials()
best = fmin(f, space4svm, algo=tpe.suggest, max_evals=35, trials=trials)
print('best:')
print(best)
推荐答案
我建议限制参数的空间,看看是否可行.将probability
参数固定为False,然后查看模型是否训练.另外,根据文档,伽玛值必须为{‘scale’, ‘auto’}
.
I would suggest restricting the space of your parameters and see if that works. Fix the probability
parameter to False and see if the model trains. Also, gamma needs to be {‘scale’, ‘auto’}
according to the documentation.
还要在每次迭代时打印出params
,以更好地了解哪种组合会导致模型卡住.
Also at every iteration print out your params
to better understand which combination is causing the model to get stuck.
这篇关于Hyperopt调整参数被卡住的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!