我正在尝试使用Weka的Java API创建一个新的字符串属性...
通过API javadocs,看来这样做的方法是使用这个构造函数:
Attribute
public Attribute(java.lang.String attributeName,
FastVector attributeValues)
Constructor for nominal attributes and string attributes. If a null vector of attribute values is passed to the method, the attribute is assumed to be a string.
Parameters:
attributeName - the name for the attribute
attributeValues - a vector of strings denoting the attribute values. Null if the attribute is a string attribute.
但我对于我应该传递给attributeValues参数...
的问题一直困扰着当我输入null时,Java会抱怨受保护的对象
当我输入Null时,它的语法错误为
当我输入new FastVector()
时,它变成一个空的名义属性而不是字符串属性...
当我创建一个新对象时:
FastVector fv = new FastVector();
fv.addElement(null);
然后将fv传递给参数,它返回一个空指针异常...
我究竟应该将什么放入attributeValues参数中,以便它成为字符串属性?
答案 0 :(得分:8)
您必须将null转换为FastVector。否则,更多方法将应用于方法签名:
FastVector attributes = new FastVector();
attributes.addElement(new Attribute("attr", (FastVector) null));
以下是动态创建实例的好资源:http://weka.wikispaces.com/Creating+an+ARFF+file
答案 1 :(得分:3)
在WEKA中构建STRING属性的简便方法是:
new Attribute("Distribution_weight",(FastVector) null);
主要问题是WEKA对NULL值的定义,或导入weka.jar和throw异常模式的新型Java编辑器中的NULL向量。