weka 内存数据集添加数据失败

WilliamKZhy 发布于 2018/01/03 15:03
阅读 211
收藏 0

我参考如下代码做了一个基于自己数据的分类测试代码。

http://blog.csdn.net/mach_learn/article/details/40185361

但是在往内存集里面添加数据的时候,一直报这个错误:

java.lang.NullPointerException
    at weka.core.Attribute.indexOfValue(Unknown Source)
    at weka.core.Instance.setValue(Unknown Source)
    at decisionTree.LevelClassifier.makeInstance(LevelClassifier.java:187)
    at decisionTree.LevelClassifier.classifyMessage(LevelClassifier.java:139)
    at decisionTree.LevelClassifier.getData(LevelClassifier.java:237)
    at decisionTree.LevelClassifier.main(LevelClassifier.java:246)

 

其中错误涉及行附近的代码如下:

at decisionTree.LevelClassifier.makeInstance(LevelClassifier.java:187)

186  Attribute FOUND_TYPEadd = data.attribute("FOUND_TYPE");
187  instance.setValue(FOUND_TYPEadd, seedFeatureData.getFOUND_TYPE());

at decisionTree.LevelClassifier.classifyMessage(LevelClassifier.java:139)

Instance instance = makeInstance(seedFeatureData,data);

at decisionTree.LevelClassifier.getData(LevelClassifier.java:237)

try {
    levelClassifier.classifyMessage(seedFeatureData);
} catch (Exception e) {
    e.printStackTrace();
}

at decisionTree.LevelClassifier.main(LevelClassifier.java:246)

levelClassifier.getData();

 

这个类的结构如下:

public class LevelClassifier {
public  LevelClassifier(){
FastVector FOUND_TYPE = new FastVector(3);
                                 FOUND_TYPE.addElement("null");
                                 FOUND_TYPE.addElement("图");
                                 FOUND_TYPE.addElement("文");
                                 attributes.addElement(new Attribute("FOUND_TYPE", FOUND_TYPE));
       }
public void classifyMessage(SeedFeatureData seedFeatureData)
private Instance makeInstance(SeedFeatureData seedFeatureData,Instances data)
public void getData()
public static void main(String args[])
}

关键代码和错误行代码都给出了,SeedFeatureData是我自建的一个存储数据的类。

我找了好久,实在是不知道错在哪儿了。然后还要说明一下的地方是,NullPointerException这个错误,好像是trycatch抛出的异常,我在有一次排查的时候发现是catch里面的异常输出,但是后来去找又没有了。

整体代码和参考代码基本无大区别。

加载中
0
WilliamKZhy
WilliamKZhy

错误原因是数组越界,下标超过了数据要求,将

FastVector(3)

改成

FastVector(2)

删掉Null的情况就可以了

返回顶部
顶部