我正在尝试通过更改参数来调整我的Logistic Regression模型。
我的代码如下:
solver_options = ['newton-cg', 'lbfgs', 'liblinear', 'sag']multi_class_options = ['ovr', 'multinomial']class_weight_options = ['None', 'balanced']param_grid = dict(solver = solver_options, multi_class = multi_class_options, class_weight = class_weight_options)grid = GridSearchCV(LogisticRegression, param_grid, cv=12, scoring = 'accuracy')grid.fit(X5, y5)grid.grid_scores_
但这会导致错误:
TypeError Traceback (most recent call last)<ipython-input-84-6d812a155800> in <module>() 1 param_grid = dict(solver = solver_options, multi_class = multi_class_options, class_weight = class_weight_options) 2 grid = GridSearchCV(LogisticRegression, param_grid, cv=12, scoring = 'accuracy')----> 3 grid.fit(X5, y5) 4 grid.grid_scores_C:\ProgramData\Anaconda3\lib\site-packages\sklearn\grid_search.py in fit(self, X, y) 827 828 """--> 829 return self._fit(X, y, ParameterGrid(self.param_grid)) 830 831 C:\ProgramData\Anaconda3\lib\site-packages\sklearn\grid_search.py in _fit(self, X, y, parameter_iterable)559 n_candidates * len(cv)))560
–> 561 base_estimator = clone(self.estimator) 562 563 pre_dispatch = self.pre_dispatch
C:\ProgramData\Anaconda3\lib\site-packages\sklearn\base.py in clone(estimator, safe) 65 % (repr(estimator), type(estimator))) 66 klass = estimator.__class__---> 67 new_object_params = estimator.get_params(deep=False) 68 for name, param in six.iteritems(new_object_params): 69 new_object_params[name] = clone(param, safe=False)TypeError: get_params() missing 1 required positional argument: 'self'
这里有什么建议可以告诉我我做错了什么吗?
回答:
你需要将estimator初始化为一个实例,而不是直接将类传递给GridSearchCV:
lr = LogisticRegression() # 初始化模型grid = GridSearchCV(lr, param_grid, cv=12, scoring = 'accuracy', )grid.fit(X5, y5)