python 时间序列突变检测_Python 百度指数突变点检测
百度指數是一款非常好用的工具,通過它我們能知道某些關鍵詞在過去的一些日子里的熱度變化趨勢并能夠對這些數據進行分析。如果能用得好百度指數,我們將能產出巨大的價值。你可以通過關注文章下方的Python實用寶典公眾號,回復百度指數突變點獲得本項目完整源代碼。
今天的教程主要是來教大家如何找出百度指數中突變值的位置,如圖所示畫框框的部分:
30天的數據流中很容易通過人工的方法找到突變數據的位置,但如果是180天呢?這可就不好通過人工的方式來查找了:
如何使用Python自動找出這180天里的突變點?由于這里涉及到了對時間序列的突變點的檢測,我們可以使用一種叫Pettitt突變點檢測算法。
1.獲取數據
通過開發(fā)者工具找到數據接口,結果發(fā)現其接口返回來的數據進行了加密:
看起來就很像字符串替換,如果要從頭開始解密的話需要做一些對比工作(把源數據和該加密數據放一起進行比較)或者直接看前端源代碼 。由于這里不是今天要講的重點內容,我直接使用了他人的開源項目并做了一些修改,?百度指數爬蟲 :https://github.com/longxiaofei/spider-BaiduIndex/tree/master/new_spider_without_selenium
你可以通過關注文章最下方的公眾號(Python實用寶典),回復百度指數突變點獲得本文所有的源代碼。
調用接口爬取數據,然后將爬取到的數據按照關鍵詞存放到數組中,你可以很輕易地修改我的代碼增加/減少關鍵詞,這里我為了簡化問題,僅選擇區(qū)塊鏈一個關鍵詞進行分析。代碼如下:
結果如下:
2.突變點算法
Pettitt突變點檢測算法是用R語言寫的,實現其實很簡單。作者并沒有說為什么這么做,而是給了相應的數學公式,我們試著跟著作者的思路走,看看效果如何。
算法代碼如下:
接下來需要將數據傳入該函數,就能得到這段數據的突變點(一個),由于它只能找出一段數據里的一個突變點,而我們需要獲得的是多個突變點,因此還得設置一個移動窗口,獲得每個窗口中的突變位置。
3.設置窗口獲得每個窗口的突變位置
將數據設為30天一個窗口,檢測每個窗口中的突變值:
結果如下:
這樣看實在是不好看出效果,讓我們用matplotlib可視化一下:
結果:
說實話,不太滿意這個結果,有兩個突變點竟然沒找出來,其中右邊那個突變點其實比較重要。除開這兩個突變點不說,整體上看,這個檢測方法的效果還可以。
文章到此就結束啦, 你可以通過關注文章下方的公眾號(Python實用寶典),回復百度指數突變點獲得本文所有的源代碼。
如果你喜歡今天的Python 教程,請持續(xù)關注Python實用寶典,如果對你有幫助,麻煩在下面點一個贊/在看
,有任何問題都可以在下方留言,我們會耐心解答的!
點擊下方閱讀原文可以獲取本文所有代碼和鏈接哦!
Python實用寶典?(pythondict.com)
不只是一個寶典
歡迎關注公眾號:Python實用寶典
總結
以上是生活随笔為你收集整理的python 时间序列突变检测_Python 百度指数突变点检测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 显示器接口:VGA、HDMI、DVI 、
- 下一篇: 自定义控件从入门到轻生之---解锁新姿势