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]的主要内容,如果未能解决你的问题,请参考以下文章
逻辑回归 ValueError:发现样本数量不一致的输入变量:[699,
ValueError:发现样本数量不一致的输入变量:[1, 74]