ALUMNO: Mendoza Cortés Isidoro Iván N. DE CUENTA: 1026884 SEMESTRE: M9
SISTEMAS INTELIGENTES INTELIGENTES
FECHA DE ENTREGA: 11/Nov/14
Objetivo
Implementar el código para ejecutar desde java (netbeans) la API de WEKA como herramienta de ayuda en la minería de datos para el análisis, la clasificación y el filtrado de cierto tipo de datos, al ser weka un software de aprendizaje.
Introducción En esta práctica veremos el uso de la api de weka para entorno java (netbeans), con la cual podremos realizar básicamente lo mismo que en weka pero se estará ligado a weka, este método es diferente al enseñado, ya que en este cargaremos el proyecto y resolveremos los conflictos dentro del proyecto.
Desarrollo Aquí podemos ver que al abrir el proyecto nos presenta un error que ya es perábamos ya que necesitamos el archivo weka.Jar para poderlo ejecutar sin problema.
En la s igui ente ventana vemos la r esoluci ón del probl ema bus cando el archivo necesitado de forma “manu al ”, inclus ive nos i ndica cuál es el archivo que falta para s u correcta ejecución.
Exploramos los archivos en la siguiente ruta que el sistema nos genera por default (C:\Archivos de Programa\Weka-3-6) hasta llegar a la carpeta “Weka -3- 6” en esta encontraremos el archi vo weka.jar lo seleccionamos y l o abrimos.
Ahora esta ventana nos di rá que el archi vo seleccionado es correcto y que el probl ema está resuelto.
Ahora podemos vis ual izar que ya se ha agregado l a nueva bibl ioteca y que el proyecto ya no presenta errores y podemos a cceder al código, hacemos la s siguientes modificaciones:
Librerías necesarias para correr la aplicación import ja va.awt.BorderLayout; import ja va.io.BufferedReader; import j ava.i o.FileReader; import java.util.Random; import weka.clas sifiers.Evaluation; import weka.cla ss ifiers.trees.J48; import weka.core.Instances; import weka.gui.treevisua li zer.Pla ceNode2; import weka.gui.treevisua li zer.TreeVis ual izer; publi c cla ss testWeka { publi c static voi d mai n(String[] args ) throws Exception {
// con este método Abrimos el archovo .arff BufferedReader reader = new BufferedReader(new FileReader("clima.nominal.arff"));
//Creamos la instancia que recibirá los datos Instances data = new Instances(reader);
//Cerramos el archivo reader.close();
// Estableciendo el atributo clase data.setClas sIndex(data.numAttributes() - 1); System.out.println("Atributos leidos: " + data.numAttributes()); System.out.println("Ejemplos leidos : " + data.numInstances()); System.out.println("Cla ses leida s: " + da ta.numClas ses()); // crear i nstancia del cl asificador J48 tree = new J48(); //Entrenar al modelo tree.buildClassifier(data); System.out.println("Modelo construi do");
//Evaluar el modelo Evaluati on eval = new Evaluati on(data); eval.cros sValidateModel(tree, data, 10, new Random(1));
//Impresión de resultados System.out.println(eval.toSummaryString());
//
Grafiaca del arbol
final ja vax.swing.JFrame jf =new ja vax.swi ng.JFrame("Visualización de l arbol de clasificación de Weka: J48"); jf.s etSize(500, 400) ; jf.getContentPane().setLayout(new BorderLayout()); //Clas e que nos pemite vi sua lizar el arbol TreeVisualizer tv = new TreeVisualizer(null, tree.graph(), new PlaceNode2()); jf.getContentPane().add(tv, BorderLayout.CENTER); jf.a ddWi ndowLis tener(new ja va.awt.event.WindowAdapter() { publi c void windowClos ing(java.awt.event.WindowEvent e) { jf.dis pose(); } }); jf.s etVis ibl e(true); tv.fitToScreen(); } }
Árbol de clasificación de weka con la biblioteca cargada en el proyecto
Conclusiones Esta bi bli oteca es una excelente herramienta para el uso del entorno Weka dentro de j ava ya que de manera es s encill o y se puede ha cer uso de la s herra mientas de weka para poder s er aplic ados en códigos más complejos en l os cual es se pueden hacer uso de los a lgori tmos de clasificación de datos para s u eval uación en el á rea de minería de datos, resulta una manera muy versá til el uso de la s herramientas de la api de weka y lo mejor que podemos a preciar es que el desempeño es s imil ar, en la s ventanas podemos a preciar que el s istema se está ejecutando en java y s in ni ngún problema también nos muestra excelentes r esultados .