Are you sure you want to delete this access key?
检测窗口: 在一个时间段内的多个时间点上采集得到的电流值形成一个向量, 同一个汇流箱内各个组串的电流向量组合在一起形成相关系数矩阵, 这个时间段叫做检测窗口,默认为1天。
检测频率: 检测计算执行的频率叫做检测频率,默认为4小时。
输入:DataFrame,包含一个汇流箱所有组串在多个月份中的电流值,索引为时间,列包括组串ID和电流值;
输出:正常、关注、告警间的两个分隔值;
纵表转横表(组串ID变为列指标,索引仍为时间),剔除(或插补,可以扩展其他方法)有缺失的行;
按检测窗口长度分组;
对每个检测窗口分别计算:
i. 计算每个窗口内电流相关系数矩阵;
i. 取矩阵每列中位数,得到一个长度为组串数量的向量 $c_t$;
i. 判断向量的极性:取向量中最大值 $max(c_t)$ 和最小值 $min(c_t$)$ 对应的组串的平均电流值,分别为$I_1$ 和 $I_2$,若 $I_1 > I_2$,说明极性为正,否则为负;
i. 极性为负时,使用 $1 - c_t$ 代替 $c_t$,1作为参数可调,以聚类效果好为选择依据;
汇总所有窗口内的相关系数中值,对 $[-1,;1]$ 区间内的相关系数做 $K=3$ 的聚类;
取聚类下边界的 $0.5\sigma$ 下界和后续区间的上边界的最大值作为区间分隔阈值;
在检测窗口内,取组串电流在早上7:00-19:00之间的电流值,计算频率暂定每天算一次,每次计算量为一个窗口期数据量;
输入为一个纵表,纵表转横表(组串ID变为列指标,索引仍为时间);
计算所有组串的相关系数矩阵;
取每列的中位数作为该组串的相关系数;
与训练出来的阈值进行比较、分类;
输入:DataFrame,包含一个汇流箱所有组串在多个月份中的电流值,索引为时间,列包括组串ID和电流值;
输出:正常、关注、告警间的两个分隔值;
待训练参数:最低电流因子(需要不断调试)。
在纵表上算出每月最大电流,返回一个序列,索引为月份,值为电流值;
纵表转横表(组串ID变为列指标,索引仍为时间),剔除(或插补,可以扩展其他方法)有缺失的行;
按日分组;
计算当月最低峰值:当月最大电流 $\times$ 最低电流因子;
剔除 每日最大电流 低于 当月最低峰值的数据;
分别取每个组串在检测窗口内的电流最大值,形成最大值向量,取其中的最大值所在的组串,标记为最大电流组串;
在每个检测窗口内计算每日每个组串的电流向量与最大电流向量的相关系数;
汇总所有组串在整个分析区间上的相关系数,对 $[-1,;1]$ 区间内的相关系数做 $K=3$ 的聚类;
取聚类下边界的 $0.5\sigma$ 下界和后续区间的上边界的最大值作为区间分隔阈值;
根据不同的 最低电流因子 得到对应的阈值,与运维检测数据吻合最好的, 就是最优的 最低电流因子 和 分类阈值。
ycz6502 造数据后的计算结果(与直接计算结果不同):
正常组范围:[0.9274, 1.00],组串个数:1256
关注组范围:[0.200, 0.45],组串个数:19
异常组范围:[-0.3115, 0.05],组串个数:5
组间分隔阈值:0.0752, 0.8911
在检测窗口内,取组串电流在早上7:00-19:00之间的电流值,计算频率暂定每天算一次,每次计算量为一个窗口期数据量;
输入为一个纵表,纵表转横表(组串ID变为列指标,索引仍为时间);
分别取每个组串在当前检测窗口内的最大值,形成最大值向量,取其中的最大值所在的组串,标记为最大电流组串;
在检测窗口内计算该组串与其他组串的电流相关系数;
与训练出来的阈值进行比较、分类;
分类阈值是否受季节影响:目前还没做;
纵表转横表后缺失值的处理方式:删除、填补等:目前写死采用删除方式;
最大电流法中的参数 最低电流因子 的调试方法:目前可配置。
如何确定聚类分组数量,目前为定值3,不适合处理全部正常(或异常)的数据:目前写死为3;
聚类下边界向下幅度可配置(默认0.5):目前写死为0.5;
Press p or to see the previous file or, n or to see the next file
Are you sure you want to delete this access key?
Are you sure you want to delete this access key?
Are you sure you want to delete this access key?
Are you sure you want to delete this access key?