添加实例并在Weka 3.6.5+中对其进行分类(Adding an instance and classify it in Weka 3.6.5+)

编程入门 行业动态 更新时间:2024-10-26 05:26:22
添加实例并在Weka 3.6.5+中对其进行分类(Adding an instance and classify it in 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} @data 2,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() { //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 ""; }

来自weka.cilters.unsupervised.attribute.ReplaceMissingValues.batchFinished(ReplaceMissingValues.java:189)的java.lang.NullPointerException at weka.classters.Filter.useFilter(Filter.java:663)at weka.classifiers.functions.Logistic.buildClassifier( Logistic.java:546)com.feisystems.bham.weka.LogisticRegression.buildAndClassify(LogisticRegression.java:70)位于com.feisystems.bham的com.feisystems.bham.weka.LogisticRegression。(LogisticRegression.java:20)。 weka.AttTest.main(AttTest.java:22)

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

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

I have a Train.arff file to which I want to add new instance (say "2,F,22222,1002-5,?") and then classify the last attributes. All my attributes are nominal.

@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 Loaded Train.arff

Adding Instance

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);

Building Classifier

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 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)

I am using Weka 3.7 and don't see any example to correctly add instance to an existing file and classify one attribute of the instance.

As a work around I am currently creating another Test.arff file with all the matching attributes from Train.arff and adding instance to those attributes. I however want to add an instance to the same Train.arff file and classify it.

最满意答案

这有效!

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.

This works!

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.

更多推荐

本文发布于:2023-07-05 08:55:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1035457.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:并在   对其   进行分类   实例   instance

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!