Weka-Fliter类-选择属性变量[4]

在研究了weka如何导入导出数据后,根据制作数据模型的要求,我们需要对导入数据进入整理:


整理数据包括:属性处理、样本处理、数据转换(生成新变量)


本文先研究如何程序中选择属性,代码如下:


import java.io.FileReader;

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

public class Filter {

	public static void main(String[] args) throws Exception {
		
		// 第一种方法,在remove类中设置option属性,-R 表示字段范围,1,2表示第1,2个属性不选择
		Remove remove1=new Remove();
		remove1.setOptions(new String[]{"-R","1,2"});
		
		// 第二种方法,直接选择需要剔除的属性
		Remove remove2=new Remove();
		remove2.setAttributeIndices("3,4");
		
		// 获取一份数据
		Instances data=new Instances(new FileReader("data/weather.nominal.arff"));
		
		// 显示原数据的容貌
		System.out.println("原数据有:"+data.numAttributes()+"字段");
		for(int i=0;i<data.numInstances();i++){
			System.out.println(data.instance(i));
		}
		
		// remove1用一下
		remove1.setInputFormat(data); //设置remove使用的数据格式,如果不设置会报 No input instance format define 的错误
		Instances newdata=weka.filters.Filter.useFilter(data, remove1); // 应用remove
		System.out.println("第一种方法,去除第1,2列后数据有:"+newdata.numAttributes()+"字段");
		for(int i=0;i<newdata.numInstances();i++){
			System.out.println(newdata.instance(i));
		}
		
		// remove2用一下
		remove2.setInputFormat(data); //设置remove使用的数据格式,如果不设置会报 No input instance format define 的错误
		newdata=weka.filters.Filter.useFilter(data, remove2); // 应用remove
		System.out.println("第二种方法,去除3,4列后数据有:"+newdata.numAttributes()+"字段");
		for(int i=0;i<newdata.numInstances();i++){
			System.out.println(newdata.instance(i));
		}

	}

}

看一下结果:                                                    

               



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值