[英]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.我正在尝试通过使用交叉验证的网格参数搜索来优化 scikit-learn 中的逻辑回归 function,但我似乎无法实现它。
It says that Logistic Regression does not implement a get_params() but on the documentation it says it does.它说逻辑回归没有实现 get_params() 但在它说的文档上。 How can I go about optimizing this function on my ground truth?
我 go 如何根据我的基本事实优化这个 function?
>>> 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.
>>>
The class name scikits.learn.linear_model.logistic.LogisticRegression
refers to a very old version of scikit-learn.类名
scikits.learn.linear_model.logistic.LogisticRegression
指的是一个非常旧的 scikit-learn 版本。 The top level package name is now sklearn
since at least 2 or 3 releases.顶级包名称现在是
sklearn
因为至少有 2 或 3 个版本。 It's very likely that you have old versions of scikit-learn installed concurrently in your python path.您很可能在 python 路径中同时安装了旧版本的 scikit-learn。 Uninstall them all, then reinstall 0.14 or later and try again.
将它们全部卸载,然后重新安装 0.14 或更高版本并重试。
You can also give penalty as a parameter along with CEg :您还可以将惩罚作为参数与 CEg 一起提供:
grid_values = {'penalty': ['l1','l2'], 'C': [0.001,0.01,0.1,1,10,100,1000]}
. 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)
然后,
model_lr = GridSearchCV(lr, param_grid=grid_values)
from sklearn.model_selection import GridSearchCV
Depending of the power of your computer you could go for:根据您计算机的功率,您可以 go 用于:
parameters = [{'penalty':['l1','l2']},
{'C':[1, 10, 100, 1000]}]
grid_search = GridSearchCV(estimator = logreg,
param_grid = parameters,
scoring = 'accuracy',
cv = 5,
verbose=0)
grid_search.fit(X_train, y_train)
or that deep one.或那个深的。
parameters = [{'solver': ['newton-cg', 'lbfgs', 'liblinear', 'sag', 'saga']},
{'penalty':['none', 'elasticnet', 'l1', 'l2']},
{'C':[0.001, 0.01, 0.1, 1, 10, 100]}]
grid_search = GridSearchCV(estimator = logreg,
param_grid = parameters,
scoring = 'accuracy',
cv = 5,
verbose=0)
grid_search.fit(X_train, y_train)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.