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

时间:2017-08-15 16:40:47

标签: pandas linear-regression spyder sklearn-pandas

我试图在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)

我想我知道问题是什么,但我不太确定如何处理语法。 在变量资源管理器中,x(和y)的大小是(99L,),从我记忆中它不能是一个向量,它必须是大小(99,1)。 y同样的事情。

看了很多相关主题,但没有一个有帮助。感谢。

2 个答案:

答案 0 :(得分:4)

参考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) - 例如,每个“行”具有单个“列”的单个值。

有很多方法可以实现这一点(参考:Efficient way to add a singleton dimension to a NumPy vector so that slice assignments work),在您的情况下,以下内容应该有效:

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

不要忘记predict需要与数据相同的形状!

答案 1 :(得分:1)

我也遇到了类似的问题。

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) 

希望它可以帮助以后遇到类似错误的编码人员。