我希望在SVC模型中执行GridSearchCV,但使用一对多策略。对于后者,我可以只需执行以下操作:
为了实现我想要的功能,我看到两种解决方案:
1.创建SVC时,以某种方式告诉它不要使用一对一策略,而要使用一对所有策略。
2.以某种方式指示GridSearchCV参数对应于OneVsRestClassifier内部的估算器。
我还没有找到执行任何上述替代方案的方法。 您知道是否有一种方法可以执行其中任何一种方法吗? 或者您可以建议另一种获得相同结果的方法吗?
谢谢!
model_to_set = OneVsRestClassifier(SVC(kernel="poly"))
我的问题与参数有关。假设我想尝试以下值:
parameters = {"C":[1,2,4,8], "kernel":["poly","rbf"],"degree":[1,2,3,4]}
为了执行GridSearchCV,我应该像这样做:
cv_generator = StratifiedKFold(y, k=10)
model_tunning = GridSearchCV(model_to_set, param_grid=parameters, score_func=f1_score, n_jobs=1, cv=cv_generator)
然而,当我执行它时,我收到:
Traceback (most recent call last):
File "/.../main.py", line 66, in <module>
argclass_sys.set_model_parameters(model_name="SVC", verbose=3, file_path=PATH_ROOT_MODELS)
File "/.../base.py", line 187, in set_model_parameters
model_tunning.fit(self.feature_encoder.transform(self.train_feats), self.label_encoder.transform(self.train_labels))
File "/usr/local/lib/python2.7/dist-packages/sklearn/grid_search.py", line 354, in fit
return self._fit(X, y)
File "/usr/local/lib/python2.7/dist-packages/sklearn/grid_search.py", line 392, in _fit
for clf_params in grid for train, test in cv)
File "/usr/local/lib/python2.7/dist-packages/sklearn/externals/joblib/parallel.py", line 473, in __call__
self.dispatch(function, args, kwargs)
File "/usr/local/lib/python2.7/dist-packages/sklearn/externals/joblib/parallel.py", line 296, in dispatch
job = ImmediateApply(func, args, kwargs)
File "/usr/local/lib/python2.7/dist-packages/sklearn/externals/joblib/parallel.py", line 124, in __init__
self.results = func(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sklearn/grid_search.py", line 85, in fit_grid_point
clf.set_params(**clf_params)
File "/usr/local/lib/python2.7/dist-packages/sklearn/base.py", line 241, in set_params
% (key, self.__class__.__name__))
ValueError: Invalid parameter kernel for estimator OneVsRestClassifier
基本上,由于SVC在OneVsRestClassifier中,并且这是我发送到GridSearchCV的估算器,因此无法访问SVC的参数。为了实现我想要的功能,我看到两种解决方案:
1.创建SVC时,以某种方式告诉它不要使用一对一策略,而要使用一对所有策略。
2.以某种方式指示GridSearchCV参数对应于OneVsRestClassifier内部的估算器。
我还没有找到执行任何上述替代方案的方法。 您知道是否有一种方法可以执行其中任何一种方法吗? 或者您可以建议另一种获得相同结果的方法吗?
谢谢!