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

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

從時間序列中提取模式

從時間序列中提取模式

慕桂英4014372 2023-03-01 16:51:38
我有以下數據集,一個 Pandas 數據框:      Score   min   max               DateLoc0    2.757  0.000  2.757 2020-07-04 11:00:003    2.723  2.723  0.000 2020-07-04 14:00:008    2.724  2.724  0.000 2020-07-04 19:00:0011   2.752  0.000  2.752 2020-07-04 22:00:0013   2.742  2.742  0.000 2020-07-05 00:00:0015   2.781  0.000  2.781 2020-07-05 02:00:0018   2.758  2.758  0.000 2020-07-05 05:00:0020   2.865  0.000  2.865 2020-07-05 07:00:0024   2.832  0.000  2.832 2020-07-05 11:00:0025   2.779  2.779  0.000 2020-07-05 12:00:0029   2.775  2.775  0.000 2020-07-05 16:00:0034   2.954  0.000  2.954 2020-07-05 21:00:0037   2.886  2.886  0.000 2020-07-06 00:00:0048   3.101  0.000  3.101 2020-07-06 11:00:0053   3.012  3.012  0.000 2020-07-06 16:00:0055   3.068  0.000  3.068 2020-07-06 18:00:0061   2.970  2.970  0.000 2020-07-07 00:00:0064   3.058  0.000  3.058 2020-07-07 03:00:00在哪里:Score是一個非常基本的趨勢,min并且max是 的局部最小值和最大值Score。Loc是該行 x 軸上的值,并且date是圖表上該行的值。我正在嘗試從我的代碼中檢測紅色框中的數據,以便我可以在其他數據集上檢測到它?;旧衔艺趯ふ业氖且环N從我的代碼中設置該數據的定義的方法,以便可以從其他數據中檢測到它。到目前為止,我只設法在圖表上標記局部最大值和最小值(黃色和紅色點),我也知道如何用我自己的話來定義該模式,我只需要從代碼中做到這一點:定義最小值/最大值點何時距離先前的最小值/最大值點很遠(因此它具有更高的值)之后,找到局部最小值和最大值的點何時真正彼此接近并且它們的值彼此之間的差異不是很大。簡而言之,當一個強勁的增長之后是一個分數不會上升或下降太多的范圍時我希望這個問題足夠清楚,如果需要我可以提供更多細節。我不知道 Numpy 或任何其他庫是否可行。
查看完整描述

1 回答

?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

我認為動態時間扭曲 (dtw) 可能適合您。我已經將它用于類似的事情。本質上,它允許您評估時間序列的相似性。

以下是我所知道的 python 實現:

  • 快速dtw

  • dtw

  • dtw-python

這是它如何工作的一個體面的解釋

您可以使用它來比較傳入時間序列與紅框中數據的相似程度。

例如:

# Event were looking for

event = np.array([10, 100, 50, 60, 50, 70])


# A matching event occurring

event2 = np.array([0, 7, 12, 4, 11, 100, 51, 62, 53, 72])


# A non matching event

non_event = np.array([0, 5, 10, 5, 10, 20, 30, 20, 11, 9])


distance, path = fastdtw(event, event2)

distance2, path2 = fastdtw(event, non_event)

這將產生一組指數,其中兩個時間序列最匹配。在這一點上,您可以通過您喜歡的任何方法進行評估。我粗略地查看了值的相關性


def event_corr(event,event2, path):

    d = []

    for p in path:

        d.append((event2[p[1]] * event[p[0]])/event[p[0]]**2)


    return np.mean(d)


print("Our event re-occuring is {:0.2f} correlated with our search event.".format(event_corr(event, event2, path)))

print("Our non-event is {:0.2f} correlated with our search event.".format(event_corr(event, non_event, path2)))

產生:


Our event re-occurring is 0.85 correlated with our search event.


Our non-event is 0.45 correlated with our search event.


查看完整回答
反對 回復 2023-03-01
  • 1 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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