鍍金池/ 問答/Java  網(wǎng)絡(luò)安全  HTML/ weka 內(nèi)存數(shù)據(jù)集添加數(shù)據(jù)失敗

weka 內(nèi)存數(shù)據(jù)集添加數(shù)據(jù)失敗

我參考如下代碼做了一個基于自己數(shù)據(jù)的分類測試代碼。

http://blog.csdn.net/mach_lea...

但是在往內(nèi)存集里面添加數(shù)據(jù)的時候,一直報這個錯誤:

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

這個類的結(jié)構(gòu)如下:

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

}
關(guān)鍵代碼和錯誤行代碼都給出了,SeedFeatureData是我自建的一個存儲數(shù)據(jù)的類。

我找了好久,實在是不知道錯在哪兒了。然后還要說明一下的地方是,NullPointerException這個錯誤,好像是trycatch拋出的異常,我在有一次排查的時候發(fā)現(xiàn)是catch里面的異常輸出,但是后來去找又沒有了。

整體代碼和參考代碼基本無大區(qū)別。

回答
編輯回答
逗婦惱

錯誤原因是數(shù)組越界,下標(biāo)超過了數(shù)據(jù)要求,將
FastVector(3)
改成
FastVector(2)
刪掉Null的情況就可以了

2018年7月30日 17:06