setcar设置为true时如何显示前提和后果

问题描述 投票:0回答:1

我想在Weka 3.8.6中运行apriori算法后得到每行生成规则的前提和结果。

`apriori.setNumRules(NUMBER_OF_RULES); apriori.setMinMetric(MINIMUM_CONFIDENCE); apriori.setLowerBoundMinSupport(MINIMUM_SUPPORT);

    apriori.setCar(true);

    apriori.buildAssociations(instances);`

但有一个例外:java.lang.ClassCastException:类weka.associations.ItemSet无法转换为类weka.associations.AprioriItemSet(weka.associations.ItemSet和weka.associations.AprioriItemSet位于加载器的未命名模块中。

为什么当我简单地将 setCar(false) 更改为 setCar(true) 时,我无法调用 buildAssociations(instances)?当 setCar(false) 时,我可以毫无问题地调用该方法。我怎样才能做到这一点?如何使用 setCar(true) 调用 buildAssociations 方法。

我想调用 apriori.buildAssociations(instances) 而没有错误

java data-mining weka
1个回答
0
投票

使用

car==false
时,不能使用
getAssociationRules()
,因为内部构建了不同的数据结构。相反,您需要致电
getAllTheRules()

你必须做这样的事情:

import weka.associations.Apriori;
import weka.associations.ItemSet;
import weka.core.Instances;
import weka.core.Utils;
import weka.core.converters.ConverterUtils.DataSource;

public class AprioriCarExample {

  public static void main(String[] args) throws Exception {
    Instances instances = DataSource.read("/some/where/supermarket.arff");
    instances.setClassIndex(instances.numAttributes() - 1);

    Apriori apriori = new Apriori();
    apriori.setNumRules(10);
    apriori.setMinMetric(0.50);
    apriori.setLowerBoundMinSupport(0.1);
    apriori.setCar(true);
    apriori.buildAssociations(instances);

    // rules
    System.out.println("\nRules:");
    for (int i = 0; i < apriori.getAllTheRules()[0].size(); i++) {
      String premise = ((ItemSet) apriori.getAllTheRules()[0].get(i)).toString(apriori.getInstancesNoClass(), ' ', ' ');
      String consequence = ((ItemSet) apriori.getAllTheRules()[1].get(i)).toString(apriori.getInstancesOnlyClass(), ' ', ' ');
      String confidence = Utils.doubleToString(((Double) apriori.getAllTheRules()[2].get(i)), 2);
      System.out.println((i+1) + ".:");
      System.out.println("  premise: " + premise);
      System.out.println("  consequence: " + consequence);
      System.out.println("  confidence: " + confidence);
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.