scikit 认为不兼容的简单单向量输入数组

Posted

技术标签:

【中文标题】scikit 认为不兼容的简单单向量输入数组【英文标题】:Simple one-vector input arrays seen as incompatible by scikit 【发布时间】:2014-02-16 01:07:26 【问题描述】:

我有两个变量都来自同一个 pandas df。我将一个提取到 TT,另一个提取到 t。我正在使用 TT 来预测 t,它是二进制的。我无法确定为什么变量被 scikit 视为具有不兼容的形状。我已将 TT 转置为修复,但没有奏效。

>>> TT=adf.x1.values
>>> t=adf.y.values
>>> TT.shape
(2856L,)
>>> t.shape
(2856L,)
>>> TT
array([ 4.43081665,  5.99146461,  4.86753464, ...,  4.58496761,
        8.4553175 ,  7.37775898], dtype=float32)
>>> t
array([ 0.,  0.,  0., ...,  0.,  0.,  0.], dtype=float32)
>>> clf=LogisticRegression(C=1)   
>>> clf.fit(TT,t)
Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "C:...\sklearn\svm\base.py", line 686, in fit
        (X.shape[0], y.shape[0]))
ValueError: X and y have incompatible shapes.
X has 1 samples, but y has 2856.)

【问题讨论】:

【参考方案1】:

如果您查看sklearn.linear_model.LogisticRegression.fit 上的文档,

TT 应该有 (n_samples, n_features) 的形状,并且 t 的形状应该是 (n_samples)

您的TT 向量应该是一个二维数组。您可以通过执行 TT.reshape(-1, 1)TT 重塑为具有形状 (2856L, 1),这至少可以消除错误,但我不确定这是否会产生预期的结果。

【讨论】:

以上是关于scikit 认为不兼容的简单单向量输入数组的主要内容,如果未能解决你的问题,请参考以下文章

尝试将数据输入数组时不兼容的类型

获取不兼容的类型错误

深度学习模型不提供预测作为输入层是不兼容的

Kafka协议兼容性改进

Kafka终于“双向”兼容了,快来看~

ValueError:输入 0 与层 lstm_13 不兼容:预期 ndim=3,发现 ndim=4