所以我是机器学习的新手,对这个错误感到有些困惑:
形状(1,4)和(14,14)未对齐:4(暗淡1)!= 14(暗淡0)
以下是完整错误:
文件“/Users/jim/anaconda3/lib/python3.6/site-packages/sklearn/utils/extmath.py”,第140行,在safe_sparse_dot中 return np.dot(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)
答案 0 :(得分:1)
对于所有用法,请将reshape(1,-1)
替换为reshape(-1, 1)
。前者将数组转换为(1人x n 特征),后者确实( n 人x 1特征)。在这种情况下,功能 hight 。
如果你修改了导入部分,如下所示,不需要重新整形数组,因为它们的形状已经满足( n 人x 1特征)的形式。
# 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)
在sklearn的早期阶段,您可以将矢量作为输入。但最近它已经改变了,现在你需要明确指出矢量是( 1 样本x n 特征)还是( n 样本x < em> 1 功能)使用reshape
或其他一些方法。