我正在测试使用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调整参数被卡住
发布评论