在Weka Java API中创建字符串属性

时间:2011-07-10 07:16:35

标签: java api machine-learning weka

我正在尝试使用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参数中,以便它成为字符串属性?

2 个答案:

答案 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向量。