sklearn:找到样本数量不一致的输入变量:[1, 99]

sklearn: Found input variables with inconsistent numbers of samples: [1, 99]

我正在尝试在 spyder 中使用 pandas 构建一个简单的回归线。 执行以下代码后,我得到了这个错误:

Found input variables with inconsistent numbers of samples: [1, 99]

代码:

import numpy as np
import pandas as pd

dataset = pd.read_csv('Phil.csv')

x = dataset.iloc[:, 0].values
y = dataset.iloc[:, 2].values

from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(x, y)

我想我知道问题出在哪里,但我不太确定如何处理语法。 在variable explorer中,x(和y)的大小是(99L,),据我所知它不能是向量,它必须是大小(99,1)。 y 也一样。

看到了一堆相关主题,但其中 none 有帮助。

参考LinearRegressionhttp://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html#sklearn.linear_model.LinearRegression.fit)的sklearn文档,X向量需要符合规范[n_samples,n_features]

由于您只有一个包含多个样本的特征,因此形状应为 (99,1) - 例如,每个 "row" 一个值和一个 "column".

有很多方法可以完成此操作(参考:Efficient way to add a singleton dimension to a NumPy vector so that slice assignments work),对于您的情况,以下方法应该有效:

regressor.fit(x[:, None], y)

不要忘记 predict 要求数据具有相同的形状!

我也遇到了类似的问题。

ValueError: Found input variables with inconsistent numbers of samples: [20, 10]

不过我找到了解决办法。就我而言,拆分顺序不正确

我做到了

X_train, X_test, y_test, y_train = train_test_split(X,y,test_size=1/3, random_state=0) 

而不是:

X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=1/3, random_state=0) 

希望它能帮助以后 运行 陷入类似错误的编码人员。