Keras回归预测结果总是得到0

knpiaxh1  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(250)

说到深度学习,我还是个新手。我正在尝试使用不同的指数来预测每年的确切整数数字。我的数据集(称为“x”)是这样的。(它一直持续到2008年)

SF 10.7 SOI N12 N3  N34 N4  BEST lv TNA TSA WHWP    ... PWR TPSE    ATSE    AMOL    AMM NTA CAR QBO GIAM    counts
Unnamed: 0                                                                                  
1979    1803.0  1.1 0.16    -0.15   -0.29   -0.24   -0.08   0.42    0.10    -0.81   ... -0.200  0.517   0.514   -0.051  1.96    0.11    -0.20   -19.60  0.68    2
1980    1932.0  -0.0    -0.36   0.08    0.21    0.16    0.64    0.47    -0.08   1.21    ... -0.163  0.781   0.645   0.100   3.64    0.07    0.10    7.33    0.45    3
1981    1569.0  2.0 -0.63   -0.43   -0.46   -0.59   -0.47   0.18    -0.22   -0.80   ... -0.041  -0.190  0.220   -0.066  2.19    -0.07   -0.08   -3.49   0.20    0
1982    1719.0  -1.7    0.13    0.54    0.53    0.45    1.74    -0.15   -0.45   -0.14   ... -0.273  1.468   -0.734  -0.188  -0.30   -0.24   -0.19   -15.94  1.14    3

我的目标数据(称为“y”)是这样的。

[2 3 0 3 3 1 3 0 1 2 3 1 4 4 2 2 2 0 3 4 1 3 1 4 1 1 2 1 0 2]

数据集x有两个维度,长度为30,目标数据集有一个维度,长度为30,所以它们有相同的时间尺度。
我选择了数据集x的第一列

Unnamed: 0
1979    1803.0
1980    1932.0
1981    1569.0
1982    1719.0
1983    1386.0
1984    1003.0
1985     761.0
1986     676.0
1987     779.0
1988    1394.0
1989    2396.0
1990    1709.0
1991    2068.0
1992    1167.0
1993    1093.0
1994     773.0
1995     757.0
1996     696.0
1997     717.0
1998    1084.0
1999    1698.0
2000    1798.0
2001    1737.0
2002    1487.0
2003    1293.0
2004     974.0
2005     937.0
2006     765.0
2007     737.0
2008     659.0
Name: SF 10.7, dtype: float64

在那之后,我试图用这些代码得到一个试验结果。

model = Sequential([
    Dense(1, kernel_initializer='normal', activation = "relu", input_shape=(1,)) 

model.compile(loss='mean_squared_error', 
              optimizer=Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-8), 
              metrics=[metrics.mse, metrics.mean_absolute_percentage_error])

])

train_history = model.fit(x, y, epochs=50, batch_size=10, validation_split=0.2, verbose=0)

plt.figure(figsize=(12, 4))
plt.scatter(xx, y, alpha=0.7, label='y_true')
plt.scatter(xx, model.predict(xx), alpha=0.7, label='y_pred')
plt.legend()
plt.show()

但是我得到的预测结果总是只有0!数字证明了这一点。所有的y_preds都有0。x1c 0d1x
我真的不知道这个问题。我是否有一个问题的维度或什么。。请帮助我!

xkrw2x1b

xkrw2x1b1#

模型=顺序([密集(1,内核初始化器=“正常”,激活=“relu”,输入形状=(1,))
您的模型只有一个神经元,不足以学习该函数。请尝试向模型添加更多层。

相关问题