我正在尝试使用Weka的Java API创建一个新的字符串属性…
通过阅读API的javadocs,我发现可以使用以下构造函数来实现:
Attributepublic Attribute(java.lang.String attributeName, FastVector attributeValues) 用于创建名义属性和字符串属性的构造函数。如果传递给方法的属性值向量为null,则该属性被视为字符串属性。 参数: attributeName - 属性的名称 attributeValues - 表示属性值的字符串向量。如果属性是字符串属性,则为null。
但是我不知道应该传递什么给attributeValues参数…
当我传入null时,Java会抱怨受保护的对象
当我传入Null时,会出现语法错误
当我传入new FastVector()
时,它变成了一个空的名义属性而不是字符串属性…
当我创建一个新对象时:
FastVector fv = new FastVector();fv.addElement(null);
然后将fv作为参数传递时,会返回一个空指针异常…
我到底应该在attributeValues参数中放什么,才能使其成为字符串属性?
回答:
你需要将null转换为FastVector。否则更多的方法会应用于该方法签名:
FastVector attributes = new FastVector(); attributes.addElement(new Attribute("attr", (FastVector) null));
这里有一个很好的资源,关于如何即时创建Instances:https://waikato.github.io/weka-wiki/formats_and_processing/creating_arff_file/