sklearn Logistic回归“ValueError:找到具有暗淡的数组3.估计的估计值< = 2.”

时间:2016-01-24 04:13:33

标签: python scikit-learn logistic-regression

我试图在这个笔记本中解决这个问题6。问题是使用sklearn.linear_model中的LogisticRegression模型,使用50,100,1000和5000个训练样本训练一个关于此数据的简单模型。 https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/udacity/1_notmnist.ipynb

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

这是我试图做的代码,它给了我错误。 ValueError:找到带有暗淡的数组3.估计的估计值< = 2。

有什么想法吗?

3 个答案:

答案 0 :(得分:53)

scikit-learn期望fit函数的训练数据集的2d num数组。您传入的数据集是一个3d数组,您需要将数组重新整形为2d。

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

答案 1 :(得分:3)

在LSTM,GRU和TCN层中,Dence层之前的最后一层中的return_sequence必须设置False。 这是您遇到此错误消息的条件之一。

答案 2 :(得分:0)

如果有人因为对两个或多个时间序列使用 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

Additional Info from the numpy indexing