Invalid parameter C for estimator Pipeline

我的代码逻辑如下

  1. 首先使用pipeline组装实现多项式逻辑回归算法PolynomialLogisticRegression
  2. 使用GridSearch对PolynomialLogisticRegression进行网格搜索
from sklearn.preprocessing import StandardScaler, PolynomialFeatures
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LogisticRegression

def PolynomialLogisticRegression(degree=2, C=1.0):
    return Pipeline([
        ('poly', PolynomialFeatures(degree=degree)),
        ('std', StandardScaler()),
        ('log_reg', LogisticRegression(C=C))
])
from sklearn.model_selection import GridSearchCV

param_grid = {
            'degree': [i for i in range(1, 21)], 
            'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]
        }

grid_search = GridSearchCV(PolynomialLogisticRegression(), param_grid)
grid_search.fit(X_train, y_train)

报以下错误 Invalid parameter C for estimator Pipeline…

ValueError: Invalid parameter C for estimator Pipeline(memory=None,
         steps=[('poly',
                 PolynomialFeatures(degree=2, include_bias=True,
                                    interaction_only=False, order='C')),
                ('std',
                 StandardScaler(copy=True, with_mean=True, with_std=True)),
                ('log_reg',
                 LogisticRegression(C=1.0, class_weight=None, dual=False,
                                    fit_intercept=True, intercept_scaling=1,
                                    l1_ratio=None, max_iter=100,
                                    multi_class='auto', n_jobs=None,
                                    penalty='l2', random_state=None,
                                    solver='lbfgs', tol=0.0001, verbose=0,
                                    warm_start=False))],
         verbose=False). Check the list of available parameters with `estimator.get_params().keys()`.

       发现是网格搜索的参数存在问题,由pipeline组装成的PolynomialLogisticRegression中不存在此参数
       通过PolynomialLogisticRegression().get_params()发现参数名前方拼接了pipeline中每个步骤起的别名(类似命名空间),如degree参数在pipeline中定义为(‘poly’, PolynomialFeatures(degree=degree)),所以应该传poly__degree
在这里插入图片描述
       修改后的GridSearch

%%time
from sklearn.model_selection import GridSearchCV

param_grid = {
            'poly__degree': [i for i in range(1, 21)], 
            'log_reg__C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]
        }

grid_search = GridSearchCV(PolynomialLogisticRegression(), param_grid)
grid_search.fit(X_train, y_train)

       运行结果如下
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值