Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据分割时间序列_Python_Time Series_Accelerometer - Fatal编程技术网

Python 数据分割时间序列

Python 数据分割时间序列,python,time-series,accelerometer,Python,Time Series,Accelerometer,如何将表示重要数据的序列与不重要数据的序列分开? 一些背景和一个例子: 从数据图(图-见链接)中可以看出,该时间序列中有9个分段,由IMU记录(测量加速度–x,y,z,围绕x,y,z的方向旋转)。该图可在以下链接中找到: 绘图所依赖的数据: 在这种情况下,这些表示从右手剪下的动作。每个信号之间都有延迟(2-3秒)。这种延迟也可以延长 哪种方法最容易分割数据?我在哪里可以找到这些方法的示例,或者你能给我一个简单的方法吗我想知道什么?:相关信号的起点在哪里? 异常检测。我已经实现了这一点,但它的

如何将表示重要数据的序列与不重要数据的序列分开?

一些背景和一个例子: 从数据图(图-见链接)中可以看出,该时间序列中有9个分段,由IMU记录(测量加速度–x,y,z,围绕x,y,z的方向旋转)。该图可在以下链接中找到:

绘图所依赖的数据:

在这种情况下,这些表示从右手剪下的动作。每个信号之间都有延迟(2-3秒)。这种延迟也可以延长

哪种方法最容易分割数据?我在哪里可以找到这些方法的示例,或者你能给我一个简单的方法吗我想知道什么?:相关信号的起点在哪里?

  • 异常检测。我已经实现了这一点,但它的预测非常模糊(我还没有优化它)。也许我需要比原始数据更好的特性。我问这个问题是因为可能有更简单的方法
  • K-means聚类:也考虑过这一点,但我该如何处理?有例子吗
  • 频域分析: 将原始数据分割为具有重叠的帧(大小为100),并将这些帧转换为频率域。我可以使用哪些功能?关于信号能量的思考
  • 其他方法
之后,这些片段将用作手势分类器的训练示例

[可选附加信息:录制环境:手悬空->执行手势-->手悬空-->在松臂位置等待5秒-->[录制手势的下一次迭代]。 另一个重要条件是,我还需要分割不同种类的手势(信号看起来不同),不仅是剪手势,还可以向上、向下或竖起拇指。]

提前非常感谢:)


向Max问好“我如何将代表重要数据的序列与不重要数据的序列分开?” 你的问题不明确。“重要”是主观的,而不是数据本身

然而,如果你想构建一个分类器,你可以把这个问题重新定义为“什么是最好的保守子序列?”。您可以回答以下问题:


[matrixProfile、profileIndex、MotionIndex、discordIndex]=interactiveMatrixProfileVer2(ay,250);(代码免费提供)

“如何将表示重要数据的序列与不重要数据的序列分开?” 你的问题不明确。“重要”是主观的,而不是数据本身

然而,如果你想构建一个分类器,你可以把这个问题重新定义为“什么是最好的保守子序列?”。您可以回答以下问题:


[matrixProfile、profileIndex、MotionIndex、discordIndex]=interactiveMatrixProfileVer2(ay,250);(代码免费提供)

有一些可能的解决方案: DBSCAN 或 DTW方法

此外,您还可以手动执行(例如Matlab m-file)。 这里:axaR是来自加速计(沿x轴)的信号,k-点数,阈值-手动调整值

figure (100)

for fig = 1: 5
k = 200;
threshold =20*fig*std(axaR);
fprintf('window size %d, threshold is %f\n', k,threshold)  
for i = 1: (length(axaR)-k)
    summa = 0;
    for j= 1:k
    summa =  summa + abs(axaR(i+j));
    end
    if (summa > threshold)
        c(i) = 1;
    else
        c(i) = 0;

    end
end

subplot(5,1,fig)
plot ( axaR, 'LineWidth', lw), hold on
plot(1:k,ones(k,1),'*r')
hold on, 
plot ( c, 'LineWidth', lw),
hold on, 
xlim([0,5000]),
title (strcat('threshold ', num2str(threshold), 'window size', num2str(k) ))
end

这是步行分析的例子,它是完全基于直觉的方法,如果你知道任何数学或物理背景,请不要犹豫分享它


最佳

以下是一些可能的解决方案: DBSCAN 或 DTW方法

此外,您还可以手动执行(例如Matlab m-file)。 这里:axaR是来自加速计(沿x轴)的信号,k-点数,阈值-手动调整值

figure (100)

for fig = 1: 5
k = 200;
threshold =20*fig*std(axaR);
fprintf('window size %d, threshold is %f\n', k,threshold)  
for i = 1: (length(axaR)-k)
    summa = 0;
    for j= 1:k
    summa =  summa + abs(axaR(i+j));
    end
    if (summa > threshold)
        c(i) = 1;
    else
        c(i) = 0;

    end
end

subplot(5,1,fig)
plot ( axaR, 'LineWidth', lw), hold on
plot(1:k,ones(k,1),'*r')
hold on, 
plot ( c, 'LineWidth', lw),
hold on, 
xlim([0,5000]),
title (strcat('threshold ', num2str(threshold), 'window size', num2str(k) ))
end

这是步行分析的例子,它是完全基于直觉的方法,如果你知道任何数学或物理背景,请不要犹豫分享它


最佳

如果您想手动分割数据(监督学习),我遇到了同样的问题,因此我创建了一个简单的python matplotlib库:

如果要手动分割数据(监督学习),我遇到了同样的问题,因此我创建了一个简单的python matplotlib库:

非常感谢,这非常有帮助!非常感谢,这非常有帮助!请允许您在下一次使用CTRL+G为可读性设计代码格式。请允许您在下一次使用CTRL+G为可读性设计代码格式