使用kleinbergs(2002)算法检测成批数据中的突发。
burst_detection的Python项目详细描述
==
突发检测
==
==
这个包实现了kleinberg的成批数据突发检测算法,如论文"流中的突发和分层结构"(2002)中所述。
突发检测识别目标事件异常频繁的时间段,或者"突发",你可以使用突发检测来检测连续的事件流(如接收电子邮件)或离散的事件批(如向年度会议提交的海报标题)中的突发。此包标识离散批处理数据中的突发。已经编写了脚本来识别连续数据中的突发(请参见python中的"pyspreats"或r中的"spreats")。
"以获得对突发检测背后的理论以及如何适当使用以下功能的坚实理解。
突发检测:
~~~~~~~~~~~~~~~~~~~~~~~~~~~
此函数返回观察到的目标概率序列的两状态自动机的最佳状态序列q。最佳状态序列q由0和1(长度为n)组成,其中0表示系统处于基线状态,1表示系统在时间t时处于突发状态。突发检测对噪声敏感,因此您可以选择平滑减少噪声影响的目标概率。
与向上移动状态相关的
-smooth-win:平滑窗口的宽度到时间平滑目标概率(使用奇数;设置smooth-win=1到跳过平滑)
输出:
-q:最佳状态序列(nx1)
-d:每个时间段中的事件数(nx1)
-r:每个时间段内的目标事件数(nx1)
-p:与每个状态相关的概率(kx1)
平滑双赢=3)
枚举突发:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
此函数创建处于最佳状态序列q的所有突发的列表。
input:
-q:最佳状态序列(nx1)
output:
-突发:包含每个突发的时间点的pandas数据帧突发开始和结束
用法:
:
突发=枚举突发(q)
突发权重:
~~~~~~~~~~~~~~~~~~
此函数计算与每个突发关联的权重。
输入:
-突发:包含每个突发开始和结束的时间点的pandas数据帧
-r:每个时间段中的目标事件数(nx1)
-d:每个时间段中的事件数(nx1)
-p:每个状态的预期比例(kx1)
输出:
-突发:包含每个突发的权重的pandas数据帧,顺序为
用法:
:
加权突发=突发权重(突发,r,d,p)
示例
=dtype=float)
每个时间点的事件总数
d=n p.数组([9,11,12,10,10,8,12,10,13,11],dtype=float)
时间点数
n=len(r)
找到最佳状态序列(q)
q,d,r,p=bd.突发检测(r,d,n,s=2,gamma=1,平滑_win=1)
爆发的次数
加权的爆发=bd.爆发的重量(爆发,r,d,p)
print'观察到的概率:'
print str(r/d)
print'最佳状态序列:'
print str(q.t)
print'基线概率:'+str(p[0])
print'突发概率:'+str(p[1])
print'加权突发:'
print'加权脉冲
输出:
:
:
观测概率:
[0.00 0.18 0.08 0.60 0.70 0.25 0.67 0.70 0.15 0.09]
0。0。0。1。0。1。1。0。0.]]
基线概率:0.339
突发概率:0.679
加权突发:
+——+——+——+——+——+——+——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————| 8 5.34226
+——+——+——+——+——+——+————+————+————————————————————————————————————————————————————————————————————————————————————————————————————————