2013-11-21 37 views
0

希望你們週五過得愉快。我的名字是Minh,我是論壇的新成員。我只是在學習使用Weka,如果你知道答案,我有一個問題,我想尋求你的幫助。我打算爲我的Java學校項目使用weka,並且我相信我在我的項目中使用了weka-3.7.7 jar文件。這一切都運行良好,我能夠查看輸出,當我使用我的關聯規則的apriori包。但是,當我嘗試使用FastVector(如FastVector = apriori.getAllTheRules())從apriori.getAllTheRules()中打印出每個數據項時,我陷入了困境。我被卡住了,因爲FastVector已經被棄用了,我在google上讀了一些評論,並且說我可以用一個名爲list array的東西替代它,而不需要進一步的例子或者解釋如何去追求它。是否可以用其他方法替換fastvector中的apriori?

但是由於我是Weka的新手,我無法在網上找到關於如何使用apriori.getAllTheRules()的列表數組的提示。因此,如果您碰巧知道一些關於如何使用列表數組來實現此目的的文章或程序教程,請將這些資源引薦給我。我非常感謝您提前給予的所有幫助。

連接是使用先驗規則

package org.minh; 
import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.IOException; 
import weka.associations.Apriori; 
import weka.core.Instances; 

public class Main 
{ 
    public static void main(String[] args) 
    { 
    Instances data = null; 

    try { 
     BufferedReader reader = new BufferedReader(new 
     FileReader("c:\\weka\\CRMArff.arff")); 

     data = new Instances(reader); 
     reader.close(); 
     data.setClassIndex(data.numAttributes() - 1); 
     } 

    catch (IOException e) { 

     e.printStackTrace(); 
     } 

    double deltaValue = 0.05; 
    double lowerBoundMinSupportValue = 0.05; 
    double minMetricValue = 0.5; 
    int numRulesValue = 100; 
    double upperBoundMinSupportValue = 1.0; 

    String resultapriori; 
    Apriori apriori = new Apriori(); 
    apriori.setDelta(deltaValue); 
    apriori.setLowerBoundMinSupport(lowerBoundMinSupportValue); 
    apriori.setNumRules(numRulesValue); 
    apriori.setUpperBoundMinSupport(upperBoundMinSupportValue); 
    apriori.setMinMetric(minMetricValue); 

    try 
     { 
     apriori.buildAssociations(data); 
     } 
    catch (Exception e) { 

     e.printStackTrace(); 
     } 
    resultapriori = apriori.toString(); 

    System.out.println(resultapriori); 
    } 
} 

回答

0

提取與FastVector每一個規則,我用這個週期我的示例Java程序:

FastVector[] ass=ap.getAllTheRules(); 
    for (FastVector rule : ass) { 
    if (rule == null) continue; 
     System.out.println("---> " + rule); 
     for (int i = 0; i < rule.size(); ++i) { 
       Object o = rule.elementAt(i); 
       if (o instanceof AprioriItemSet) { 
         System.out.println(((AprioriItemSet) o).toString(data)); 
       } else { 
        System.out.println("rule: "+o); 
       } 
     } 

     } 

不幸的是,我不能幫你如何爲此目的使用數組列表!

+0

嗨! 「AprioriItemSet」描述了什麼? –

+0

太棒了!有用 !! (Y) –

相關問題