Example usage for weka.filters.unsupervised.attribute NumericToNominal setAttributeIndices

List of usage examples for weka.filters.unsupervised.attribute NumericToNominal setAttributeIndices

Introduction

In this page you can find the example usage for weka.filters.unsupervised.attribute NumericToNominal setAttributeIndices.

Prototype

public void setAttributeIndices(String value) 

Source Link

Document

Sets which attributes are to be "nominalized" (only numeric attributes among the selection will be transformed).

Usage

From source file:cish.CISH.java

private void trainClassifier() {
    try {/*from   ww  w.j  a  va2 s  .  c o  m*/
        LibSVMLoader loader = new LibSVMLoader();
        loader.setSource(getClass().getResource("/cish/traindata.libsvm"));
        Instances traindata = loader.getDataSet();

        // Set the class attribute as nominal
        NumericToNominal filter = new NumericToNominal();
        filter.setAttributeIndices("last");
        filter.setInputFormat(traindata);
        dataset = Filter.useFilter(traindata, filter);

        // Train the LibSVM
        classifier = new LibSVM();
        classifier.setOptions(new String[] { "-C", "8", "-G", "0.0625" });

        System.out.println("CISH classifier has options");
        for (String o : classifier.getOptions()) {
            System.out.print(o + " ");
        }
        System.out.println();

        classifier.buildClassifier(dataset);

    } catch (IOException ex) {
        Logger.getLogger(CISH.class.getName()).log(Level.SEVERE, null, ex);
    } catch (Exception ex) {
        Logger.getLogger(CISH.class.getName()).log(Level.SEVERE, null, ex);
    }
}

From source file:entities.ArffFile.java

/**
 * Generaliza el atributo especificado en la variable attribute segun la
 * variable n. Aca se evalua si el atributo es numerico para convertirlo a
 * nominal/*from   w w  w.  ja v a  2 s  .  c  o m*/
 *
 * @param attribute indice del atributo a generalizar
 * @param n cantidad de digitos a ser reemplazados
 * @throws Exception
 */
public boolean generalizar(int attribute, int n) throws Exception {
    //instancesFilter = new Instances(instances);
    if (instancesFilter.attribute(attribute).type() == weka.core.Attribute.NUMERIC) {
        NumericToNominal numeric = new NumericToNominal();
        numeric.setAttributeIndices((attribute + 1) + "");
        numeric.setInputFormat(instances);
        instancesFilter = Filter.useFilter(instancesFilter, numeric);
    }
    FastVector values = new FastVector();
    List<String> newValues = new ArrayList<>();
    for (int i = 0; i < instancesFilter.numInstances(); i++) {
        String value = instancesFilter.instance(i).toString(attribute);
        int n2 = n;
        char[] copy = value.toCharArray();
        if (copy.length < n) {
            return false;
        }
        while (n2 != 0) {
            copy[copy.length - n2] = '*';
            n2--;
        }
        String newValue = new String(copy);
        if (!values.contains(newValue)) {
            values.addElement(new String(copy));
        }
        newValues.add(newValue);
    }
    String oldName = new String(instancesFilter.attribute(attribute).name());
    instancesFilter.deleteAttributeAt(attribute);
    instancesFilter.insertAttributeAt(new Attribute(oldName, values), instancesFilter.numAttributes());
    for (int i = 0; i < instancesFilter.numInstances(); i++) {
        instancesFilter.instance(i).setValue(instancesFilter.numAttributes() - 1, newValues.get(i));
    }
    //saveToFile(3);
    return true;
}

From source file:mao.datamining.Util.java

/**
* Based on the defined list of attributes, transform them into nominal from numeric type
* weka.filters.unsupervised.attribute.NumericToNominal -R first-last
* @param newData/*from   w ww  . j  av  a  2s.  c  o  m*/
* @param columns2Nominal
* @return 
*/
public static Instances transformNum2Nominal(Instances newData, String[] columns2Nominal) {
    StringBuilder indexArrayStr = new StringBuilder();
    for (int i = 0; i < columns2Nominal.length; i++) {
        String attrName = columns2Nominal[i];
        Attribute attr = newData.attribute(attrName);
        if (attr != null) {
            indexArrayStr.append(attr.index() + 1).append(",");
        }
    }
    try {
        NumericToNominal transform = new NumericToNominal();
        transform.setInputFormat(newData);
        transform.setAttributeIndices(indexArrayStr.toString());
        newData = Filter.useFilter(newData, transform);
    } catch (Exception e) {
        Main.logging(null, e);
    }
    //        Main.logging("== New Data after transforming numeric data : ===\n" + newData.toSummaryString());
    return newData;
}