我有一个Train.arff文件,我想向其中添加一个新实例(例如”2,F,22222,1002-5,?”),然后对最后一个属性进行分类。我的所有属性都是名义属性。
@attribute age {2,3,4,5,6}@attribute gender {F,M}@attribute zipcode {22222,33333,11111}@attribute race {1002-5,2028-9,2054-5,2076-8,2106-3}@attribute service {H0018,H2034,H0004,H0009,H0006}@data2,F,22222,1002-5,H0018
- 加载Train.arff
-
添加实例
Instance inst = new Instance(10); inst.setValue(trainData.attribute(0), age); inst.setValue(trainData.attribute(1), administrativeGenderCode); inst.setValue(trainData.attribute(2), zipCode); inst.setValue(trainData.attribute(3), race); inst.setValue(trainData.attribute(4), "H2034"); // inst.setDataset(trainData); // add trainData.add(inst);
-
构建分类器
public String buildAndClassify() { //构建模型 Logistic model = new Logistic(); try { model.buildClassifier(trainData); <-- 失败 Instances labeled = new Instances(trainData); double clsLabel = model.classifyInstance(trainData.lastInstance()); labeled.lastInstance().setClassValue(clsLabel); System.out.print(labeled.lastInstance().stringValue(7)); return labeled.lastInstance().stringValue(7); } catch (Exception e) { e.printStackTrace(); } return "";}
java.lang.NullPointerException at weka.filters.unsupervised.attribute.ReplaceMissingValues.batchFinished(ReplaceMissingValues.java:189) at weka.filters.Filter.useFilter(Filter.java:663) at weka.classifiers.functions.Logistic.buildClassifier(Logistic.java:546) at com.feisystems.bham.weka.LogisticRegression.buildAndClassify(LogisticRegression.java:70) at com.feisystems.bham.weka.LogisticRegression.(LogisticRegression.java:20) at com.feisystems.bham.weka.AttTest.main(AttTest.java:22)
我使用的是Weka 3.7,没有看到任何示例可以正确地向现有文件添加实例并对实例的一个属性进行分类。
作为一种变通方法,我目前正在创建另一个Test.arff文件,其中包含与Train.arff中所有匹配的属性,并向这些属性添加实例。然而,我希望向同一个Train.arff文件添加实例并对其进行分类。
回答:
这个方法有效!
Instance inst = new Instance(4); <-- 调整你想要添加的实例数量。 inst.setValue(trainData.attribute(0), age); inst.setValue(trainData.attribute(1), administrativeGenderCode); inst.setValue(trainData.attribute(2), zipCode); inst.setValue(trainData.attribute(3), race);// inst.setValue(trainData.attribute(4), "H2034"); <-- 不要添加你想要分类的实例。