管道和 GridSearchCV 的问题

Posted

技术标签:

【中文标题】管道和 GridSearchCV 的问题【英文标题】:Issues with Pipeline and GridSearchCV 【发布时间】:2020-09-20 08:02:30 【问题描述】:

我在使用 Pipeline Tool 和 GridSearchCV 时遇到了一些问题。 我收到以下错误消息:“TypeError:Pipeline 的最后一步应该实现 fit 或者是字符串 'passthrough'。'1' (type) 没有”。

你知道我的错误在哪里吗?

这是我的代码:

from sklearn.model_selection import GridSearchCV
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import Pipeline


X = wage['age'][:, np.newaxis]
y = wage['wage'][:, np.newaxis]

degree = 2
model = Pipeline(steps=[('poly', PolynomialFeatures(degree)), ('linear', LinearRegression(fit_intercept=False))])

param_grid = 'poly': [1, 2, 3, 4, 5]
cv_model = GridSearchCV(model, param_grid, scoring='r2', cv=5, n_jobs=1)
cv_model.fit(X, y)

【问题讨论】:

请提供完整的错误输出,以及minimal reproducible example。 【参考方案1】:

问题可能来自我没有在 param_grid 中的“poly”之后使用“__”表示法。

使用这种表示法,它似乎可以工作:

param_grid = 'poly__degree': [1, 2, 3, 4, 5]

【讨论】:

以上是关于管道和 GridSearchCV 的问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 `GridSearchCV` 测试完全从管道中删除步骤的效果? [复制]

使用最佳参数构建模型时 GridsearchCV 最佳分数下降

管道和 GridSearchCV 的问题

带有管道和 GridSearchCV 的 StandardScaler

SKLEARN // 将 GridsearchCV 与列变换和管道相结合

使用 Imblearn 管道和 GridSearchCV 进行交叉验证