java - Weka Apriori 算法快速 vector 输出内存位置值

标签 java vector machine-learning weka apriori

我使用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/

相关文章:

c++ - 如何在带有 STL vector 的 C++ 中使用类似 matlab 的运算符

machine-learning - 人工神经网络中的无监督学习

tensorflow - 如何将保存的模型从sklearn转换为tensorflow/lite

Java 泛型问题 : Class "not within bounds of type-variable" error.

java - IBM CMOD Java API 在压力条件下失败

java - 在 Java PostgreSQL 中使用游标读取有什么缺点吗?

c++ - 在 C++ 中查找 vector 的最小元素

java - 工具提示注册

c++ - 用数组或 vector 实现多维数组

python - Python 中的机器学习 : scikit-learn/Pybrain