我想用python中的机器学习预测一个时间序列(使用神经网络,但并不重要)。
除了使用先前值的信息($ t-1 $,$ t-2 $,...等)之外,我还想使用另一个变量:一天中的小时。
愚蠢的方法
一种方法是映射:
$ 00:00 \ rightarrow 0 $
$ 01:00 \ rightarrow 1 $
.... 等等。所以我有$ 24 $ $ $ $ 0,1,2,...,23} $。但是有一个问题:$ 23 $和$ 0 $接近,但与此同时,这里没有反映出来。
第二种方法:一种热门编码?
另一种方法是使用$ 24 $条目创建向量,其中除了我们正在查看的类之外,所有元素都为零。这相当于创建虚拟变量。例如:
$ 00:00 \ rightarrow [1,0,0,0,....,0] $
$ 01:00 \ rightarrow [0,1,0,0,...,0] $
......等等。但是有一个问题:这根本没有反映出相关性!
其他方法
我在考虑使用一些循环结构,例如$ sin $,$ cos $或极坐标?
我还没有找到解决方案,但这是我的进步:
这种方法不太有用,但我可以看到一些亮点......有什么想法吗?
答案 0 :(得分:0)
我找到了一个解决方案。从类标签[0,1,2,3,4,5]
我们构建以下
array([[ 0, 15, 24, 33, 42, 51],
[ 1, 10, 25, 34, 43, 52],
[ 2, 11, 20, 35, 44, 53],
[ 3, 12, 21, 30, 45, 54],
[ 4, 13, 22, 31, 40, 55],
[ 5, 14, 23, 32, 41, 50]])
这是通过使用类标签作为第一列来创建的。然后第二列从10开始并转到15但是它被移位以使“间隙”在第一个和第二个标签之间,而不是最后一个和第一个。你重复一遍。
然后你分配
0 --> [ 0, 15, 24, 33, 42, 51]
1 --> [ 1, 10, 25, 34, 43, 52]
等等.. 然后取任何两个“相邻”矢量类的差异的标准是相同的。因此,我们没有任何差距。
我认为可能有点工作,但我不确定是否可以将其提供给功能