8

交差検証グリッド パラメーター検索を使用して、scikit-learn でロジスティック回帰関数を最適化しようとしていますが、実装できないようです。

Logistic Regression は get_params() を実装していないと書かれていますが、ドキュメントには実装されていると書かれています。グラウンド トゥルースでこの関数を最適化するにはどうすればよいですか?

>>> param_grid = {'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000] }
>>> clf = GridSearchCV(LogisticRegression(penalty='l2'), param_grid)
>>> clf
GridSearchCV(cv=None,
       estimator=LogisticRegression(C=1.0, intercept_scaling=1, dual=False, fit_intercept=True,
          penalty='l2', tol=0.0001),
       fit_params={}, iid=True, loss_func=None, n_jobs=1,
       param_grid={'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]},
       pre_dispatch='2*n_jobs', refit=True, score_func=None, verbose=0)
>>> clf = clf.fit(gt_features, labels)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Python/2.7/site-packages/scikit_learn-0.14_git-py2.7-macosx-10.8-x86_64.egg/sklearn/grid_search.py", line 351, in fit
    base_clf = clone(self.estimator)
  File "/Library/Python/2.7/site-packages/scikit_learn-0.14_git-py2.7-macosx-10.8-x86_64.egg/sklearn/base.py", line 42, in clone
    % (repr(estimator), type(estimator)))
TypeError: Cannot clone object 'LogisticRegression(C=1.0, intercept_scaling=1, dual=False, fit_intercept=True,
          penalty='l2', tol=0.0001)' (type <class 'scikits.learn.linear_model.logistic.LogisticRegression'>): it does not seem to be a scikit-learn estimator a it does not implement a 'get_params' methods.
>>> 
4

2 に答える 2

8

CEg とともにパラメータとしてペナルティを与えることもできます:

grid_values = {'penalty': ['l1','l2'], 'C': [0.001,0.01,0.1,1,10,100,1000]}. その後、model_lr = GridSearchCV(lr, param_grid=grid_values)

于 2017-08-24T07:57:17.943 に答える
8

クラス名scikits.learn.linear_model.logistic.LogisticRegressionは、非常に古いバージョンの scikit-learn を参照しています。最上位のパッケージ名はsklearn、少なくとも 2 つまたは 3 つのリリース以降のものになりました。Python パスに古いバージョンの scikit-learn が同時にインストールされている可能性が非常に高いです。それらをすべてアンインストールしてから、0.14 以降を再インストールして、もう一度やり直してください。

于 2013-09-26T09:29:31.077 に答える