weka 内存数据集添加数据失败
我参考如下代码做了一个基于自己数据的分类测试代码。
http://blog.csdn.net/mach_lea...
但是在往内存集里面添加数据的时候,一直报这个错误:
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里面的异常输出,但是后来去找又没有了。
整体代码和参考代码基本无大区别。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
错误原因是数组越界,下标超过了数据要求,将
FastVector(3)
改成
FastVector(2)
删掉Null的情况就可以了