ValueError:形状(1,10)和(20,20)不对齐:10(dim 1)!= 20(dim 0)

时间:2019-01-26 17:49:43

标签: machine-learning scikit-learn regression

我是机器学习的新手,尝试在.predict()上执行X_test方法时遇到此错误。我也不理解reshape的概念:为什么我们需要这样做?

# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd


# Importing the dataset
dataset = pd.read_csv('Salary_Data.csv')
X = dataset.iloc[:,-1].values  
y = dataset.iloc[:,1].values 



# Splitting the dataset into the Training set and Test set
from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 1/3, random_state = 0)



# Fitting simple Linear Regression to the training set
from sklearn.linear_model import LinearRegression
regressor= LinearRegression() 
X_train = X_train.reshape(1, -1)
y_train = y_train.reshape(1, -1)
regressor.fit(X_train,y_train)



# Predicting the test set results
X_test= X_test.reshape(1,-1)
y_pred = regressor.predict(X_test)

2 个答案:

答案 0 :(得分:0)

需要重塑,因为数据在fit()predict()方法上需要具有相同的尺寸。线性回归假设:

  • 列数代表每个样本的维数
  • 行数代表样本数

因此可以有不同数量的行(可以在100个样本上训练一个模型,但只想预测一个样本。但是,您不能训练(即fit)一个包含{ {1}}维数并预测包含不同维数的样本。

答案 1 :(得分:0)

我必须使用 .reshape(-1,1)而不是.reshape(1,-1) 因为我只考虑数据集中的一项功能