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

LinearRegression特征数量不匹配报错求助:已尝试数组重塑仍未解决

问题解决:LinearRegression特征数量不匹配报错

错误原因

你代码最后一行的model.score(pred,y_test)参数顺序完全搞反了。LinearRegression.score()方法要求:第一个参数是输入特征矩阵X(必须和训练时的特征数量一致,也就是10个特征),第二个参数是真实目标值y。你把仅1列的预测结果pred传成了第一个参数,模型自然判定输入只有1个特征,和训练时的10个特征不匹配,因此报错。

修正后的代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsClassifier
from sklearn.neighbors import KNeighborsRegressor
from io import StringIO
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from sklearn import linear_model

d = pd.read_csv("http://www.stat.wisc.edu/~jgillett/451/data/mtcars.csv")
X = d[['cyl','disp','hp','drat','wt','qsec','vs','am','gear','carb']]
y = d[['mpg']].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0)

model = linear_model.LinearRegression()
model.fit(X_train, y_train)
pred = model.predict(X_test).reshape(-1,1)
y_test = y_test.reshape(-1,1)

# 修正参数顺序:第一个传X_test,第二个传y_test
score = model.score(X_test, y_test)
print(score)

额外说明

  • 你之前对y_test和pred做的reshape其实没必要,train_test_split返回的目标值以及predict输出的结果,维度都符合score方法的要求,保留也不影响结果。
  • 如果想直接用预测值和真实值计算回归指标,也可以用sklearn.metrics里的r2_score,结果和model.score(X_test, y_test)完全一致:
    from sklearn.metrics import r2_score
    print(r2_score(y_test, pred))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:58:11