Java 如何从NominalToBinary转换实例
Weka中是否有任何现有类可以将实例从标称转换为具有以下输入和输出格式的二进制 输入实例格式和数据Java 如何从NominalToBinary转换实例,java,weka,Java,Weka,Weka中是否有任何现有类可以将实例从标称转换为具有以下输入和输出格式的二进制 输入实例格式和数据 |Fruits|Test|Price| ------------------------------ |Apple |0 |5 | |Banana|1 |7 | |Orange|1 |4 | |Apple|Banana|Orange|Test|Price| ------------------------------ | 1 | 0 | 0
|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 |
输出实例格式和数据
|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不适合这种情况。实际上,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);
实际上,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);
我认为@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)
我认为@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)
只有当类别是名义上的时才是。另外,选项应该是字符串[]选项={“-A”};在我的例子中,类是Price,它是数字的。过滤器不受监督,它是在您指定的属性上执行的。在您的情况下,属性为“Fruits”,索引可以是“first”。Price属性与此无关。它仅在类为标称时才起作用。另外,选项应该是字符串[]选项={“-A”};在我的例子中,类是Price,它是数字的。过滤器不受监督,它是在您指定的属性上执行的。在您的情况下,属性为“Fruits”,索引可以是“first”。价格属性与此无关。