GridSearchCV on LogisticRegression in scikit-learn

转载自:https://stackoverflow.com/questions/19018333/gridsearchcv-on-logisticregression-in-scikit-learn

I am trying to optimize a logistic regression function in scikit-learn by using a cross-validated grid parameter search, but I can’t seem to implement it.

It says that Logistic Regression does not implement a get_params() but on the documentation it says it does. How can I go about optimizing this function on my ground truth?

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 “”, line 1, in
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.

python machine-learning scikit-learn cross-validation logistic-regression
shareeditfollow
edited Sep 26 '13 at 20:09

Fred Foo
308k6161 gold badges644644 silver badges772772 bronze badges
asked Sep 26 '13 at 2:26

genekogan
55322 gold badges88 silver badges1717 bronze badges
add a comment
2 Answers
Active
Oldest
Votes

8

The class name scikits.learn.linear_model.logistic.LogisticRegression refers to a very old version of scikit-learn. The top level package name is now sklearn since at least 2 or 3 releases. It’s very likely that you have old versions of scikit-learn installed concurrently in your python path. Uninstall them all, then reinstall 0.14 or later and try again.

shareeditfollow
edited Jul 10 '15 at 13:14
answered Sep 26 '13 at 9:29

ogrisel
32.6k1010 gold badges9595 silver badges105105 bronze badges
Thanks very much. All I had to do was switch the import statement and it worked. Simple answer. Can you (or anyone else) also tell me which parameters can be optimized in Logistic Regression grid search? Is it just C? Here is the full object: clf.best_estimator_ LogisticRegression(C=1, class_weight=None, dual=False, fit_intercept=True, intercept_scaling=1, penalty=‘l2’, random_state=None, tol=0.0001) – genekogan Sep 26 '13 at 19:08
3
Yes, C is the most important one. – Andreas Mueller Sep 26 '13 at 20:00
add a comment
IKEA
Creating a better everyday life for the many people.
View all 2 job openings!

4

You can also give penalty as a parameter along with C. E.g. :

grid_values = {‘penalty’: [‘l1’,‘l2’], ‘C’: [0.001,0.01,0.1,1,10,100,1000]}. and then, model_lr = GridSearchCV(lr, param_grid=grid_values)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值