Professional Documents
Culture Documents
UNIVERSIDAD METROPOLITANA
CARRERA DE INGENIERIA EN SISTEMAS DE INFORMACIÒN
PROPUESTO POR:
ASIGNATURA:
INTELEGENCIA ARTIFICAL.
DOCENTE:
FEBRERO DE 2017
Índice
Diseño del corpus de entrenamiento ..................................................................................4
Además con las temperaturas ingresadas se podrá pronosticar la temperatura del día
siguiente, lo que indica que pronosticar el clima es un algoritmo basado en el clasificador
utilizado.
Creando el archivo del corpus de entrenamiento
@relation nombre_archivo
La segunda sección deberá contener los atributos (incluidas las clases que vamos a
definir) que definiremos para generar el corpus de entrenamiento. Esto se define con la
siguiente línea:
tipo: Es el tipo de datos que almacenará el atributo. Es muy similar al valor definido en
una variable de programación.
Finalmente, la tercera sección estará compuesta por los datos que llenarán cada una de las
clases definidas. Se define con la siguiente línea:
@data
@relation clima
En la línea anterior estoy definiendo 3 clases (caluroso, fresco, frío) que serán accedidas
a través del parámetro clima.
En la línea anterior estoy definiendo un parámetro llamado temperatura que será de tipo
numerico (numeric).
@data
En la línea anterior estoy definiendo que a partir de aquí vendrán los datos de cada una
de las clases.
frio, 3
frio, 5
frio, 7
frio, 10
frio, 15
Las líneas anteriores corresponden con los valores para la clase frio. Esto no
necesariamente tiene que ir en orden, pero es más fácil leer el archivo de entrenamiento
si lo tenemos ordenado. Primeramente escribimos el nombre de la clase a la que haremos
referencia (frio), luego separamos por una "coma" seguido del valor de la temperatura
que corresponderá con esa clase (3, 5, 7, 10 y 15). Esto se hace también para las clases
restantes.
La Fig. 3 muestra cómo quedaría el archivo de entrenamiento, sólo basta con guardar los
cambios y tendríamos listo este primer paso.
Con esto se generará una estructura de directorios del lado izquierdo de la pantalla:
Definición de clases
En este proyecto utilizaremos 3 clases que tendrán funciones específicas. Para esto
presionamos el botón derecho del mouse sobre el paquete proyectoclasificacion y del
menú contextual elegimos la opción New y a continuación Java Class...:
Fig. 8. Crear una nueva clase en el paquete proyectoclasificacion
En la ventana que aparece a continuación, debemos elegir el nombre de la clase; para este
caso llamaremos a la clase clsClasificacion. La clase clsClasificacion se encargará de
clasificar el dato de entrada en alguna de las clases definidas en el corpus de
entrenamiento (frio, fresco, caluroso):
Ahora vamos a proceder a agregar la librería de Weka para poder utilizar los métodos que
esta provee. Presionamos el botón derecho del mouse sobre el nombre del proyecto
ProyectoClasificacion y elegimos la opción Properties:
Con esto, deberíamos ver la librería agregada en la siguiente ventana; ahora solo basta
con presionar el botón OK para continuar con el proyecto:
Fig. 14. Librería agregada al proyecto
Ahora vamos a proceder a abrir la clase llamada clsModelo y eliminar todo el código que
haya en esta, y pegar el código siguiente:
package proyectoclasificacion;
import weka.classifiers.Classifier;
import weka.classifiers.functions.SMO;
import weka.core.Instances;
import weka.core.converters.ConverterUtils;
package proyectoclasificacion;
import java.io.IOException;
import weka.core.Attribute;
import weka.core.Instance;
import weka.core.Instances;
/* Se escribe sólo los atributos sin considerar las clases, en este caso, solo queda temperatura */
Attribute atributo = train.attribute("temperatura");
instance.setValue(atributo, temperatura);
instance.setDataset(train);
return instance;
}
}
A continuación procederemos a abrir la clase llamada clsClasificacion y eliminar el
código que contiene esta para copiar y pegar el siguiente:
package proyectoclasificacion;
import weka.classifiers.Classifier;
import weka.classifiers.functions.SMO;
import weka.core.Instance;
import weka.core.Instances;
import weka.core.converters.ConverterUtils;
if(train.numInstances()==0){
throw new Exception("No classifier available");
}
return train.classAttribute().value((int)predicted);
}
}
Ahora presionamos el botón derecho del mouse sobre el paquete formularios y elegimos
la opción New y a continuación JFrame Form:
En la ventana siguiente debemos elegir el nombre del formulario a generar; para este caso
el nombre será frmPrincipal:
Fig. 20. Nombrar el nuevo formulario
Con esto deberíamos poder ver el nuevo formulario agregado en nuestro proyecto:
Ahora vamos a agregar los elementos correspondientes para que el formulario se vea de
la siguiente manera:
Fig. 22. Formulario principal
Ahora debemos ir al modo código; para esto presionamos el botón source como se
muestra a continuación:
Este es el código anterior para poder copiar y pegarlo debajo del constructor del
formulario:
Ahora debemos modificar el nombre de las variables de los cuadros de texto. Para hacer
esto, vamos a ir uno por uno, de arriba hacia abajo. Primero debemos presionar el botón
derecho del mouse sobre un cuadro de texto y del menú contextual elegir la opción
Change Variable Name y a continuación elegir el nombre de la nueva variable para el
cuadro de texto:
Fig. 25. Cambiar el nombre de la variable a un cuadro de texto
Con estos pasos asignaremos cada uno de los nombres para los cuadros de texto como
se muestra en la figura siguiente:
Fig. 27. Nombres de los cuadros de texto
A continuación vamos a programar los botones; para ello presionamos doble clic sobre el
botón abrir que se encuentra en la línea que indica la ruta del corpus:
Doble clic
Esto nos llevará a la vista código y se nos ha generado un método para el botón; dentro
de este método tenemos que escribir o copiar y pegar el siguiente código:
txtRutaCorpus.setText(abrirArchivo());
Ahora hacemos lo mismo pero para el siguiente botón, el que se encuentra a la altura de
Ruta del modelo:
Doble clic
Ahora debemos copiar y pegar el código siguiente en el método que se generó para el
botón abrir:
txtRutaModelo.setText(abrirArchivo());
Doble clic
Ahora vamos a generar el método para el botón de seleccionar que se encuentra a la altura
de Ruta de destino:
Doble clic
txtRutaDestino.setText(abrirArchivo());
Doble clic