本文思想来自:时间序列数据的分段线性表示
PLR算法以拟合误差为阈值,会出现两类问题:
- 采用累积误差进行分段的算法对短时间内大波动数据不敏感,分段效果差;
- 采用平均误差的分段算法在遇到长时间小波动数据后,对明显状态变化处理不敏感,各个子序列的开始与结束时间不精确。
即,由于采用累积误差或平均误差,对一些状态变化的拐点不敏感。
伪代码:
python代码:
def Select_Important_Points(T, R):
X = []
for i in range(0, len(T)):
X.append((i, T[i]))
vital_point = []
vital_point.insert(0, X[0])
index = 0
for i in range(1, len(T) - 1):
if T[i] > T[i - 1] and T[i] > T[i + 1]:
if T[i] / T[index] > R:
index += 1
vital_point.insert(index, X[i])
if T[i] < T[i - 1] and T[i] < T[i + 1]:
if T[i] == 0 or T[index] / T[i] > R:
index += 1
vital_point.insert(index, X[i])
index += 1
vital_point.insert(index, X[len(T) - 1])
return vital_point
然后直接对相邻特征点间的点进行直线拟合。