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

Posted

技术标签:

【中文标题】sklearn:发现样本数量不一致的输入变量:[1, 99]【英文标题】:sklearn: Found input variables with inconsistent numbers of samples: [1, 99] 【发布时间】:2018-01-23 15:28:06 【问题描述】:

我正在尝试在 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 也一样。

看到一堆相关的话题,但都没有帮助。

【问题讨论】:

y 可以是(99,)(不必是(99,1) 的形状),但X 必须是二维形状。试穿前x = x.reshape(-1,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) 

希望它对以后遇到类似错误的程序员有所帮助。

【讨论】:

【参考方案2】:

参考LinearRegression(http://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 要求数据的形状相同!

【讨论】:

以上是关于sklearn:发现样本数量不一致的输入变量:[1, 99]的主要内容,如果未能解决你的问题,请参考以下文章

样本数量不一致的 Python Sklearn 变量

逻辑回归 ValueError:发现样本数量不一致的输入变量:[699,

发现样本数量不一致的输入变量:[4, 1] [关闭]

ValueError:发现样本数量不一致的输入变量:[1, 74]

GridseachCV - ValueError:发现样本数量不一致的输入变量:[33 1]

ValueError:发现样本数量不一致的输入变量:[143, 426]