如何从NominalToBinary转换实例

时间:2017-10-30 23:34:34

标签: java weka

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类不适用于这种情况。

2 个答案:

答案 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