Weka-无监督属性过滤器-Interquartile[6-3]

我们继续第6篇的无监督属性过滤器的函数介绍。


Interquartile,用以指示实例的值是否可以视为离群值或极端值。(具体演算,我们就不实验了)

如果用户指定的极端值系数和四分位距的乘积值高于第75个四分位数之间的差,或低于第25个四分位数,该值就被标识为极端值。

具体看代码,我们在代码中注释了各参数的含义:


import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

import weka.core.Instances;
import weka.filters.unsupervised.attribute.InterquartileRange;

public class Interquartile_test {
	public static void main(String[] args) throws IOException, Exception{
		// 读入数据
		Instances data=new Instances(new BufferedReader(new FileReader("data\\weather.numeric.arff")));
		for(int i=0;i<data.numInstances();i++)
			System.out.println(data.instance(i));
		System.out.println("========Interquartile========");
		
		/*
		 * 1, 极端值,离群值只有数值变量才进行运算
		 * 2, 极端值,离群值是就每个记录运算的,如果2个属性,不一致情况下,任意一属性为极端值,那么该记录就是极端值
		 * 3, 极端值计算使用的变量:
		 *    Q1:     25%位置值
		 *    Q3:     75%位置值
		 *    IQR: Q1-Q3
		 * 	  OF:     离群因子
		 * 	  EVF: 极端因子
		 * 4, Q3 + OF*IQR < x <= Q3 + EVF*IQR 上离群
		 * 5, x < Q1 - EVF*IQR 下极端
		 * 
		 * -R 表示属性计算范围
		 * -O 表示指定离群因子
		 * -E 表示指定极端因子
		 * 输出顺序为:离群值标识/极端值标识
		 * 
		 */
		
		InterquartileRange in=new InterquartileRange();
		in.setOptions(new String[]{"-R","first-last","-O","3","-E","6"});
		in.setInputFormat(data);
		Instances newdata=weka.filters.Filter.useFilter(data, in);
		
		for(int i=0;i<newdata.numInstances();i++)
			System.out.println(newdata.instance(i));
	}
	
}


结果如下:


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值