List of usage examples for weka.filters.unsupervised.attribute NumericToNominal setAttributeIndices
public void setAttributeIndices(String value)
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; }