weka数据集中特征的新增、删除、复制、添加ID

public class AttributeProcess {

/**
*  删除特征
*  第一种方法,在remove类中设置option属性,-R 表示字段范围,删除1 2字段
*  Remove remove1=new Remove();  
        remove1.setOptions(new String[]{"-R","1,2"});  
                           第二种方法,直接选择需要剔除的属性  
        Remove remove2=new Remove();  
        remove2.setAttributeIndices("3,4");
          
                           添加一个特征
         Add f=new Add();    
          -T 表示生成的属性类型(STR字符型,NOM名义型,DAT时间型,NUM默认数值型) 
          -N 表示 插入列的名字 
          -L 表示 插入列是名义型变量的情况下,取值情况 
          -C 表示插在哪个列的位置上 
          -F 表示时间格式,默认:yyyy-MM-dd'T'HH:mm:ss            
        f.setOptions(new String[]{"-T","NOM","-N","nomtest","-L","good,bad","-C","2"});  
        f.setOptions(new String[]{"-T","DAT","-N","timetest","-C","3","-F","2016-6-27"});
        
                          复制特征
                          选择Copy类,设置实例的参数  
        Copy c=new Copy();  
        -R 表示 1,3复制的列,复制后依次在最后 
        c.setOptions(new String[]{"-R","1,3"}); 
                             将第1列和第三列加到Instances的最后
          
                             添加ID
        AddID ad=new AddID();  
        ad.setOptions(new String[]{"-C","3","-N","ID"});                    
                          在第三列插入ID 即1,2,3,4,5,6,7.。。          
* 主要用于对Instances的特征进行增加,删除
* @param instances
* @param filter
* @return
* @throws Exception
*/
public static Instances attributeProcess(Instances instances,Filter filter) throws Exception{
filter.setInputFormat(instances);
return Filter.useFilter(instances, filter);
}
public static Instances attributeProcess(Instances instances,Filter filter,String[] options) throws Exception{
filter.setOptions(options);
filter.setInputFormat(instances);
return Filter.useFilter(instances, filter);
}


public static void main(String[] args) throws Exception{

 // 获取一份数据  
    Instances data=new Instances(new FileReader("C://Program Files/Weka-3-8/data/weather.nominal.arff"));  
// 第一种方法,在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");  
    
    //增加一个字段
    Add add=new Add();
    add.setAttributeName("yy");
    add.setAttributeIndex(data.numAttributes()+"");
      
    
    // remove1用一下  
    Instances newdata=attributeProcess(data, add); // 应用remove  
    System.out.println(newdata);
      
     
}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值