我从不同传感器中获得了多个曲线,但这些传感器都附着在同一个移动物体上。
现在我想从中提取特征,假设我将0-10的时间段作为窗口1,那么在窗口1中我有5个图表,每个图表代表一个特定位置的传感器,每个传感器生成3条曲线,分别是x(红色)、y(绿色)和z(蓝色),如下图所示:
**整个图表是一个单一窗口
由于所有传感器都附着在同一个移动物体上,我认为这些图表和曲线之间应该有一些可以用作机器学习算法(特别是SVM)特征的关系。但它们实在是太多了,我有点迷茫了。
从这个单一窗口中我能生成多少合理的特征?
非常感谢任何建议…谢谢!
回答:
你可以通过解决正交Procrustes问题来将不同的时间序列转换到同一个坐标系中。
这是你提供的五个欧拉角数组(它们存储在arr[0]
到arr[4]
中,作为169×3的numpy数组):
现在我们通过以下Python程序解决正交Procrustes问题,这允许我们将一个数组旋转以尽可能接近另一个数组:
def rotate_into(arr0, arr1): """解决正交Procrustes问题""" M = dot(arr0.T, arr1) (U,S,V) = svd(M) Q = dot(U, V) # 转换arr0到arr1的旋转矩阵 return arr0.dot(Q)
svd
是奇异值分解,位于numpy.linalg.svd
中。现在我们可以将这个程序应用到每个数组上,并将其转换为尽可能接近参考数组,这里是第一个数组:
reference = 0for i in range(0,5): subplot(2,3, i+1) plot(rotate_into(arr[i], arr[reference]))
现在所有系列都是可比较的,你可以通过计算均值、标准差等来轻松提取特征。