Python 数百万分类数据+;输入LSTM的位置和时间。我在这里做了所有的答案

Python 数百万分类数据+;输入LSTM的位置和时间。我在这里做了所有的答案,python,deep-learning,time-series,lstm,categorical-data,Python,Deep Learning,Time Series,Lstm,Categorical Data,我有以下问题,我一直无法在这里或其他任何地方找到答案。我已经被这个问题困扰了很长时间了。 我真的需要有人帮忙 我在python中有一个4维的1.2亿行的数据帧,表示设备ID在特定时刻的位置。 device_id列是分类的,其余的是数字的。 此数据集中有1500万个不同的设备id,以分类数据的形式出现 数据帧如下所示(前3行) 我必须把这个数据帧输入一个加权的集合LSTM 我无法使用一个热编码器将设备id分类列转换为数字列,因为这将创建一个包含数十亿个零的矩阵,并且LSTM将给出错误的预测 我尝试

我有以下问题,我一直无法在这里或其他任何地方找到答案。我已经被这个问题困扰了很长时间了。 我真的需要有人帮忙

我在python中有一个4维的1.2亿行的数据帧,表示设备ID在特定时刻的位置。 device_id列是分类的,其余的是数字的。 此数据集中有1500万个不同的设备id,以分类数据的形式出现
数据帧如下所示(前3行)

我必须把这个数据帧输入一个加权的集合LSTM

我无法使用一个热编码器将设备id分类列转换为数字列,因为这将创建一个包含数十亿个零的矩阵,并且LSTM将给出错误的预测 我尝试如下标签编码器

#transforming device_id into numbers
le = preprocessing.LabelEncoder()
data1['device'] = le.fit_transform(data1['device_id'])
这就是结果

device_id       seconds       latitude      longitude
7658              752         53.392060     -2.069796
7658              752         53.392060     -2.069796
4433              754         51.496483      0.116620
它非常适合LSTM,但它给出了错误的预测

我还使用此代码将长lat转换为x,y,z坐标

data1['x'] = data1.apply(lambda row : np.cos(row.lat1_rad)* np.cos(row.long1) * 6371 , axis =1)
data1['y'] = data1.apply(lambda row : np.cos(row.lat1_rad)* np.sin(row.long1) * 6371 , axis =1)
data1['z'] = data1.apply(lambda row : np.sin(row.long1) * 6371, axis =1)
因此,错误一定是使用标签编码器将1500万设备ID的分类数据转换为数字数据

LSTM网络应该做的预测是关于设备ID的位置,因此我不能忽略带有设备ID的列

我正在考虑使用自动编码器,但我可能需要输入1500万个不同的设备id,我也会遇到同样的问题。 此外,结果必须是LSTM能够使用的向量

有什么想法吗


非常感谢,我真的需要这方面的帮助

这部分我没有得到:
它非常适合LSTM,但它给出了错误的预测
,你怎么知道预测是错误的?因为我尝试用以前的数据预测2019年3月,我可以看到预测是否错误。每个人都告诉我,从分类到数字的转换是一个问题。但是没有人告诉我如何解决这个问题。有什么想法吗?你的例子很难阅读,预测变量是device_id?你怎么能让同一个设备有两个不同的行呢?因为当你测量它时,它在同一个位置。您在同一位置具有相同的设备id,或者您可能在另一位置具有相同的设备id,因为正在移动。预测是设备id的经度和纬度。意思是:这是设备id在这么长的纬度上,明天会在哪里?但除此之外,我相信转换才是问题所在。即使我取出所有重复的设备id,我也会有大约400万个。我们回到同一个问题。你能帮我转换一下或者其他的想法吗?自动编码器?这部分我没有得到:
它非常适合LSTM,但它给出了错误的预测
,您如何知道预测是错误的?因为我尝试使用以前的数据预测2019年3月,我可以看到预测是否错误。每个人都告诉我,从分类到数字的转换是一个问题。但是没有人告诉我如何解决这个问题。有什么想法吗?你的例子很难阅读,预测变量是device_id?你怎么能让同一个设备有两个不同的行呢?因为当你测量它时,它在同一个位置。您在同一位置具有相同的设备id,或者您可能在另一位置具有相同的设备id,因为正在移动。预测是设备id的经度和纬度。意思是:这是设备id在这么长的纬度上,明天会在哪里?但除此之外,我相信转换才是问题所在。即使我取出所有重复的设备id,我也会有大约400万个。我们回到同一个问题。你能帮我转换一下或者其他的想法吗?自动编码器?
data1['x'] = data1.apply(lambda row : np.cos(row.lat1_rad)* np.cos(row.long1) * 6371 , axis =1)
data1['y'] = data1.apply(lambda row : np.cos(row.lat1_rad)* np.sin(row.long1) * 6371 , axis =1)
data1['z'] = data1.apply(lambda row : np.sin(row.long1) * 6371, axis =1)