建立模型以预测来自多个输入的单个输出时,如何选择参数?

时间:2019-10-27 17:46:45

标签: python machine-learning keras

我需要构建一个keras模型,以便将来仅使用日期进行预测。我有一个像这样的数据集。

date,year,month,dayofyear,dayOfMonth,dayOfWeek,week,temp
1948-01-01,1948,1,001,01,4,00,51
1948-01-02,1948,1,002,02,5,00,45
1948-01-03,1948,1,003,03,6,00,45
.
.
.
2017-10-22,2017,10,295,22,0,42,60
2017-10-23,2017,10,296,23,1,43,65

我有6种不同的输入功能和1种温度输出。到目前为止,我将使用此存储库进行将来的预测。

https://github.com/bielrv/Keras-Daily-Sales-Forecast

在存储库中,模型结构是这样的。

model = Sequential()

model.add(Dense(128,
                activation='relu',
                input_dim = X_num_columns))

model.add(Dense(64,
                activation='relu'))
model.add(Dropout(0.2))

model.add(Dense(32,
                activation='relu'))
model.add(Dropout(0.2))

model.add(Dense(16,
                activation='relu'))
model.add(Dropout(0.2))

model.add(Dense(1,
                activation='linear'))

model.compile(optimizer='adam', loss='mean_squared_logarithmic_error', metrics=['accuracy'])

model.fit(X_train, y_train, epochs=5000, batch_size=30,validation_data=(X_val, Y_val))

当我将来需要预测数据时,我将有另一个这样的csv文件。

date,year,month,dayofyear,dayOfMonth,dayOfWeek,week
2017-10-24,2017,10,297,24,2,43
2017-10-25,2017,10,298,25,3,43
2017-10-26,2017,10,299,26,4,43
.
.
.
2017-12-12,2017,12,346,12,2,50
2017-12-13,2017,12,347,13,3,50
2017-12-14,2017,12,348,14,4,50

该模型接受上述输入,并使用dayofyear,dayofmonth等进行预测。

但是当我检查准确性(不超过0.07)和预测结果时,我可以理解超参数是错误的。

Results of the prediction (orange is true value, blue is predicted value)

所以我不明白如何在这种情况下选择要使用的层,或者要使用多少个神经元,或者多少个时期和批次将适合该结构。我有点迷路了。我需要帮助。

1 个答案:

答案 0 :(得分:0)

您处于回归设置中,准确性为毫无意义-仅在分类设置中有意义。有关更多详细信息,请参见What function defines accuracy in Keras when the loss is mean squared error (MSE)?(尽管标题如此,它也适用于均方对数误差的情况)。

您应该从模型编译中删除Please enter pin: abc Error only 6 characters allowed Please enter pin: 123456 Error only numbers allowed Please enter pin: 123456 Entered correct format pin 语句,而直接使用 loss 进行诊断。