使用sklearn LinearRegression.fit()时样本数不匹配错误求助
问题分析与解决
核心错误:直接调用类方法而非实例方法
LinearRegression是sklearn中的模型类,你必须先实例化一个模型对象,再调用它的fit方法。直接写LinearRegression.fit(u_train, y_train)会导致参数传递完全混乱——第一个参数u_train会被当成类实例的self参数,y_train被当作输入特征X,方法内部因缺少目标变量y触发错误的维度校验。
正确的代码写法:
from sklearn.linear_model import LinearRegression # 先实例化模型对象 model = LinearRegression() # 调用实例的fit方法传入数据 model.fit(u_train, y_train)
关于多目标回归的维度说明
如果你的场景是多目标回归(每个样本对应3个目标值),y_train的(503,3)形状是符合要求的——sklearn允许y为(n_samples, n_targets)的二维数组。只要你正确实例化模型,u_train(503个样本,每个3个特征)和y_train的维度是完全匹配的。
为何会出现[3,1509]的报错?
当你错误地直接调用类的fit方法时,内部逻辑会错误解析维度:把y_train的列数(3)当成样本数,同时将y_train的所有元素展平为1509个值(503*3),最终触发样本数不匹配的错误提示。
内容的提问来源于stack exchange,提问作者Jonathan Frutschy
相关产品推荐
相关产品推荐

