.fit() 错误:发现样本数量不一致的数组

Posted

技术标签:

【中文标题】.fit() 错误:发现样本数量不一致的数组【英文标题】:.fit() error: Found arrays with inconsistent numbers of samples 【发布时间】:2016-10-29 17:38:06 【问题描述】:

y1 是一个长度为 106 的 numpy.ndarray(表示以米为单位的高度)

x1 是一个长度为 106 的 numpy.ndarray(代表身高对应的男孩的年龄)

我正在尝试使用梯度下降通过线性回归预测给定年龄的身高,然后将其绘制为 3D 曲面图。

当我尝试执行 .fit() 时,它会告诉我

ValueError:发现样本数量不一致的数组:[1 106]

import numpy as np
from sklearn import linear_model

x1 = np.fromfile('ex2x.dat', float)
y1 = np.fromfile('ex2y.dat', float)

clf = linear_model.SGDRegressor(alpha=.007)

clf.fit(x1, y1)


y_predicted = clf.predict(3.5)

【问题讨论】:

类似:***.com/questions/30813044/… 我知道,我看到了那个帖子,但仍然没有帮助 能否给出 print x1.shape 的输出? 【参考方案1】:

预期的数组形状是:

(n_samples, 1) 表示 x1,表示具有一列的二维数组(因为您有一个特征) (n_samples,) 表示 y1,表示一维数组。

如果你的第一个数组是一维的,你应该重塑它:

x1 = np.fromfile('ex2x.dat', float).reshape(-1, 1)

这是一个独立的小例子:

import numpy as np
from sklearn import linear_model

x1 = np.array(range(10)).reshape(-1, 1)
y1 = np.array([k**.5 for k in range(10)])

clf = linear_model.SGDRegressor(alpha=.0007)
clf.fit(x1, y1)

y_predicted = clf.predict(3.5)

【讨论】:

以上是关于.fit() 错误:发现样本数量不一致的数组的主要内容,如果未能解决你的问题,请参考以下文章

Python 2.7/Scikit 学习 0.17 线性回归错误:ValueError:发现样本数量不一致的数组:[1 343]

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

ValueError:发现样本数量不一致的数组 [6 1786]

sklearn 问题:在进行回归时发现样本数量不一致的数组

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

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