Алгоритм Weka Apriori Fast Vector Выводит значения ячейки памяти

1

Я использую зависимость weka чтобы получить правила ассоциации с помощью Apriori Algorithm. Ниже мой код. Когда я получаю значения, fast vector отображает значения местоположения памяти. Я был бы очень благодарен. Если бы кто-нибудь мог написать мне ответ, чтобы получить association rules как есть.

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

Теги:
machine-learning
vector
apriori
weka

1 ответ

1

Нет никакой проблемы с кодом

log.debug("rules" + fastVector.toArray());

это адрес печати, существующий на JVM, в этом случае есть три объекта, которые являются типами из java.lang.Object. Он вызывается из метода toString() существующего на java.lang.Object

В вашем случае вы должны соответствующим образом m_allTheRules эту ссылку на Rules объекта (т. m_allTheRules). В каждом случае, получение или вызов соответствующего метода или свойства.

Итак, см. Пример ниже:

AprioriItemSet premise = (AprioriItemSet) m_allTheRules[0].elementAt(i);
AprioriItemSet consequence = (AprioriItemSet) m_allTheRules[1].elementAt(i); 

Это только пример, m_allTheRules - анонимная переменная, созданная внутри foreach которую вы провайдер.

См. Полный пример, извлеченный отсюда.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню