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);
}
}
/**
* 删除特征
* 第一种方法,在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);
}
}