2011-07-10 43 views
5

vì vậy tôi đang cố gắng tạo thuộc tính chuỗi mới bằng cách sử dụng API java của weka ...tạo thuộc tính chuỗi trong weka java API

đọc qua API javadocs, dường như cách làm như vậy là sử dụng constructor này:

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. 

nhưng tôi gặp khó khăn như những gì tôi nên đi vào các tham số attributeValues ​​...

khi tôi đưa vào null, Java phàn nàn về các đối tượng được bảo vệ
khi tôi đưa vào Null , đó là lỗi cú pháp
khi tôi đưa vào new FastVector(), nó trở thành một thuộc tính danh nghĩa đó là trống chứ không phải là một thuộc tính chuỗi ...
khi tôi tạo một đối tượng mới:

FastVector fv = new FastVector(); 
fv.addElement(null); 

và sau đó vượt qua FV vào lập luận, nó sẽ trả một ngoại lệ con trỏ null ...

chính xác những gì tôi nên đưa vào đối số attributeValues ​​để nó trở thành một thuộc tính chuỗi?

Trả lời

8

Bạn phải bỏ giá trị rỗng vào FastVector. Nếu không nhiều phương pháp sẽ áp dụng đối với chữ ký phương pháp:

FastVector attributes = new FastVector(); 
    attributes.addElement(new Attribute("attr", (FastVector) null)); 

Dưới đây là một nguồn lực tốt để tạo Instances on the fly: http://weka.wikispaces.com/Creating+an+ARFF+file

3

Cách dễ dàng để xây dựng Thuộc tính STRING trong WEKA là thế này:

new Attribute("Distribution_weight",(FastVector) null); 

Vấn đề chính là định nghĩa của WEKA về giá trị NULL, hoặc NULL vector trong các loại trình soạn thảo Java mới với chế độ nhập khẩu weka.jar và ném ngoại lệ.

Các vấn đề liên quan