如何在属性上添加名义值?

时间:2019-06-07 14:33:20

标签: java machine-learning instance weka

我想添加一些具有标称int值的属性。但是我不知道如何声明它是名义值并添加可能的值。

我制作了ArrayList并将可能的int值转换为字符串并将其添加。但是我不认为这样做是可以的。

public class ModelClassifier {
    private ArrayList<Attribute> attributes = new ArrayList<Attribute>();
    private ArrayList<String> classVal = new ArrayList<String>();  
    // nominal attribute, classval
    private ArrayList<String> methods = new ArrayList<String>();  
    // nominal attribute
    private ArrayList<String> winners = new ArrayList<String>();   
    // nominal attribute
    private Instances dataRaw;

    public ModelClassifier() {
        for(int i=0; i<32; ++i) classVal.add(i+"");
        for(int i=0; i<5; ++i) methods.add(i+"");
        for(int i=0; i<6; ++i) winners.add(i+""); 

        attributes.add(new Attribute("model", classVal));
        attributes.add(new Attribute("method", methods));
        attributes.add(new Attribute("candidate1_1"));
        attributes.add(new Attribute("candidate1_2"));
        attributes.add(new Attribute("candidate2_1"));
        attributes.add(new Attribute("candidate2_2"));
        attributes.add(new Attribute("candidate3_1"));
        attributes.add(new Attribute("candidate3_2"));
        attributes.add(new Attribute("candidate4_1"));
        attributes.add(new Attribute("candidate4_2"));
        attributes.add(new Attribute("candidate5_1"));
        attributes.add(new Attribute("candidate5_2"));
        attributes.add(new Attribute("candidate6_1"));
        attributes.add(new Attribute("candidate6_2"));
        attributes.add(new Attribute("avg"));
        attributes.add(new Attribute("dev"));
        attributes.add(new Attribute("winner", winners));

        dataRaw = new Instances("TestInstances", attributes, 0);
        dataRaw.setClassIndex(0);
    }

    public Instances createInstance(double[] instanceValue1) {
        dataRaw.clear();
        dataRaw.add(new DenseInstance(1.0, instanceValue1)); 
        return dataRaw;
    }
}

此代码实际上有效,但是我对此非常怀疑。我想我缺少了一些东西。我发布了用于训练模型的部分arff文件。

1 个答案:

答案 0 :(得分:0)

尝试ArrayList<Integer> 并从Google了解有关Java自动装箱和拆箱的信息。


您应先让我们知道您要处理的是什么属性... "Attribute"s