Sklearn Logit模型“ ValueError: 发现数组的 dim 为3,估计值预计 < = 2。”

我尝试解决 这个笔记本上的问题6。问题是通过使用来自 sklearn.linear_model的 Logistic 回归模型,使用50、100、1000和5000个训练样本对这些数据训练一个简单的模型。

lr = LogisticRegression()
lr.fit(train_dataset,train_labels)

这是我尝试做的代码,它给我的错误。

ValueError: Found array with dim 3. Estimator expected <= 2.

知道吗?

161037 次浏览

Scikit-learn 期望为 合身函数的训练数据集使用2d num 数组。您要传入的数据集是一个3d 数组,您需要将该数组重塑为2d 数组。

nsamples, nx, ny = train_dataset.shape
d2_train_dataset = train_dataset.reshape((nsamples,nx*ny))

在 LSTM、 GRU 和 TCN 层中,Dence Layer 之前最后一层的 return _ order 必须设置为 False。 这是您在处理此错误消息时遇到的条件之一。

如果有人在两个或两个以上的时间序列中使用 LSTM 或任何 RNN 偶然发现这个问题,这可能是一个解决方案。

然而,对于那些希望在两个不同的预测值之间产生误差的人来说,例如,如果你试图预测两个完全不同的时间序列,那么你可以这样做:

from sklearn import mean_squared_error
# Any sklearn function that takes 2D data only
# 3D data
real = np.array([
[
[1,60],
[2,70],
[3,80]
],
[
[2,70],
[3,80],
[4,90]
]
])


pred = np.array([
[
[1.1,62.1],
[2.1,72.1],
[3.1,82.1]
],
[
[2.1,72.1],
[3.1,82.1],
[4.1,92.1]
]
])


# Error/Some Metric on Feature 1:
print(mean_squared_error(real[:,:,0], pred[:,:,0]) # 0.1000


# Error/Some Metric on Feature 2:
print(mean_squared_error(real[:,:,1], pred[:,:,1]) # 2.0000

附加信息从麻木的索引

您可能在模型中使用了最后一个“ lstm”层,即“ return _ ences = True”。 将其更改为 false,以便不返回进一步 lstm 模型的输出。

我有一个类似的错误,解决了一个图像分类问题。我们有一个三维矩阵: 第一维是图像的总数,可以用“-1”代替,第二维是图像高度和宽度的乘积,第三维等于三,因为 RGB 图像有三个通道(红色,绿色蓝色)。如果我们不想丢失关于图像颜色的信息,那么我们使用 x _ train。重塑(- 1,nx纽约3)。如果可以忽略颜色,从而减小矩阵的大小: x _ train。重塑(- 1,nx纽约1)