Estoy usando Weka e implementé la ganancia de información forestal aleatoria usando Java. ¿Cuáles son algunos consejos sobre cómo imprimir cuántas funciones tiene después de aplicar la ganancia de información y cómo imprimir los nombres de las funciones y sus valores de ganancia de información en orden descendente (solo funciones de ganancia de información)?

Hola,

Recientemente hice lo mismo en Weka para uno de mis cursos y mi código funcionó bien, así que quiero compartir lo mismo en la comunidad, no es del todo mío, obtuve ayuda de los foros en línea, así que gracias a la comunidad en línea. Ahora vamos a la solución.

Primero construya el clasificador (en este caso, Random Forest con características predeterminadas o cualquier otra característica específica que desee)
Luego, aplique infoGainAttributeEval a la instancia (el conjunto de datos, el archivo arrf en mi caso) y luego almacene los valores de todos los atributos con valores de ganancia de información mayores que 0 en el mapa de hash y luego ordénelo.

Código

// Bosque aleatorio con ganancia de información
RandomForest rf = new RandomForest ();
rf.setNumTrees (300);
rf.buildClassifier (inst);

// Aplicar ganancia de información a las características

AttributeSelection as = new AttributeSelection ();
Ranker ranker = nuevo Ranker ();

InfoGainAttributeEval infoGainAttrEval = new InfoGainAttributeEval ();
as.setEvaluator (infoGainAttrEval);
as.setSearch (ranker);
as.setInputFormat (inst);
inst = Filter.useFilter (inst, as);
Evaluación eval3 = nueva Evaluación (inst);
eval3.crossValidateModel (rf, inst, 9, new Random (1));
int cuenta = 0;
// Usando HashMap para almacenar los valores de ganancia de información de los atributos
Map infogainscores = new HashMap ();
for (int i = 0; i <inst.numAttributes (); i ++) {
Atributo t_attr = inst.attribute (i);
doble infogain = infoGainAttrEval.evaluateAttribute (i);
if (infogain! = 0) {
infogainscores.put (t_attr, infogain);
cuenta = cuenta + 1;
}
}