锅炉信息网 > 锅炉知识 > 锅炉资讯

剔除集合中过大过小的异常值

发布时间:

一个集合X中可能存在过大或过小的异常值,希望计算一个范围,剔除集合X中过大或过小的异常值,这个范围的上下限就是阈值,较大值称为阈值

一个集合X中可能存在过大或过小的异常值,希望计算一个范围,剔除集合X中过大或过小的异常值,这个范围的上下限就是阈值,较大值称为阈值上限,记为threshold_up,较小值称为阈值下限,记为threshold_down
X=[x1,x2,…,xn]
算法原理
集合中只有少数是异常值,如果把X中的点看作空间中的点,则某个点距离其他点都很远时认为该点是异常值,正常值取值范围就是正常值中最小值到最大值的范围。
计算过程
1. 计算每个xi与其他所有值的绝对差的和,称为半径,记为R


其中ri是半径序列R的第i个元素。
2. 记录下R中的元素从小到大排序后的索引序列,记为R_psort
3. 最小半径min_r和最大半径max_r
min_r=RR_psort(1)
max_r= RR_psort (-1)
其中R_psort(1)是R_psort序列中的第一个(同R_psort1),R_psort(-1) 是R_psort序列中的最后一个。
4. 如果max_rmin_r大一个数量级(max_rmin_r*10)则把大于min_r*5以上的半径对应的xi剔除。
(1) 大于min_r*5的索引min_r5_pos
min_r5_pos=j,RR_psort(j)≥min_r*5
(2) 按索引剔除X序列中的数,得到X_new
X_new=XXR_psort(jmin_r5_pos)
其中R_psort(jmin_r5_pos)是R_psort中所有不小于min_r5_pos的索引集合。
(3) 用X_new重复1,2,3,4,直到不满足max_rmin_r*10。
5. 设最小半径的倍数为n(默认n=2,n≤5),称为半径倍数,找到半径大于min_r*n的索引min_rn_pos
min_rn_pos= j,RR_psort(j)>min_r*n
6. min_rn_pos之前的xi为正常值序列,称为阈值序列,记为X_normal
X_normal=XR_psort (jmin_rn_pos-1)
7. 计算阈值上下限threshold_upthreshold_down
threshold_up= max(X_normal)
threshold_down= min(X_normal)
写出代码:

ABCD
1=seq/集合X
2=up_down/上限或下限
3=n/半径倍数n
4=func(A7,seq,up_down,n)
5return A4/返回结果
6/计算阈值,参数:序列,上限或下限,半径
7func
8=if(B7=="up",func(A10,A7,C7),func(A15,A7,C7))/如果取上限就取阈值序列的最大值,下限就取阈值序列的最小值
9/计算阈值上限
10func
11=A10.select(~)/过滤 null
12if B11==[]return null
13=func(A20,B11,B10).max()/X_normal.max()
14/计算阈值下限
15func
16=A15.select(~)/过滤 null
17if B16==[]return null
18=func(A20,B16,B15).min()/ X_normal.min()
19/计算阈值序列,参数:序列,半径倍数
20func
21=A20.((v=~,A20.(abs(v-~))).sum())/R
22=B21.psort()/R_psort
23if B21(B22(1))*10<B21(B22.m(-1))=B22.pselect(B21(~)>=B21(B22(1))*5)/如果 max_r>min_r*10min_r5_pos
24=A20(A20(B22.m(C23:)))/去掉大于 min_r*5 的值
25return func(A20,C24,B20)
26else=B21(B22(1))*B20/min_r*n
27=(gt_min=B22.pselect(B21(~)>C26),if(!gt_min,A20.len(),gt_min-1))/min_rn_pos
28=A20(B22.to(C27))/X_normal

输入参数说明:
1. A1中的seq是输入集合X
2. A2中的up_down是计算上限还是下限的参数。
up_down=“up”时,计算阈值上限;
up_down=“down”时,计算阈值下限。
3. A3中的n是半径倍数n
2≤n≤5
n越大正常值的取值范围越大,即阈值上限越大,阈值下限越小。
算法效果实例
1. 把集合X和不同半径倍数n条件下的阈值上下限画在图上如下:


图中横轴是每个值的索引,纵轴是X中值的大小。图右侧的图例说明
X:集合X
X_n2_up:n=2时的阈值上限
X_n2_down:n=2时的阈值下限
X_n2.5_up:n=2.5时的阈值上限
X_n2.5_down:n=2.5时的阈值下限
X_n3_up:n=3时的阈值上限
X_n3_down:n=3时的阈值下限
不大于阈值上限且不小于阈值下限的值就是X中的正常值。


http://www.raqsoft.com.cn/wx/course-data-mining.html

精选推荐

  • 如何正确选择白板供应商
    如何正确选择白板供应商

    目前在无锡想采购一块白板不管是实体店铺,还是网络平台都有很多选择,想要到专业的无锡白板公司采购还需要掌握一定的方式技巧。现

  • 柴油发电机组供应商
    柴油发电机组供应商

      t 扬州华东动力机械有限公司,位于江苏省扬州市江都区仙城工业园,是专业从事发电机、柴油及燃气发电机组研发、制造、销售、服务于

  • 高温辐射炉
    高温辐射炉

    5.2.2高温辐射炉5.2.2.1温度控制★(1)样品温度范围:常温~1400℃。★(2)均温区:长度不小于80mm。★(3)中心区:长度不小于10mm。(4)温度梯度(均

  • 高压锅在什么情况下会爆炸?
    高压锅在什么情况下会爆炸?

    近日,多地发生高压锅爆炸事故,给不少家庭带来了伤害和财产损失。那么,什么情况下会导致高压锅爆炸呢?首先,当高压锅内部压力过高时,如果

0