Python 错误:形状(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)所示。至少我认为这就是它的意思 我正在尝试将一个简单的线性回归拟合到一个训练集,如下代码所示: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)
# 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)