如何应用 LSTM 预测停车位可用性
How to apply LSTM to predict parking Availability
我是循环神经网络的新手,我必须应用 LSTM (KERAS) 从我的数据集中预测停车位可用性。我有一个具有两个特征的数据集,时间戳 (Y-M-D H-M-S) 和可用停车位(免费停车位的数量)。从 00:03 AM 到 23:58 PM 的每一天(每天 188 个样本)每隔 5 分钟对停车可用性进行采样,持续时间为 25 周。我需要一些帮助来了解如何应用 LSTM(select 等的时间步长)。
您似乎想了解如何使用数据集并对其应用 LSTM 以从数据中获取一些有意义的信息。
现在您可以在此处重构您的数据集,以从您当前的数据集中创建更多功能,例如
可以从数据中导出的特征
- 每月外卖日期(1-31 是哪一天)
- 一个月中的第几周(1-4 是一个月中的第几周)
- 星期几(周一至周六)
- 现在几点了(你可以取188中的任意一个值)
可以从开源数据中添加的功能
- 今天是什么天气
- 附近有没有假期(下一个holiday/function等剩余天数)
现在让我们假设对于每一行,您的数据中都有 K 个特征,并且您有一个目标,您必须预测哪个是停车位的可用性。
P(#parking_space|X)
现在只需在创建模型时将时间步长保持为变量,并将数据从 X.shape-->(Examples, Features) 重塑为格式 X.shape-->(examples,时间步长,特征)。您可以使用下面的代码并定义您自己的 look_back
这里你的架构将是多对多的,Tx=Ty
def create_dataset_many_to_many(dataset,look_back=70):
data_timestamp=[]
for i in range(len(dataset)-look_back):
data_timestamp.append(dataset[i:i+look_back])
if i%1000==0:
print(i)
return np.array(data_timestamp)
现在可以构建模型了
import tensorflow as tf
import matplotlib.pyplot as plt
# Importing pandas
import pandas as pd
# Importing keras model
from tensorflow.keras.models import Model
# Importing layers like input and dense
from tensorflow.keras.layers import Dense, Input,LSTM,Dropout
#importing train test split
from sklearn.model_selection import train_test_split
class Lstm_model(tf.keras.Model):
def __init__(self, **kwargs):
super(Lstm_model, self).__init__()
self.Lstm1 = tf.keras.layers.LSTM(32,return_sequences=True)
self.Lstm2 = tf.keras.layers.LSTM(32,return_sequences=True)
self.Regressor = tf.keras.layers.Dense(1, )
def call(self, inputs):
input_A=inputs
x = self.Lstm1(input_A)
x = self.Lstm2(x)
pred = self.Regressor(x)
return pred
lstms_ = Lstm_model()
lstms_.compile(optimizer='adam', loss=tf.keras.losses.MeanSquaredError())
lstms_.fit(X,Y, epochs=50)
这只是您如何制作模型的一瞥。
我是循环神经网络的新手,我必须应用 LSTM (KERAS) 从我的数据集中预测停车位可用性。我有一个具有两个特征的数据集,时间戳 (Y-M-D H-M-S) 和可用停车位(免费停车位的数量)。从 00:03 AM 到 23:58 PM 的每一天(每天 188 个样本)每隔 5 分钟对停车可用性进行采样,持续时间为 25 周。我需要一些帮助来了解如何应用 LSTM(select 等的时间步长)。
您似乎想了解如何使用数据集并对其应用 LSTM 以从数据中获取一些有意义的信息。
现在您可以在此处重构您的数据集,以从您当前的数据集中创建更多功能,例如
可以从数据中导出的特征
- 每月外卖日期(1-31 是哪一天)
- 一个月中的第几周(1-4 是一个月中的第几周)
- 星期几(周一至周六)
- 现在几点了(你可以取188中的任意一个值)
可以从开源数据中添加的功能
- 今天是什么天气
- 附近有没有假期(下一个holiday/function等剩余天数)
现在让我们假设对于每一行,您的数据中都有 K 个特征,并且您有一个目标,您必须预测哪个是停车位的可用性。 P(#parking_space|X)
现在只需在创建模型时将时间步长保持为变量,并将数据从 X.shape-->(Examples, Features) 重塑为格式 X.shape-->(examples,时间步长,特征)。您可以使用下面的代码并定义您自己的 look_back
这里你的架构将是多对多的,Tx=Ty
def create_dataset_many_to_many(dataset,look_back=70):
data_timestamp=[]
for i in range(len(dataset)-look_back):
data_timestamp.append(dataset[i:i+look_back])
if i%1000==0:
print(i)
return np.array(data_timestamp)
现在可以构建模型了
import tensorflow as tf
import matplotlib.pyplot as plt
# Importing pandas
import pandas as pd
# Importing keras model
from tensorflow.keras.models import Model
# Importing layers like input and dense
from tensorflow.keras.layers import Dense, Input,LSTM,Dropout
#importing train test split
from sklearn.model_selection import train_test_split
class Lstm_model(tf.keras.Model):
def __init__(self, **kwargs):
super(Lstm_model, self).__init__()
self.Lstm1 = tf.keras.layers.LSTM(32,return_sequences=True)
self.Lstm2 = tf.keras.layers.LSTM(32,return_sequences=True)
self.Regressor = tf.keras.layers.Dense(1, )
def call(self, inputs):
input_A=inputs
x = self.Lstm1(input_A)
x = self.Lstm2(x)
pred = self.Regressor(x)
return pred
lstms_ = Lstm_model()
lstms_.compile(optimizer='adam', loss=tf.keras.losses.MeanSquaredError())
lstms_.fit(X,Y, epochs=50)
这只是您如何制作模型的一瞥。