我遇到的问题是我的超参数svm.SVC()
太宽以至于GridSearchCV()
永远不会完成!一种想法是RandomizedSearchCV()
改用。但同样,我的数据集相对较大,500 次迭代大约需要 1 小时!
我的问题是,为了停止浪费资源,在 GridSearchCV (或 RandomizedSearchCV )中有什么好的设置(就每个超参数的值范围而言)?
换句话说,如何确定例如C
大于 100 的值是否有意义和/或 1 的步长既不大也不小?很感谢任何形式的帮助。这是我目前使用的设置:
parameters = {
'C': np.arange( 1, 100+1, 1 ).tolist(),
'kernel': ['linear', 'rbf'], # precomputed,'poly', 'sigmoid'
'degree': np.arange( 0, 100+0, 1 ).tolist(),
'gamma': np.arange( 0.0, 10.0+0.0, 0.1 ).tolist(),
'coef0': np.arange( 0.0, 10.0+0.0, 0.1 ).tolist(),
'shrinking': [True],
'probability': [False],
'tol': np.arange( 0.001, 0.01+0.001, 0.001 ).tolist(),
'cache_size': [2000],
'class_weight': [None],
'verbose': [False],
'max_iter': [-1],
'random_state': [None],
}
model = grid_search.RandomizedSearchCV( n_iter = 500,
estimator = svm.SVC(),
param_distributions = parameters,
n_jobs = 4,
iid = True,
refit = True,
cv = 5,
verbose = 1,
pre_dispatch = '2*n_jobs'
) # scoring = 'accuracy'
model.fit( train_X, train_Y )
print( model.best_estimator_ )
print( model.best_score_ )
print( model.best_params_ )