我使用weka
依赖项通过Apriori算法
获取关联规则。下面是我的代码。当我获取值时,快速 vector
显示内存位置值。如果有人能给我一个答案来获取关联规则
,我将非常感激。
package com.smart.product.analyser;
import org.apache.log4j.Logger;
import weka.associations.Apriori;
import weka.core.FastVector;
import weka.core.Instances;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
public class App {
static Logger log = Logger.getLogger(App.class.getName());
public static BufferedReader readDataFile(String filename) {
BufferedReader inputReader = null;
try {
inputReader = new BufferedReader(new FileReader(filename));
} catch (FileNotFoundException ex) {
}
return inputReader;
}
public static void main(String[] args) throws Exception {
//Define ArrayList to Add Clustered Information
Apriori apriori = new Apriori();
apriori.setNumRules(10);
BufferedReader datafile = readDataFile("/media/dulithdecozta/IR1_CPRA_X6/FYP-Documents/Transactions.arff");
Instances data = new Instances(datafile);
apriori.buildAssociations(data);
log.debug("-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-");
log.debug("Number of Associations : " + apriori.getNumRules());
log.debug("Adding Association Information to ArrayList ..");
int num = apriori.getAllTheRules().length;
System.out.println("Num :" + num);
for (FastVector fastVector : apriori.getAllTheRules())
log.debug("rules " + fastVector.toArray());
}
}
程序的输出:
[Ljava.lang.Object;@7254d7ac
[Ljava.lang.Object;@201b97d8
[Ljava.lang.Object;@738df65f
最佳答案
代码没有问题
log.debug("rules " + fastVector.toArray());
它是打印JVM上存在的地址,在本例中,有三个对象,它们的类型来自java.lang.Object
。它是从 java.lang.Object
toString()
方法调用的
在您的情况下,您必须将此引用适本地转换为对象Rules
(即m_allTheRules
)。在每种情况下,获取或调用适当的方法或属性。
所以,请参阅下面的示例:
AprioriItemSet premise = (AprioriItemSet) m_allTheRules[0].elementAt(i);
AprioriItemSet consequence = (AprioriItemSet) m_allTheRules[1].elementAt(i);
这只是示例,m_allTheRules
是在您提供的 foreach
内创建的匿名变量。
查看从 here 中提取的完整示例
关于java - Weka Apriori 算法快速 vector 输出内存位置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29563379/