【问题标题】:Adding an instance and classify it in Weka 3.6.5+在 Weka 3.6.5+ 中添加实例并对其进行分类
【发布时间】:2014-04-02 05:43:21
【问题描述】:

我有一个 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}

@data
2,F,22222,1002-5,H0018
  1. 已加载 Train.arff
  2. 添加实例

            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);
    
  3. 建筑分类器

    public String buildAndClassify() {
        //build model
        Logistic model = new Logistic();
        try {
            model.buildClassifier(trainData); <-- fails
    
            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 在 weka.filters.unsupervised.attribute.ReplaceMissingValues.batchFinished(ReplaceMissingValues.java:189) 在 weka.filters.Filter.useFilter(Filter.java:663) 在 weka.classifiers.functions.Logistic.buildClassifier(Logistic.java:546) 在 com.feisystems.bham.weka.LogisticRegression.buildAndClassify(LogisticRegression.java:70) 在 com.feisystems.bham.weka.LogisticRegression.(LogisticRegression.java:20) 在 com.feisystems.bham.weka.AttTest.main(AttTest.java:22)

我正在使用 Weka 3.7,没有看到任何示例可以正确地将实例添加到现有文件并分类实例的一个属性。

作为一种解决方法,我目前正在创建另一个 Test.arff 文件,其中包含来自 Train.arff 的所有匹配属性,并向这些属性添加实例。但是,我想将一个实例添加到同一个 Train.arff 文件并对其进行分类。

【问题讨论】:

    标签: java machine-learning weka


    【解决方案1】:

    这行得通!

            Instance inst = new Instance(4); <-- Adjust number of instances you want to add.
    
            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"); <-- Do not add the instance you want to classify.
    

    【讨论】:

      猜你喜欢
      • 2015-02-01
      • 2012-10-13
      • 2021-07-24
      • 2015-01-21
      • 2012-02-14
      • 2012-03-25
      • 2014-03-02
      • 2015-05-06
      • 1970-01-01
      相关资源
      最近更新 更多