gs_clf = GridSearchCV(SVC(probability=False, class_weight='balanced', max_iter=100, random_state=2018, tol=1e-10),
param_grid={'C': [2, 5, 10] , 'kernel': 'linear'},
n_jobs=1,
refit=False,
cv=2,
scoring='f1_weighted',
verbose=1)
gs_clf.fit(X, y)
这就是我将Gridsearch与SVC配合使用以适应数据的方式。基本上,我针对随机训练数据调整数据点的行数和标签数,并记录时间消耗。从理论上讲,SVC
内核中的linearSVC
(不是linear
)使用OVO多类实现,计算复杂度为O(#samples * #class * iter)。
这是我遇到的两个问题:
log(#label)
呈线性增长(大致)。与单一SVC训练相反,时间在#label
上呈线性增长。 Gridsearch到底在做什么? #label=2
。但是#label
不是大的情况。当#label=40
时,time(max_iter=200)
与time(max_iter=400)
没什么不同。这不仅发生在gridsearch中,而且也发生在SVC中。我将tol
设置得很小,希望拟合总是能达到最大迭代次数,但似乎不起作用。其背后的机制是什么?我正在使用sklearn == 0.18.1。谢谢!