如何进行百度指数突变点检测
如何进行百度指数突变点检测,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
百度指数是一款非常好用的工具,通过它我们能知道某些关键词在过去的一些日子里的热度变化趋势并能够对这些数据进行分析。如果能用得好百度指数,我们将能产出巨大的价值。你可以通过关注文章下方的Python实用宝典公众号,回复 百度指数突变点 获得本项目完整源代码。
今天主要是来教大家如何找出百度指数中突变值的位置,如图所示画框框的部分:
30天的数据流中很容易通过人工的方法找到突变数据的位置,但如果是180天呢?这可就不好通过人工的方式来查找了:
如何使用Python自动找出这180天里的突变点?由于这里涉及到了对时间序列的突变点的检测,我们可以使用一种叫 Pettitt突变点检测 算法。
1.获取数据
通过开发者工具找到数据接口,结果发现其接口返回来的数据进行了加密:
看起来就很像字符串替换,如果要从头开始解密的话需要做一些对比工作(把源数据和该加密数据放一起进行比较)或者直接看前端源代码 。由于这里不是今天要讲的重点内容,我直接使用了他人的开源项目并做了一些修改, 百度指数爬虫 :
https://github.com/longxiaofei/spider-BaiduIndex/tree/master/new_spider_without_selenium
你可以通过关注文章最下方的公众号(Python实用宝典),回复 百度指数突变点 获得本文所有的源代码。
调用接口爬取数据,然后将爬取到的数据按照关键词存放到数组中,你可以很轻易地修改我的代码增加/减少关键词,这里我为了简化问题,仅选择区块链一个关键词进行分析。代码如下:
结果如下:
2.突变点算法
Pettitt突变点检测算法是用R语言写的,实现其实很简单。作者并没有说为什么这么做,而是给了相应的数学公式,我们试着跟着作者的思路走,看看效果如何。
算法代码如下:
接下来需要将数据传入该函数,就能得到这段数据的突变点(一个),由于它只能找出一段数据里的一个突变点,而我们需要获得的是多个突变点,因此还得设置一个移动窗口,获得每个窗口中的突变位置。
3.设置窗口获得每个窗口的突变位置
将数据设为30天一个窗口,检测每个窗口中的突变值:
结果如下:
这样看实在是不好看出效果,让我们用matplotlib可视化一下:
结果:
说实话,不太满意这个结果,有两个突变点竟然没找出来,其中右边那个突变点其实比较重要。除开这两个突变点不说,整体上看,这个检测方法的效果还可以。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。