segunda-feira, 12 de outubro de 2015

Algumas definições - Classes Úteis

Algumas definições

Para o desenvolvimento dos algoritmos vou criar algumas classes genéricas, e irei acrescentar funcionalidades a elas conforme o necessário. Para o algoritmo ID3, foram criadas as seguintes classes:

public class Record {
    
    private ArrayList<attribute> attributes;

    publicArrayList<attribute> getAttributes() {
        return attributes;
    }
    
    public void setAttributes(ArrayList<attribute> attributes) {
        this.attributes = attributes;
    }

}
Classe criada para abrigar os exemplos do conjunto de treinamento e seus respectivos atributos.
public class Attribute {

    private String name;
    private double value;
    private boolean isUnknown;
 
    public Attribute(String name, double value) {
        this.name = name;
        this.value = value;
        isUnknown = false;
    }
 
    public Attribute(String name, String value) {
        this.name = name;
        try {
            this.value = Double.valueOf(value);
            this.isUnknown = false;
        }
        catch(NumberFormatException nfe) {
            this.value = -1;
            this.isUnknown = true;
        }
    }
 
    public void setName(String name) {
        this.name = name;
    }
    
    public String getName() {
        return name;
    }
 
    public void setValue(double value) {
        this.value = value;
    }

    public double getValue() {
        return value;
    }
 
    public void setUnknown(boolean isUnknown) {
        this.isUnknown = isUnknown;
    }

    public boolean isUnknown() {
        return isUnknown;
    }
}
Classe utilizada para guardar as informações referentes ao atributo, como por exemplo, nome, valor, etc. Como se trata de uma classe com propósitos genéricos o único tipo de dados aceito pela classe é o double, para aceitar os dados processados pelo ID3, que só aceita constantes, foi utilizado a classe descrita abaixo:
public class DiscreteAttribute {
    private Map<String, Integer> values;

    public DiscreteAttribute() {
        values = new HashMap<String, Integer>();
    }

    public void setValue(String key) {
        if(!values.containsKey(key)) {
            values.put(key, values.size());
        }
    }

    public int getValue(String key) {
        return values.get(key);
    }
}
Classe que funciona como um enum dinâmico e tem como propósito transformar os valores discretos do conjunto de dados de treinamento do ID3 em valores numéricos.

Nenhum comentário :

Postar um comentário