我想添加一些具有标称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文件。