Python 错误:形状(1,4)和(14,14)未对齐

Python 错误:形状(1,4)和(14,14)未对齐,python,python-3.x,machine-learning,scikit-learn,Python,Python 3.x,Machine Learning,Scikit Learn,所以我是机器学习的新手,对这个错误有点困惑: 形状(1,4)和(14,14)未对齐:4(尺寸1)!=14(尺寸0) 以下是全部错误: 文件“/Users/jim/anaconda3/lib/python3.6/site packages/sklearn/utils/extmath.py”,第140行,安全稀疏点 返回np.点(a,b) ValueError:形状(1,4)和(14,14)未对齐:4(尺寸1)!=14(尺寸0) 我的测试集有4行数据,训练集有14行数据,如(1,4)和(14,14)

所以我是机器学习的新手,对这个错误有点困惑:

形状(1,4)和(14,14)未对齐:4(尺寸1)!=14(尺寸0)

以下是全部错误:

文件“/Users/jim/anaconda3/lib/python3.6/site packages/sklearn/utils/extmath.py”,第140行,安全稀疏点 返回np.点(a,b)

ValueError:形状(1,4)和(14,14)未对齐:4(尺寸1)!=14(尺寸0)

我的测试集有4行数据,训练集有14行数据,如(1,4)和(14,14)所示。至少我认为这就是它的意思

我正在尝试将一个简单的线性回归拟合到一个训练集,如下代码所示:

# Fit Simple Linear Regression to 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)
我的代码在最后一行失败,出现上述错误:

y_pred = regressor.predict(X_test)
任何指向正确方向的提示都会很好

以下是我的整个代码示例:

# Simple Linear Regression

# Import Libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

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

# Splitting the dataset into Train and Test
from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)

# Feature Scaling
# None

# Fit Simple Linear Regression to 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)
**编辑** 我检查了X和y的形状。以下是我的输出:

dataset = pd.read_csv('NBA.csv')
X = dataset.iloc[:, 1].values
y = dataset.iloc[:, :-1].values
print(X.shape)
print(y.shape)
-->(18,)
-->(18, 1)

请将
整形(1,-1)
替换为
整形(-1,1)
,以适用于所有用途。前者将数组转换为(1人x n个特征),后者转换为(n人x 1个特征)功能在本例中为高

如果按如下所示修改导入部分,则无需重塑阵列,因为其形状已满足(n人x 1特征)的形式


在sklearn的早期,您可以将向量作为输入输入。但最近它发生了变化,现在您需要通过使用
重塑
或其他一些方法显式指示向量是(1个样本x n个特征)还是(n个样本x 1个特征)。

重塑(1,-1)
似乎很危险,因为它转换“1个样本”x“n个特征”数组。您能展示一下
X_列车
X_测试
等的原始形状吗?@dkato谢谢。我已经用我的原始代码更新了我的帖子。你想让我也发布我的数据吗?谢谢。我想在从
datasetP
dataframe制作切片后,通过执行
X.shape
y.shape
检查
X
y
的形状。也许调试就足够了。@dkato好的,X和y的形状分别是(18,)和(18,1)。另外,我在我的原始帖子的底部对其进行了更新。因此,在本例中,您是否尝试使用18个样本来训练回归模型,每个样本只有一个特征?
# Import dataset
dataset = pd.read_csv('NBA.csv')
X = dataset.iloc[:, 1].values
y = dataset.iloc[:, 0].values

X = X.reshape(-1, 1)
y = y.reshape(-1, 1)