Weka中是否存在将实例从Nominal转换为Binary的类,其具有以下输入和输出格式。
输入实例格式和数据
|Fruits|Test|Price|
------------------------------
|Apple |0 |5 |
|Banana|1 |7 |
|Orange|1 |4 |
输出实例格式和数据
|Apple|Banana|Orange|Test|Price|
------------------------------
| 1 | 0 | 0 |0 |5 |
| 0 | 1 | 0 |1 |7 |
| 0 | 0 | 1 |1 |4 |
或者我必须编写自己的代码。什么是最简单的方法?我猜Weka中的NominalToBinary类不适用于这种情况。
答案 0 :(得分:2)
实际上,NominalToBinary过滤器正是这样做的过滤器:
Instances instances = null; // Your Instances object
NominalToBinary nominalToBinary = new NominalToBinary();
nominalToBinary.setInputFormat(instances);
String[] options = {"-R", "15"}; // the index(es) of the nominal feature(s)
nominalToBinary.setOptions(options);
Instances newInstances = Filter.useFilter(instances, nominalToBinary);
答案 1 :(得分:1)
我认为@AndreyF是正确的。我使用的是GUI,所以我会从那里显示命令,而不是java。
我们将从这个文件开始:
@relation stackexchange1
@attribute Fruits {Apple,Banana,Orange}
@attribute Test numeric
@attribute Price numeric
@data
Apple,0,5
Banana,1,7
Orange,1,4
并使用此过滤器:
NominalToBinary -R first
这给了我们这个文件,看起来像你想要的那样:
@relation stackexchange1-weka.filters.unsupervised.attribute.NominalToBinary-Rfirst
@attribute Fruits=Apple numeric
@attribute Fruits=Banana numeric
@attribute Fruits=Orange numeric
@attribute Test numeric
@attribute Price numeric
@data
1,0,0,0,5
0,1,0,1,7
0,0,1,1,4
或者我们可以使用
NominalToBinary -N -R first
将前三个属性赋予名义(使用t,f而不是0,1)
@relation stackexchange1-weka.filters.unsupervised.attribute.NominalToBinary-N-Rfirst
@attribute Fruits=Apple {f,t}
@attribute Fruits=Banana {f,t}
@attribute Fruits=Orange {f,t}
@attribute Test numeric
@attribute Price numeric
@data
t,f,f,0,5
f,t,f,1,7
f,f,t,1,4