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
相关产品推荐
相关产品推荐

