在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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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