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ómo se puede aprender y dominar un tema?
- ¿Es Theano (biblioteca de Python ML) una buena biblioteca si quiero crear una aplicación comercial?
- ¿Qué algoritmos de aprendizaje automático para la clasificación admiten el aprendizaje en línea?
- ¿Cuáles son algunos buenos textos en MCMC?
- ¿Cuál es un buen consejo para una implementación eficiente de un algoritmo de aprendizaje automático en C / C ++?
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;
}
}