在Weka 3.6.5+中添加实例并对其进行分类

我有一个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
  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() {    //构建模型    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"); <-- 不要添加你想要分类的实例。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注