regulyasocjacyjne.WekaApriori.java Source code

Java tutorial

Introduction

Here is the source code for regulyasocjacyjne.WekaApriori.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package regulyasocjacyjne;

import static regulyasocjacyjne.Data.loadData;
import weka.associations.Apriori;
import weka.core.Instances;
import weka.core.Utils;
import weka.filters.Filter;
import weka.filters.supervised.attribute.Discretize;

/**
 *
 * @author Dominika
 */
public class WekaApriori {

    private String numRules;
    private String minConfidence;

    public WekaApriori() {
    }

    public WekaApriori(String numRules, String minConfidence) {
        this.numRules = numRules;
        this.minConfidence = minConfidence;
    }

    public String getMinConfidence() {
        return minConfidence;
    }

    public String getNumRules() {
        return numRules;
    }

    public void setNumRules(String numRules) {
        numRules = this.numRules;
    }

    public void setMinConfidence(String minConfidence) {
        this.minConfidence = minConfidence;
    }

    /**
     * Generowanie regu Asocjacyjnych algorytmem Apriori
     *
     * @param data
     * @param n Liczba regul do policzenia (standardowo: 10)
     * @param c Minmalna ufnosc reguly (standardowo: 0.9).
     * @return
     * @throws Exception
     */
    public String regulyAsocjacyjne(Instances data, String c, String n) throws Exception {
        data.setClassIndex(data.numAttributes() - 1);

        String[] options = Utils.splitOptions("-N " + n + " -C " + c);
        Apriori apriori = new Apriori();
        apriori.setOptions(options);
        apriori.buildAssociations(data); //Generowanie regul asocjacyjnych

        System.out.println("Liczba regul=" + apriori.getNumRules());

        System.out.println(apriori.toString()); //Wypisanie informacji o regulach
        return apriori.toString();
    }

    //Generowanie regul asocjacyjnych z wczesniejsza dysretyzacja tablicy
    public static void regulyAsocjacyjneDyskret() throws Exception {
        Instances data = loadData("./src/data/osmolski.arff");
        data.setClassIndex(data.numAttributes() - 1);

        Discretize filter = new Discretize();

        filter.setInputFormat(data);

        //Dyskretyzacja tablicy
        Instances trainDiscret = Filter.useFilter(data, filter);

        //Opcje liczenia regul asocjacyjnych
        String[] options = Utils.splitOptions("-N 10 -C 0.9");

        Apriori apriori = new Apriori();
        apriori.setOptions(options);
        apriori.buildAssociations(trainDiscret);

        System.out.println("Liczba regul=" + apriori.getNumRules());

        System.out.println(apriori.toString());
        //  wynik = eval.toSummaryString("Wyniki:", false);
    }
}