2024-05-16 00:33:06 发布
网友
我需要检测从数据集绘制的给定曲线上的奇异点(极值、趋势变化、急剧变化)。首先要考虑的是带导数的拐点检测(但我没有绘制曲线的数学表达式),其次是如何检测角度点。所以如果可能的话,我可以(使用python)构建一个滑动窗口来检测这种SP(奇点),如果可能的话,使用的库和函数是什么?在
谢谢
Singular point detection
我只是scraped some of your data向您展示,您可以在整个数据集中找到点,而无需使用滑动窗口(但理论上您可以):
首先,让我们来看看导数的计算:
import numpy as np import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv("Default Dataset.csv", sep=';', decimal=",", header=None) ### Interpolate linearily ### x_new = np.linspace(0, df[0].iloc[-1], 2000) y_new = np.interp(x_new, df[0], df[1]) ### First and second derivative ### diff1 = np.insert(np.diff(y_new), 0, 0) diff2 = np.insert(np.diff(diff1), 0, 0) ### Plot everything ### plt.figure(figsize=(12,3)) plt.subplot(131) plt.plot(x_new, y_new) plt.subplot(132) plt.plot(x_new, diff1) plt.subplot(133) plt.plot(x_new, diff2) plt.tight_layout()
在这里,我还插值以使数据点之间的间距相等。 此外,我在微分之后使用np.insert函数在0位置插入一个0,以确保与原始数据的形状相同。在
np.insert
0
接下来,我们将找到峰值:
我使用的是peakutils包,因为它在几乎所有情况下都能很好地工作。您可以看到,并不是所有的点都在您的示例中被找到。您可以使用threshold和minimum distance的不同参数来寻找更好的解决方案。但这应该是进一步研究的良好起点。实际上,minimum distance参数将为您提供所需的滑动窗口。在
threshold
minimum distance
我只是scraped some of your data向您展示,您可以在整个数据集中找到点,而无需使用滑动窗口(但理论上您可以):
首先,让我们来看看导数的计算:
在这里,我还插值以使数据点之间的间距相等。 此外,我在微分之后使用
np.insert
函数在0
位置插入一个0
,以确保与原始数据的形状相同。在接下来,我们将找到峰值:
^{pr2}$我使用的是peakutils包,因为它在几乎所有情况下都能很好地工作。您可以看到,并不是所有的点都在您的示例中被找到。您可以使用
threshold
和minimum distance
的不同参数来寻找更好的解决方案。但这应该是进一步研究的良好起点。实际上,minimum distance
参数将为您提供所需的滑动窗口。在相关问题 更多 >
编程相关推荐