You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复使用make_pipeline时的TypeError: too many positional arguments错误

解决validation_curve调用中的TypeError: too many positional arguments错误

原代码

from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import make_pipeline
from sklearn.model_selection import validation_curve

def PolynomialRegression(degree=2, **kwargs):
     return make_pipeline(PolynomialFeatures(degree), LinearRegression(**kwargs))

train_score, val_score = validation_curve(PolynomialRegression(), X, y,
                                      'polynomialfeatures__degree',
                                      degree, cv=7)

报错信息

File ~/opt/miniconda3/lib/python3.10/inspect.py:3108, in Signature._bind(self, args, kwargs, partial)
3104 else:
3105 if param.kind in (_VAR_KEYWORD, _KEYWORD_ONLY):
3106 # Looks like we have no parameter for this positional
3107 # argument
-> 3108 raise TypeError(
3109 'too many positional arguments') from None
3111 if param.kind == _VAR_POSITIONAL:
3112 # We have an '*args'-like argument, let's fill it with
3113 # all positional arguments we have left and move on to
3114 # the next phase
3115 values = [arg_val]

TypeError: too many positional arguments

问题分析与修复

错误根源在于validation_curve的参数传递逻辑:

  1. 模型参数错误:validation_curve要求第一个参数是模型构造函数(而非已实例化的模型对象),你传入的PolynomialRegression()是已创建好的模型实例,导致函数无法动态生成不同参数的模型。
  2. 参数值未定义:代码中degree变量未明确赋值,需要传入一个包含待测试多项式度数的列表。

修正后的代码:

from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import make_pipeline
from sklearn.model_selection import validation_curve

def PolynomialRegression(degree=2, **kwargs):
     return make_pipeline(PolynomialFeatures(degree), LinearRegression(**kwargs))

# 定义要测试的多项式度数范围
degrees = [1, 2, 3, 4, 5]
train_score, val_score = validation_curve(PolynomialRegression, X, y,
                                      'polynomialfeatures__degree',
                                      degrees, cv=7)

关键修正点

  • 将PolynomialRegression()改为PolynomialRegression:让validation_curve可以根据不同的degree参数动态实例化模型。
  • 新增degrees列表:明确指定要验证的多项式度数,替换未定义的degree变量。

内容的提问来源于stack exchange,提问作者zjohn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 08:43:30