使用scikit-learn中的GridSearchCV优化LogisticRegression

我试图通过使用交叉验证的网格参数搜索来优化scikit-learn中的逻辑回归函数,但似乎无法实现它。

文档中说逻辑回归实现了get_params()方法,但实际上它并没有实现。我该如何在我的真实数据上优化这个函数呢?

>>> param_grid = {'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000] }>>> clf = GridSearchCV(LogisticRegression(penalty='l2'), param_grid)>>> clfGridSearchCV(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.>>> 

回答:

类名scikits.learn.linear_model.logistic.LogisticRegression指的是一个非常旧的scikit-learn版本。从至少2到3个版本以来,最顶级的包名已经改为sklearn。很可能你的Python路径中同时安装了旧版本的scikit-learn。请卸载所有旧版本,然后重新安装0.14或更高版本,再试一次。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注