2012-10-02 66 views
0
到文件

我在Java代碼中生成的決策樹在Weka中如下:寫作的Weka分類的結果,在Java中

 J48 j48DecisionTree = new J48(); 
     Instances data = null; 
     data = new Instances(new BufferedReader(new FileReader(dt.getArffFile())));    
     data.setClassIndex(data.numAttributes() - 1); 
     j48DecisionTree.buildClassifier(data); 

我能否拯救了Weka的結果會導致緩存到一個文本文件中的程序例如,可以在運行時被保存到一個文本文件中的以下內容:

===分層交叉驗證=== ===總結===

Correctly Classified Instances   229    40.1754 % 
Incorrectly Classified Instances  341    59.8246 % 
Kappa statistic       0.2022 
Mean absolute error      0.1916 
Root mean squared error     0.3138 
Relative absolute error     80.8346 % 
Root relative squared error    91.1615 % 
Coverage of cases (0.95 level)   96.3158 % 
Mean rel. region size (0.95 level)  70.9774 % 
Total Number of Instances    570  

=== Detailed Accuracy By Class === 

      TP Rate FP Rate Precision Recall F-Measure ROC Area Class 
      0.44  0.012  0.786  0.44  0.564  0.76  Business and finance and economics 
      0   0   0   0   0   0.616 Fashion and celebrity lifestyle 
      0.125  0.01  0.667  0.125  0.211  0.663 Film 
      0   0.002  0   0   0   0.617 Music 
      0.931  0.78  0.318  0.931  0.474  0.633 News and current affairs 
      0.11  0.006  0.786  0.11  0.193  0.653 Science and nature and technology 
      0.74  0.012  0.86  0.74  0.796  0.85  Sport 

加權平均0.402 0.224 0.465 0.402 0.316 0.667

=== Confusion Matrix === 

    a b c d e f g <-- classified as 
22 0 0 0 25 2 1 | a = Business and finance and economics 
    0 0 1 0 59 0 0 | b = Fashion and celebrity lifestyle 
    0 0 10 1 69 0 0 | c = Film 
    0 0 1 0 69 0 0 | d = Music 
    5 0 2 0 149 0 4 | e = News and current affairs 
    1 0 0 0 87 11 1 | f = Science and nature and technology 
    0 0 1 0 11 1 37 | g = Sport 

dt是表示決策樹細節的一個類的實例。

由於我運行了大量的分類器,這會有所幫助。

回答

1

是的,這可以做到。但是您需要在Weka中創建評估實例並從實例中調用適當的方法:

Evaluation eval = new Evaluation(data); 
eval.evaluateModel(j48DecisionTree, data); 
System.out.println(eval.toSummaryString("\nResults\n======\n", true)); 

將給出摘要。

但隨後的方法,如:

eval.pctCorrect(); 

可以調用。有關更多信息,請參見Weka Javadoc

1

Weka分類器有一個廣泛的#toString()方法,它給你一個人類可讀的表示,在這種情況下,樹。您也可以使用#toSource(String)來獲取決策樹的Java代碼。

如果您想存儲該模型以供日後重複使用,請查看weka.core.SerializationHelper

+0

我可以使用#toString輸出樹。這是我後來的分類結果。我編輯了這個問題來顯示我的意思。 –