2012-04-06 2 views
17

He creado un conjunto de datos que contiene +/- 13000 filas con +/- 50 características. Sé cómo dar salida a cada resultado de clasificación: predicción y real, pero me gustaría poder generar algún tipo de ID con esos resultados. Así que agregué una columna de ID a mi conjunto de datos, pero no sé cómo descartar la ID al clasificar, al mismo tiempo que puedo mostrar la ID con cada resultado de predicción. Sé cómo seleccionar las características para producir con cada predicción.Omitir característica al clasificar, pero mostrar la función en la salida

Respuesta

11

Utilice FilteredClassifier. Ver this y this.

+3

Como filtro, utilice 'weka.filters. unsupervised.attribute.Remove' – drevicko

2

Digamos follwoing son los atributos de la bbcsport.arff que desea eliminar y está en un archivo línea por línea attributes.txt ..

serena
sirven
servicio
conjuntos
sorprendente
tenis
desempate
torneos de Wimbledon

..
Así es como puede incluir o excluir los atributos estableciendo verdadero o falso. remove.setInvertSelection (mutuamente difícil de alcanzar) (falsa)

BufferedReader datafile = new BufferedReader(new FileReader("bbcsport.arff")); 
BufferedReader attrfile = new BufferedReader(new FileReader("attributes.txt")); 

Instances data = new Instances(datafile); 
List<Integer> myList = new ArrayList<Integer>(); 
String line; 

while ((line = attrfile.readLine()) != null) { 
    for (n = 0; n < data.numAttributes(); n++) { 
    if (data.attribute(n).name().equalsIgnoreCase(line)) { 
     if(!myList.contains(n)) 
     myList.add(n); 
    } 
    } 
} 

int[] attrs = myList.stream().mapToInt(i -> i).toArray(); 
Remove remove = new Remove(); 
remove.setAttributeIndicesArray(attrs); 
remove.setInvertSelection(false); 
remove.setInputFormat(data); // init filter 

Instances filtered = Filter.useFilter(data, remove); 

'filtrada' tiene los atributos finales ..

Mi blog .. http://ojaslabs.com/include-exclude-attributes-in-weka

Cuestiones relacionadas