Tensorflow 模型预处理时间数据

Tensorflow Model PreProcess Time Data

我得到了出租车客户何时何地进入他的车辆的信息。现在我想预测他想在哪条街上开车。我的数据集是这样的:

例子

日、时、分、入口、目的地(标签)

星期一,10 号,45 号,ExampleStreet,WhosebugCorner(未预处理)

0、10、45、0、1(预处理)

转换成这样:

现在我像这样预处理我的数据集:

日期 -> 0-6 的数字(0 星期一,1 星期二...)

小时 -> 欧洲格式从 0-24

分钟 -> 无预处理

入口 -> 我使用了 LabelEncoder (0 ExampleStreet, 1 ExampleCorner ...)

目的地 -> 与带有标签编码器的入口相同

我得到了 98 个可能的目的地和相同数量的入口以及大约 700 个样本。 我已经使用了 Tensorflow,但只得到接近 0 的验证准确率。

model = keras.Sequential([     

tf.keras.layers.Dense(100, activation='relu'),
keras.layers.BatchNormalization(),
tf.keras.layers.Dropout(0.4),

tf.keras.layers.Dense(100, activation='relu'),

tf.keras.layers.Dropout(0.3),

tf.keras.layers.Dense(98,activation="softmax")
]) 
optimizer=keras.optimizers.RMSprop()
model.compile(optimizer=optimizer, loss=tf.keras.losses.sparse_categorical_crossentropy,     metrics=['accuracy'])

问题

我是否正确地预处理了我的数据?我是否需要热编码或收集更多样本?另一种算法可能更有效(树?)?

提前致谢...

您需要一个入口和日期的热编码。并且可能 - 小时。

您需要更多样本(样本数量应接近模型变量数量的数量级)。但是试试 one-hot 看看

作为最低限度,您应该对入口和目的地进行一次性编码,使用标签编码将整数分配给这些特征,这些特征将被模型解释为具有数值关系的序数值。显然没有入口和目的地的“排序”。我会像您所做的那样对日期进行编码,因为一周中的天数显然是按顺序排列的,小时和分钟也是如此。我怀疑 minute 作为一项功能有多大用处,因此您可能不想包含它。使用 98 类 和只有 700 个样本,您的模型是否会产生非常高的准确性值得怀疑。