All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.chen0040.trees.id3.ID3 Maven / Gradle / Ivy

The newest version!
package com.github.chen0040.trees.id3;


import com.github.chen0040.data.frame.DataFrame;
import com.github.chen0040.data.frame.DataRow;
import com.github.chen0040.data.utils.discretizers.KMeansDiscretizer;
import lombok.Getter;
import lombok.Setter;

import java.util.List;
import java.util.Random;


/**
 * Created by xschen on 23/8/15.
 */
@Getter
@Setter
public class ID3 {
    private static Random rand = new Random();
    private KMeansDiscretizer discretizer=new KMeansDiscretizer();
    private ID3TreeNode tree;
    private int maxHeight = 1000;
    private boolean discretized;

    public ID3(){
        discretized = true;
    }

    public ID3(boolean discretized){
        this.discretized = discretized;
    }

    public String classify(DataRow tuple) {
        if(discretized) {
            tuple = discretizer.transform(tuple);
        }
        return tree.predict(tuple);
    }

    public void fit(DataFrame batch) {

        if(discretized) {
            batch = discretizer.fitAndTransform(batch);
        }

        List columns = batch.row(0).getCategoricalColumnNames();
        tree = new ID3TreeNode(batch, rand, 0, maxHeight, columns);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy