亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python中是否有檢測曲線上奇異點的函數?

python中是否有檢測曲線上奇異點的函數?

墨色風雨 2021-12-17 16:17:04
我需要檢測從數據集繪制的給定曲線上的奇異點(極值、趨勢變化、急劇變化)。首先要記住的是帶有推導的拐點檢測(但我沒有繪制曲線的數學表達式),其次是如何檢測角點。所以如果可能的話,我可以構建(使用 python)一個滑動窗口來檢測這些類型的 SP(奇異點),如果可能的話,使用的庫和函數是什么?
查看完整描述

1 回答

?
Helenr

TA貢獻1780條經驗 獲得超4個贊

我剛剛抓取了您的一些數據,向您展示您可以在整個數據集上找到點,而無需使用滑動窗口(但理論上您可以):

  1. 局部極值(在原始數據中找到峰值)

  2. 最大陡度(找到一階導數的峰值)

  3. 拐點(在二階導數中找到峰值)

首先,讓我們看一下計算導數:

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()

在這里,我還進行了插值以在數據點之間具有相等的間距。此外,我在微分后使用函數插入一個0at 位置,以確保與原始數據的形狀相同。0np.insert

http://img1.sycdn.imooc.com//61bc47a30001a4b308550205.jpg

接下來,我們將找到峰值:


import peakutils as pu


ix_abs   = pu.indexes(y_new, thres=0.5, min_dist=15)

ix_diff1 = pu.indexes(diff1, thres=0.5, min_dist=15)

ix_diff2 = pu.indexes(diff2, thres=0.5, min_dist=15)


plt.scatter(x_new[ix_abs], y_new[ix_abs], color='g', label='abs')

plt.scatter(x_new[ix_diff1], y_new[ix_diff1], color='r', label='first deriv')

plt.scatter(x_new[ix_diff2], y_new[ix_diff2], color='purple', label='second deriv')


plt.plot(x_new, y_new)

plt.legend(loc='best')

http://img1.sycdn.imooc.com//61bc47b10001696403790251.jpg

我正在使用peakutils包,因為它幾乎在所有情況下都能很好地工作。您會看到,并未找到示例中指示的所有點。你可以玩與周圍不同的參數threshold,并minimum distance找到更好的解決辦法。但這應該是進一步研究的良好起點。實際上,該minimum distance參數將為您提供所需的滑動窗口


查看完整回答
反對 回復 2021-12-17
  • 1 回答
  • 0 關注
  • 316 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號