Java Weka打印稀疏arff文件
我正在尝试arff文件的稀疏表示,如图所示。在我的程序中,我可以打印类别标签“B”,但由于某些原因,它不能打印“A” 程序的输出类似于-Java Weka打印稀疏arff文件,java,weka,sparse-matrix,arff,Java,Weka,Sparse Matrix,Arff,我正在尝试arff文件的稀疏表示,如图所示。在我的程序中,我可以打印类别标签“B”,但由于某些原因,它不能打印“A” 程序的输出类似于- {0 6,2 8} --- I should get {0 6,2 8,3 A} 但当我这么做的时候 vals[index] = attVals.indexOf("B"); 我得到适当的输出- {0 6,2 8,3 B} 出于某种原因,它没有采用索引0。有人能告诉我为什么会这样吗?这是一个非常普遍的问题。稀疏格式按定义不存储0值 Weka
{0 6,2 8} --- I should get {0 6,2 8,3 A}
但当我这么做的时候
vals[index] = attVals.indexOf("B");
我得到适当的输出-
{0 6,2 8,3 B}
出于某种原因,它没有采用索引0。有人能告诉我为什么会这样吗?这是一个非常普遍的问题。稀疏格式按定义不存储0值 Weka明确表示: 警告:从中保存SparseInstance对象时存在已知问题 具有字符串属性的数据集。在Weka中,字符串和标称数据 值存储为数字;这些数字可以作为一个数据库的索引 可能属性值的数组(这非常有效)。然而, 第一个字符串值被指定为索引0:这意味着, 在内部,此值存储为0。当SparseInstance 不输出内部值为0的已写入字符串实例,因此 它们的字符串值丢失(当再次读取arff文件时 默认值0是不同字符串值的索引,因此 属性值似乎在更改)。若要解决此问题,请添加 索引0处的伪字符串值,在声明 可能在SparseInstance对象中使用的字符串属性 并保存为稀疏的ARFF文件 您必须首先放置一个虚拟属性。只需将代码修改为:
attVals = new FastVector();
attVals.addElement("dummy");
attVals.addElement("A");
attVals.addElement("B");
如果你需要进一步的帮助,请告诉我
attVals = new FastVector();
attVals.addElement("dummy");
attVals.addElement("A");
attVals.addElement("B");