manual de weka - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple cli, explorer,...

44
M ANUAL DE W EKA Diego García Morate diego.garcia.morate(at)gmail.com

Upload: others

Post on 28-Jun-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

MANUAL DE WEKA

Diego García Morate diego.garcia.morate(at)gmail.com

Page 2: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

Acerca de este documento...

La licencia de este documento es Creative Commons Reconocimiento-NoComercial-SinObraDerivada2.0

http://creativecommons.org/licenses/by-nc-nd/2.0/

Por lo que se permite:

copiar, distribuir y comunicar públicamente la obra

Bajo las siguientes condiciones:

Reconocimiento. Debe reconocer y citar al autor original.

No comercial. No puede utilizar esta obra para fines comerciales.

Sin obras derivadas. No se puede alterar, transformar o generar una obra derivada a partir deesta obra.

Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de estaobra.

Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los dere-chos de autor

2

Page 3: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

ÍNDICE

Índice

1. Introducción 2

2. Instalación y Ejecución 2

3. Ficheros .arff 3

4. Simple CLI 5

5. Explorer 65.1. Preprocesado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

5.1.1. Aplicación de filtros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95.2. Clasificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145.3. Clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225.4. Búsqueda de Asociaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225.5. Selección de Atributos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235.6. Visualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

6. Experimenter 256.1. Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

6.1.1. Weka distribuido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296.2. Ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316.3. Análisis de resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

7. Knowledge flow 34

8. Modificando Weka 378.1. Creando un nuevo clasificador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

Referencias 42

1

Page 4: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

1. Introducción

L A Weka (Gallirallus australis) es un ave endémica de Nueva Zelanda. Esta Gallinácea en peligrode extinción es famosa por su curiosidad y agresividad. De aspecto pardo y tamaño similar a una

gallina las wekas se alimentan fundamentalmente de insectos y frutos.

Figura 1: Imagen de una Weka

Este ave da nombre a una extensa colección de algoritmos de Máquinas de conocimiento desa-rrollados por la universidad de Waikato (Nueva Zelanda) implementados en Java [1, 2]; útiles paraser aplicados sobre datos mediante los interfaces que ofrece o para embeberlos dentro de cualquieraplicación. Además Weka contiene las herramientas necesarias para realizar transformaciones sobrelos datos, tareas de clasificación, regresión, clustering, asociación y visualización. Weka está diseñadocomo una herramienta orientada a la extensibilidad por lo que añadir nuevas funcionalidades es unatarea sencilla.

Sin embargo, y pese a todas las cualidades que Weka posee, tiene un gran defecto y éste es laescasa documentación orientada al usuario que tiene junto a una usabilidad bastante pobre, lo que lahace una herramienta díficil de comprender y manejar sin información adicional. Este manual tienepor objetivo explicar el funcionamiento básico de este programa (en su versión 3.4-2) y sentar unasbases para que el lector pueda ser autodidacta.

La licencia de Weka es GPL* , lo que significa que este programa es de libre distribución y di-fusión. Además, ya que Weka está programado en Java, es independiente de la arquitectura, ya quefunciona en cualquier plataforma sobre la que haya una máquina virtual Java disponible.

2. Instalación y Ejecución

Una vez descomprimido Weka y teniendo apropiadamente instalada la máquina de virtual Java,para ejecutar Weka simplemente debemos ordenar dentro del directorio de la aplicación el mandato:

java -jar weka.jar

No obstante, si estamos utilizando la máquina virtual de Java de Sun (que habitualmente es la�* GNU Public License. http://www.gnu.org/copyleft/gpl.html

2

Page 5: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

3 FICHEROS .ARFF

más corriente), este modo de ejecución no es el más apropiado, ya que, por defecto, asigna sólo 100megas de memoria de acceso aleatorio para la máquina virtual, que muchas veces será insuficientepara realizar ciertas operaciones con Weka (y obtendremos el consecuente error de insuficiencia dememoria); por ello, es altamente recomendable ordenarlo con el mandato:

java -Xms<memoria-mínima-asignada>M

-Xmx<memoria-máxima-asignada>M -jar weka.jar

Figura 2: Ventana de selecciónde Interfaz

Dónde el parámetro-Xms indica la memoria RAM mí-nima asignada para la máquina virtual y-Xmx la má-xima memoria a utilizar, ambos elementos expresados enMegabytes si van acompañados al final del modificador“M”. Una buena estrategia es asignar la mínima memo-ria a utilizar alrededor de un 60 % de la memoria dispo-nible. Para obtener la lista de opciones estándar, si usa-mos la máquina virtual de Sun, ordenamos el manda-to java -h , y para ver la lista de opciones adicionalesjava -x .

Una vez que Weka esté en ejecución aparecerá una venta-na denominadaselector de interfaces(figura 2), que nos permi-te seleccionar la interfaz con la que deseemos comenzar a tra-bajar con Weka. Las posibles interfaces a seleccionar sonSim-ple Cli, Explorer, Experimentery Knowledge flowque se expli-carán detenidamente y de forma individual en secciones siguien-tes.

3. Ficheros .arff

Nativamente Weka trabaja con un formato denominadoarff , acrónimo deAttribute-RelationFile Format. Este formato está compuesto por una estructura claramente diferenciada en tres partes:

1. Cabecera.Se define el nombre de la relación. Su formato es el siguiente:

@relation <nombre-de-la-relación>

Donde<nombre-de-la-relación> es de tipoString * . Si dicho nombre contiene algúnespacio será necesario expresarlo entrecomillado.

2. Declaraciones de atributos.En esta sección se declaran los atributos que compondrán nuestroarchivo junto a su tipo. La sintaxis es la siguiente:

@attribute <nombre-del-atributo> <tipo>

* Entendiendo como tipo String el ofrecido por Java.

3

Page 6: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

Donde<nombre-del-atributo> es de tipoString teniendo las mismas restriccionesque el caso anterior. Weka acepta diversos tipos, estos son:

a) NUMERIC Expresa números reales* .

b) INTEGER Expresa números enteros.

c) DATE Expresa fechas, para ello este tipo debe ir precedido de una etiqueta de formato en-trecomillada. La etiqueta de formato está compuesta por caracteres separadores (guionesy/o espacios) y unidades de tiempo:

dd Día.

MM Mes.

yyyy Año.

HH Horas.

mm Minutos.

ss Segundos.

d) STRING Expresa cadenas de texto, con las restricciones del tipoString comentadasanteriormente.

e) ENUMERADO El identificador de este tipo consiste en expresar entre llaves y separadospor comas los posibles valores (caracteres o cadenas de caracteres) que puede tomar elatributo. Por ejemplo, si tenemos un atributo que indica el tiempo podría definirse:

@attribute tiempo {soleado,lluvioso,nublado}

3. Sección de datos.Declaramos los datos que componen la relación separando entre comas losatributos y con saltos de línea las relaciones.

@data4,3.2

Aunque éste es el modo “completo" es posible definir los datos de una forma abreviada (sparsedata). Si tenemos una muestra en la que hay muchos datos que sean 0 podemos expresar losdatos prescindiendo de los elementos que son nulos, rodeando cada una de las filas entre llavesy situando delante de cada uno de los datos el número de atributo** .

Un ejemplo de esto es el siguiente

@data{1 4, 3 3}

En este caso hemos prescindido de los atributos 0 y 2 (como mínimo) y asignamos al atributo1 el valor 4 y al atributo 3 el valor 3.

* Debido a que Weka es un programa Anglosajón la separación de la parte decimal y entera de los números reales serealiza mediante un punto en vez de una coma.

** La numeración de atributos comienza desde el 0, por lo que primero es el 0 y no el 1

4

Page 7: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

4 SIMPLE CLI

En el caso de que algún dato sea desconocido se expresará con un símbolo de cerrar interroga-ción (“?").

Es posible añadir comentarios con el símbolo “ %”, que indicará que desde ese símbolo hasta elfinal de la línea es todo un comentario. Los comentarios pueden situarse en cualquier lugar del fichero.

Un ejemplo de un archivo de prueba.

prueba.arff

1 % Archivo de prueba para Weka.2 @relation prueba3

4 @attribute nombre STRING5 @attribute ojo_izquierdo {Bien,Mal}6 @attribute dimension NUMERIC7 @attribute fecha_analisis DATE "dd-MM-yyyy HH:mm"8

9 @data10 Antonio,Bien,38.43,"12-04-2003 12:23"11 ’Maria Jose’,?,34.53,"14-05-2003 13:45"12 Juan,Bien,43,"01-01-2004 08:04"13 Maria,?,?,"03-04-2003 11:03"

4. Simple CLI

Figura 3: Interfaz de modo consola

Simple CLI es una abreviación deSimple Client.Esta interfaz (figura 3) proporciona una consola pa-ra poder introducir mandatos. A pesar de ser enapariencia muy simple es extremadamente poten-te porque permite realizar cualquier operación so-portada por Weka de forma directa; no obstan-te, es muy complicada de manejar ya que es ne-cesario un conocimiento completo de la aplica-ción.

Su utilidad es pequeña desde que se fue recu-briendo Weka con interfaces. Actualmente ya prácti-camentesóloes útil como una herramienta de ayudaa la fase de pruebas.

Los mandatos soportados son los siguientes:

java <nombre-de-la-clase><args>Ejecuta el método “main” de la clase dada con los argumentos especificados al ejecutar estemandato (en el caso de que realmente se haya proporcionado alguno). Cada mandato es atendi-do en un hilo independiente por lo que es posible ejecutar varias tareas concurrentemente.

breakDetiene la tarea actual.

5

Page 8: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

kill“Mata” la tarea actual. Este comando es desaconsejable, sólo debe usarse en el caso de que latarea no pueda ser detenida con el mandatobreak .

cls (ClearScreen).Limpia el contenido de la consola.

exitSale de la aplicación.

help <mandato>Proporciona una breve descripción de cada mandato.

5. Explorer

El modoExploradores el modo más usado y más descriptivo* . Éste permite realizar operacionessobre un sólo archivo de datos. La ventana principal es la mostrada en la figura 4.

Figura 4: El modo explorador. Ventana inicial.

* Es muy importante reseñar que Weka es un programa en continuo desarrollo y cada una de las 4 interfaces que poseeevoluciona en separado por lo que actualmente (2004) no son equivalentes por completo, es decir, hay ciertas funcionalida-des sólo realizables por algunas de las interfaces y no por otras y viceversa

6

Page 9: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

5 EXPLORER

El explorador permite tareas de:

1. Preprocesado de los datos y aplicación de filtros.

2. Clasificación.

3. Clustering.

4. Búsqueda de Asociaciones.

5. Selección de atributos.

6. Visualización de datos.

5.1. Preprocesado

El primer paso para comenzar a trabajar con el explorador es definir el origen de los datos. Wekasoporta diferentes fuentes que coinciden con los botones que están debajo de las pestañas superioresmostrados en la ventana 4. Las diferentes posibilidades son las siguientes:

Open FileAl pulsar sobre este botón aparecerá una ventana de selección de fichero. Aunque el formatopor defecto de Weka es elarff eso no significa que sea el único que admita, para ello tieneinterpretadores de otros formatos. Éstos son:

CSV Archivos separados por comas o tabuladores. La primera línea contiene los atributos.

C4.5 Archivos codificados según el formato C4.5. Unos datos codificados según este formatoestarían agrupados de tal manera que en un fichero.names estarían los nombres delos atributos y en un fichero.data estarían los datos en sí. Weka cuando lee ficheroscodificados según el formato C4.5 asume que ambos ficheros (el de definición de atributosy el de datos) están en el mismo directorio, por lo que sólo es necesario especificar unode los dos.

Instancias SerializadasWeka internamente almacena cada muestra de los datos como unainstancia de la claseinstance . Esta clase esserializable* por lo que estos objetos pue-den ser volcados directamente sobre un fichero y también cargados de uno.

Para cargar un archivoarff simplemente debemos buscar la ruta donde se encuentra el ficheroy seleccionarlo. Si dicho fichero no tiene extensión arff, al abrirlo Weka intentará interpretarlo,si no lo consigue aparecerá un mensaje de error como el de la figura 5.

Pulsando enUse converternos dará la opción de usar un interpretador de ficheros de los tiposya expuestos.

Open UrlCon este botón se abrirá una ventana que nos permitirá introducir una dirección en la que definirdónde se encuentra nuestro fichero. El tratamiento de los ficheros (restricciones de formato,etc.) es el mismo que el apartado anterior.

* En Java un objeto es serializable cuando su contenido (datos) y su estructura se transforman en una secuencia de bytesal ser almacenado. Esto hace que estos objetos puedan ser enviados por algún flujo de datos con comodidad.

7

Page 10: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

5.1 Preprocesado

Figura 5: Error al abrir un fichero.

Open DBCon este botón se nos da la posibilidad de obtener los datos de una base de datos.

Figura 6: Ventana para seleccionar una base de datos.

Para configurarla lo primero es definir la url por la cual es accesible la base de datos, la contra-seña para acceder, el nombre de usuario, la consulta que queremos realizar y si queremos o nousar el modo de datos abreviado (sparse data).

Así mismo los botones de la parte inferior dan posibilidad de cargar y guardar esta configura-ción en un fichero.

Una vez seleccionado el origen de los datos podremos aplicar algún filtro sobre él o bien pasar alas siguientes secciones y realizar otras tareas. Los botones que acompañan a abrir el fichero:Undoy Save, nos permiten deshacer los cambios y guardar los nuevos datos ya transformados (en formatoarff ). Además, se muestra en la ventana (figura 7) cada uno de los atributos que componen losdatos, junto con un resumen con estadísticas de los mismos (media aritmética, rango de los datos,desviación estándar, número de instancias distintas, de qué tipo son, etc.).

8

Page 11: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

5 EXPLORER

Figura 7: Modo explorador con un fichero de datos cargado.

En el cuadrante inferior derecho aparece una representación gráfica del atributo seleccionado. En-cima de ésta hay un menú desplegable que permite variar el atributo de referencia que se representaráen color para contrastar ambos atributos. Pulsando enVisualize all se abre una ventana desplegablemostrando todas las gráficas pertenecientes a todos los atributos.

5.1.1. Aplicación de filtros

Weka permite aplicar una gran diversidad de filtros sobre los datos, permitiendo realizar trans-formaciones sobre ellos de todo tipo. Al pulsar el botónChoosedentro del recuadroFilter se nosdespliega un árbol en el que seleccionar los atributos a escoger (figura 8).

Figura 8: Aplicando un filtro en el modo explorador.

9

Page 12: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

5.1 Preprocesado

A continuación se hace una breve descripción de cada uno de ellos* .

Attribute Los filtros agrupados en esta categoría son aplicados a atributos.

Add Añade un atributo más. Como parámetros debemos proporcionarle la posición que vaa ocupar este nuevo atributo (esta vez comenzando desde el 1), el nombre del atributoy los posibles valores de ese atributo separados entre comas. Si no se especifican, sesobreentiende que el atributo es numérico.

AddExpression Este filtro es muy útil puesto que permite agregar al final un atributo que seael valor de una función. Es necesario especificarle la fórmula que describe este atributo,en donde podemos calcular dicho atributo a partir de los valores de otro u otros, refirién-donos a los otros atributos por “a” seguido del número del atributo (comenzando por 1).

Por ejemplo:

(a3^3.4)*a1+sqrt(floor(tan(a4)))

Los operadores y funciones que soporta son+, −, * , / , ^ , log, abs, cos, exp, sqrt, floor(función techo),ceil (función suelo),rint (redondeo a entero),tan, sin, (, ).

Otro argumento de este filtro es el nombre del nuevo atributo.

AddNoise Añade ruido a un determinado atributo que debe ser nominal. Podemos especificarel porcentaje de ruido, la semilla para generarlo y si queremos que al introducir el ruidocuente o no con los atributos que faltan.

ClusterMembership Filtro que dado un conjunto de atributos y el atributo que define la clasede los mismos, devuelve la probabilidad de cada uno de los atributos de estar clasificadosen una clase u otra.

Tiene por parámetroignoredAttributeIndicesque es el rango de atributos que deseamosexcluir para aplicar este filtro. Dicho intervalo podemos expresarlo por cada uno de losíndices los atributos separados por comas o definiendo rangos con el símbolo guión (“-”).

Es posible denotar al primer y último atributo con los identificadoresfirst y last (en estecaso la numeración de los atributos comienza en 1, por lo quefirst corresponde al atributonúmero 1).

Copy Realiza una copia de un conjunto de atributos en los datos. Este filtro es útil en conjun-ción con otros, ya que hay ciertos filtros (la mayoría) que destruyen los datos originales.Como argumentos toma un conjunto de atributos expresados de la misma forma que elfiltro anterior. También tiene una opción que esinvertSelectionque invierte la selecciónrealizada (útil para copiar, por ejemplo, todos los atributos menos uno).

Discretize Discretiza un conjunto de valores numéricos en rangos de datos. Como parámetrostoma los índices de los atributos discretizar (attribute indices) y el número de particionesen que queremos que divida los datos (bins). Si queremos que las particiones las realice

* Por una cuestión de organización interna Weka cataloga todos los filtros dentro de una categoría denominadaUnsu-pervised, en futuras versiones se espera que se habiliten filtros de claseSupervised.

10

Page 13: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

5 EXPLORER

por la frecuencia de los datos y no por el tamaño de estas tenemos la opciónuseEqual-Frecuency. Si tenemos activa esta última opción podemos variar el peso de las instanciaspara la definición de los intervalos con la opciónDesiredWeightOfInstancesPerInterval.Si, al contrario tenemos en cuenta el número de instancias para la creación de intervalospodemos usarfindNumBinsque optimiza el procedimiento de confección de los mismos.

Otras opciones sonmakeBinaryque convierte los atributos en binario einvertSelectionque invierte el rango de los atributos elegidos.

FistOrder Este filtro realiza una transformación de los datos obteniendo la diferencia de paresconsecutivos de datos, suponiendo un dato inicial adicional de valor 0 para conseguir quela cardinalidad del grupo de datos resultante sea la misma que la de los datos origen.

Por ejemplo, si los datos son 1 5 4 6, el resultado al aplicar este filtro será 1 4 -1 2. Estefiltro toma un único parámetro que es el conjunto de atributos con el que obtener estatransformación.

MakeIndicator Crea un nuevo conjunto de datos reemplazando un atributo nominal por unobooleano (Asignará “1” si en una instancia se encuentra el atributo nominal seleccionadoy “0” en caso contrario).

Como atributos este filtro toma el índice el atributo nominal que actuará como indicador,si se desea que la salida del filtro sea numérica o nominal y los índices los atributos sobrelos que queremos aplicar el filtro.

MergeTwoValues Fusiona dos atributos nominales en uno solo. Toma como argumentos laposición del argumento resultado y la de los argumentos fuente.

NominalToBinary Transforma los valores nominales de un atributo en un vector cuyas coor-denadas son binarias.

Normalize Normaliza todos los datos de manera que el rango de los datos pase a ser[0,1].Para normalizar un vector se utiliza la fórmula:

X(i) =x(i)√n

∑i=1

x(i)2

NumericToBinary Convierte datos en formato numérico a binario. Si el valor de un dato es 0o desconocido, el valor en binario resultante será el 0.

NumericTransform Filtro similar a AddExpression pero mucho más potente. Permiteaplicar un método java sobre un conjunto de atributos dándole el nombre de una clasey un método.

Obfuscate Ofusca todas las cadenas de texto de los datos. Este filtro es muy útil si se deseacompartir una base de datos pero no se quiere compartir información privada.

PKIDiscretize Discretiza atributos numéricos (al igual queDiscretize ), pero el númerode intervalos es igual a la raíz cuadrada del número de valores definidos.

RandomProjection Reduce la dimensionalidad de los datos (útil cuando el conjunto de datoses muy grande) proyectándola en un subespacio de menor dimensionalidad utilizando pa-ra ello una matriz aleatoria. A pesar de reducir la dimensionalidad los datos resultantes se

11

Page 14: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

5.1 Preprocesado

procura conservar la estructura y propiedades fundamentales de los mismos.

El funcionamiento se basa en el siguiente producto de matrices:

X(i×n)∗R(n×m) = Xrp(i×m)

SiendoX la matriz de datos original de dimensionesi (número de instancias)× n (númerode atributos),R la matriz aleatoria de dimensiónn (número de atributos)×m (número deatributos reducidos) y Xrp la matriz resultante siendo de dimensióni×m.

Como parámetros toma el número de parámetros en los que queremos aplicar este filtro(numberOfAttributes) y el tipo de distribución de la matriz aleatoria que puede ser:

Sparse 1−√3 con probabilidad16, 0 con probabilidad23 y

√3 con probabilidad1

6.

Sparse 3 -1 con probabilidad12 y 1 con probabilidad12.

Gaussian Utiliza una distribución gaussiana.

Además de estos parámetros, pueden utilizarse también el número de atributos resultantesdespués de la transformación expresado en porcentaje del número de atributos totales(percent), la semilla usada para la generación de números aleatorios (seed), y si queremosque aplique antes de realizar la transformación el filtroReplaceMissingValues , queserá explicado más adelante.

Remove Borra un conjunto de atributos del fichero de datos.

RemoveType Elimina el conjunto de atributos de un tipo determinado.

RemoveUselessElimina atributos que oscilan menos que un nivel de variación. Es útil paraeliminar atributos constantes o con un rango muy pequeño. Como parámetro toma el má-ximo porcentaje de variación permitido, si este valor obtenido es mayor que la variaciónobtenida la muestra es eliminada.

Variación obtenida=Número de atributos distintos

Número de atributos∗100

ReplaceMissingValuesReemplaza todos los valores indefinidos por la moda en el caso de quesea un atributo nominal o la media aritmética si es un atributo numérico.

Standarize Estandariza los datos numéricos de la muestra para que tengan de media 0 y launidad de varianza. Para estandarizar un vectorx se aplica la siguiente fórmula:

x(i) =x(i)− x̄

σ(x)

StringToNominal Convierte un atributo de tipo cadena en un tipo nominal.

StringToWordVector Convierte los atributos de tipoString en un conjunto de atributosrepresentando la ocurrencia de las palabras del texto. Como atributos toma:

DFTranformque indica si queremos que las frecuencias de las palabras sean trans-formadas según la regla:

frec. de la palabra i en la instancia j∗ lognº de instancias

nº de instancias con la palabra i

12

Page 15: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

5 EXPLORER

TFTransformOtra regla de transformación:

log(1+ frecuencia de la palabra i en la instancia j)

attributeNamePrefix, prefijo para los nombres de atributos creados

Delimitadores (delimiters), conjunto de caracteres escape usados para delimitar launidad fundamental (token). Esta opción se ignora si la opciónonlyAlphabeticTokensestá activada, ya que ésta, por defecto, asigna lostokensa secuencias alfabéticasusando como delimitadores todos los caracteres distintos a éstos.

lowerCaseTokensconvierte a minúsculas todos los tokens antes de ser añadidos aldiccionario.

normalizeDocLengthselecciona si las frecuencias de las palabras en una instanciadeben ser normalizadas o no.

outputWordCountscuenta las ocurrencias de cada palabra en vez de mostrar única-mente si están o no están en el diccionario.

useStoplistsi está activado ignora todas las palabras de una lista de palabras excluidas(stoplist).

wordsToKeepdetermina el número de palabras (por clase si hay un asignador declases) que se intentarán guardar.

SwapValues Intercambia los valores de dos atributos nominales.

TimeSeriesDelta Filtro que asume que las instancias forman parte de una serie temporal yreemplaza los valores de los atributos de forma que cada valor de una instancia es reem-plazado con la diferencia entre el valor actual y el valor pronosticado para dicha instancia.

En los casos en los que la variación de tiempo no se conozca puede ser que la instanciasea eliminada o completada con elementos desconocidos (símbolo “?”). Opciones:

attributeIndicesEspecifica el rango de atributos en los que aplicar el filtro.

FillWithMissingLas instancias al principio o final del conjunto de datos, donde losvalores calculados son desconocidos, se completan con elementos desconocidos (sím-bolo “?”) en vez de eliminar dichas instancias, que es el comportamiento por defecto.

InstanceRangeDefine el tamaño del rango de valores que se usará para realizar lasrestas. Si se usa un valor negativo significa que realizarán los cálculos con valoresanteriores.

invertSelectionInvierte la selección realizada.

Instance Los filtros son aplicados a instancias concretas enteras.

NonSparseToSparseConvierte una muestra de modo completo a modo abreviado.

Randomize Modifica el orden de las instancias de forma aleatoria.

RemoveFoldsPermite eliminar un conjunto de datos. Este filtro está pensado para eliminaruna partición en una validación cruzada.

RemoveMisclassifiedDado un método de clasificación lo aplica sobre la muestra y eliminaaquellas instancias mal clasificadas.

RemovePercentageSuprime un porcentaje de muestras.

13

Page 16: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

5.2 Clasificación

RemoveRangeElimina un rango de instancias.

RemoveWithValues Elimina las instancias acordes a una determinada restricción.

Resample Obtiene un subconjunto del conjunto inicial de forma aleatoria.

SparseToNonSparseConvierte una muestra de modo abreviado a modo completo.Es la ope-ración complementaria aNonSparseToSparse .

5.2. Clasificación

Pulsando en la segunda pestaña (zona superior) del explorador entramos en el modo clasificación(figura 9). En este modo podremos clasificar por varios métodos los datos ya cargados.

Figura 9: El modo clasificación dentro del explorador.

Si queremos realizar una clasificación lo primero será elegir un clasificador y configurarlo a nues-tro gusto, para ello pulsaremos sobre el botónChoosedentro del áreaClassifier. Una vez pulsado sedesplegará un árbol que nos permitirá seleccionar el clasificador deseado. Una vez seleccionado apa-recerá, en la etiqueta contigua al botónChoose, el filtro seleccionado y los argumentos con los que seejecutará. Esta información es muy útil si queremos utilizar el interfaz de consola ya que podremosconfigurar nuestro filtro con la interfaz y luego obtener el resultado apto para línea de mandato.

Para poder acceder a las propiedades de cada clasificador deberemos hacerdoble-clicksobre laetiqueta antes mencionada. Al darle aparecerá una nueva ventana con las propiedades junto a unabreve explicación del mismo. Una vez elegido el clasificador y sus características el próximo paso esla configuración del modo de entrenamiento (Test Options). Weka proporciona 4 modos de prueba:

Use training setCon esta opción Weka entrenará el método con todos los datos disponibles y luego lo aplicaráotra vez sobre los mismos.

14

Page 17: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

5 EXPLORER

Supplied test setMarcando esta opción tendremos la oportunidad de seleccionar, pulsando el botónSet . . ., unfichero de datos con el que se probará el clasificador obtenido con el método de clasificaciónusado y los datos iniciales.

Cross-validationPulsando el botónCross-validationWeka realizará una validación cruzada estratificada del nú-mero de particiones dado (Folds). La validación cruzada consiste en: dado un númeron sedivide los datos enn partes y, por cada parte, se construye el clasificador con lasn−1 partesrestantes y se prueba con esa. Así por cada una de lasn particiones.

Una validación-cruzada es estratificada cuando cada una de las partes conserva las propiedadesde la muestra original (porcentaje de elementos de cada clase).

Percentage splitSe define un porcentaje con el que se construirá el clasificador y con la parte restante se probará

Una vez definido el método de prueba Weka nos permite seleccionar algunas opciones más conel botónMore Options (figura 10).

Figura 10: Ventana de opciones adicionales en el modo de clasificación.

Las opciones que se nos presentan son:

Output Model Si la activamos una vez construido y probado el clasificador, nos mostrará en la salidadel clasificador (parte media derecha de la ventana 9) el modelo que ha construido.

Output per-class stats Activada muestra estadísticas referentes a cada clase.

Output entropy evaluation mesures Muestra información de mediciones de la entropía en la clasi-ficación.

15

Page 18: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

5.2 Clasificación

Output confusion matrix Muestra la matriz de confusión del clasificador. Esta tabla cuyo númerode columnas es el número de atributos muestra la clasificación de las instancias. Da una infor-mación muy útil porque no sólo refleja los errores producidos sino también informa del tipo deéstos.

Si tuvieramos el problema de clasificar un conjunto de vacas en dos clases gordas y flacas yaplicamos un clasificador, obtendríamos una matriz de confusión como la siguiente.

Gordas Flacas

32 4 Gordas4 43 Flacas

Tabla 1: Ejemplo de una matriz de confusión

Donde las columnas indican las categorías cllasificadas por el clasificador y las filas las cate-gorías reales de los datos. Por lo que los elementos en la diagonal principal son los elementosque ha acertado el clasificador y lo demás son los errores.

Debajo de este cuadro de la ventana existe un menú desplegable que nos permitirá seleccionar unatributo de nuestra muestra. Este atributo es el que actuará como resultado real de la clasificación.Habitualmente este atributo suele ser el último.

Ahora para comenzar un método de clasificación sólo falta pulsar el botónStart. Una vez fun-cionando en la barra de estado aparecerá la información referente al estado del experimento. Cuandoacabe, la Weka situada en la esquina inferior derecha dejará de bailar y eso indicará que el experi-mento ha concluido (figura 11). En la ventana de mensajes del clasificador aparecerá la informaciónreferente al desarrollo de éste que hayamos seleccionado.

16

Page 19: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

5 EXPLORER

Figura 11: Weka habiendo aplicado un método de clasificación.

En la zona inferior-izquierda se encuentra la lista de resultados en la que aparecerán cada unode los experimentos que hayamos realizado. Si pulsamos el botón secundario sobre alguno de ellosobtendremos opciones adicionales aplicables al experimento que hayamos seleccionado (figura 12).Éstas permiten visualizar los resultados obtenidos en diferentes variantes, incluyendo gráficas, guar-dar modelos, etc.

Figura 12: Opciones adicionales de un experimento.

17

Page 20: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

5.2 Clasificación

Éstas opciones adicionales son:

View in main window Mostrará el resultado del experimento en la salida estándar del clasificador.

View in separate window Mostrará el resultado del experimento en una nueva ventana.

Save result buffer Guardará el resultado del experimento en un fichero.

Load model Cargará un modelo de clasificador ya construido.

Save modelGuardará el modelo de clasificador actual.

Re-evaluate model on current test setEnfrentará un modelo con el conjunto de muestra actual.

Visualize clasiffier errors Se abrirá una nueva ventana (figura 13) en la que nos mostrará una gráficacon los errores de clasificación* .

Figura 13: Gráfica de los errores de clasificación.

La ventana del modo gráfica está compuesta por 3 partes. En la parte superior las dos listasdesplegables indican el eje X y el eje Y de la gráfica. Es posible variarles a nuestro gusto yobtener todas las combinaciones posibles.

Debajo de la lista desplegable del eje X se encuentra otra en la que podemos definir un atributoque muestre el rango de variación del mismo en colores. El botón contiguo a ésta, en la misma

* Esta opción será sólo accesible si hemos configurado el clasificador para que almacene la clasificación realizada.

18

Page 21: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

5 EXPLORER

línea, sirve para definir el tipo de figura geométrica que queremos utilizar para seleccionar da-tos en la propia gráfica. Interactuando en la misma seleccionamos un área (figura 14).

Una vez seleccionada a nuestro gusto con el botónSubmit nos mostrará sólo los datos captu-rados en el área de la figura que hemos trazado. El botónResetsirve para volver a la situacióninicial y el botónSavees para guardar los valores de los datos* en un fichero arff.

La barra de desplazamiento, denominadajitter, es muy interesante porque permite añadir unruido aleatorio (en función de lo que se desplace la barra) a los datos. Es útil cuando hay mu-chos datos juntos y queremos separarlos para poder estimar la cantidad que hay.

Figura 14: Selección de un área en la gráfica.

En la parte media-derecha de la ventana de la gráfica (fig. 13) se muestra gráficamente, y deuna forma muy resumida, la distribución de cada uno de los atributos. Pulsando sobre ellos conel botón principal del ratón definiremos el ejeX y con el botón secundario el ejeY.

La última parte (la inferior) de la ventana que muestra gráficas es la leyenda. Pulsando conel ratón en un elemento de la leyenda aparecerá una ventana (figura 15) que nos permitirámodificar los colores en una extensa gama.

* Weka guardará todos los datos de ese apartado, no sólo los pertenecientes a dicha gráfica

19

Page 22: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

5.2 Clasificación

Figura 15: Selección del color para un atributo.

Visualize tree Esta opción mostrará un árbol de decisión, como el de la figura 16, generado por elclasificador, en el caso que lo haya hecho.

Figura 16: Visualización de árboles de decisión.

Las opciones que existen en esta ventana se despliegan pulsando el botón secundario sobre ella.Éstas son:

Center on Top Node centrará el gráfico en la ventana atendiendo a la posición del nodo supe-rior. Esta opción es muy aconsejable si cambiamos el tamaño de la ventana.

Fit to Screen Ajusta el gráfico a la ventana, no sólo la posición sino también su tamaño.

20

Page 23: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

5 EXPLORER

Auto Scale Escala el gráfico de manera que no haya nodos que colisionen.

Select Font Nos permite ajustar el tamaño del tipo de letra del texto.

Si pulsamos el botón secundario sobre un nodo del grafo nos dará la opción deVisualize thenode, si hay instancias que correspondan a ese nodo nos las mostrará.

Visualize margin curve Muestra en una curva la diferencia entre la probabilidad de la clase estimaday la máxima probabilidad de otras clases. El funcionamiento de la ventana es igual que la delcaso anterior.

Visualize thresold curve Muestra la variación de las proporciones de cada clase. Un truco importan-te es que si situamos en el ejeX los coeficientes falsos positivos y en el ejeY los coeficientesde verdaderos positivos obtendremos una curva ROC, y aparecerá sobre la gráfica el valor delárea de ésta.

Visualize cost curve Muestra una gráfica que indica la probabilidad de coste al vavariara sensibilidadentre clases.

21

Page 24: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

5.3 Clustering

5.3. Clustering

Pulsando la tercera pestaña, llamadaCluster, en la parte superior de la ventana accedemos a lasección dedicada al clustering (figura 17). El funcionamiento es muy similar al de clasificación: seelije un método declustering, se selecciona las opciones pertinentes y con el botónStart empieza elfuncionamiento.

Figura 17: El modoclusteringdentro del modo explorador.

Una opción propia de este apartado es la posibilidad de ver de una forma gráfica la asignaciónde las muestras en clusters. Esto se puede conseguir activando la opciónStore cluster for evaluation,ejecutando el experimento y seguidamente, en la lista de resultados, pulsando el botón secundariosobre el experimento en cuestión y marcando la opciónVisualize cluster assignmentscon esto ob-tendremos una ventana similar a las del modo explorador para mostrar gráficas en el que nos mostraráel clusteringrealizado.

5.4. Búsqueda de Asociaciones

La cuarta pestaña (Asociate), muestra la ventana (figura 18) que nos permite aplicar métodosorientados a buscar asociaciones entre datos. Es importante reseñar que estos métodos sólo funcionancon datos nominales. Éste es sin duda el apartado más sencillo y más simple de manejar, carente deapenas opciones, basta con seleccionar un método, configurarlo y verlo funcionar.

22

Page 25: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

5 EXPLORER

Figura 18: El modo Asociación dentro del modo explorador.

5.5. Selección de Atributos

La pestañaSelect Atributes nos permite acceder al área de selección atributos (figura 19). Elobjetivo de estos métodos es identificar, mediante un conjunto de datos que poseen unos ciertos atri-butos, aquellos atributos que tienen más peso a la hora de determinar si los datos son de una clase uotra.

Figura 19: El modo de Selección de Atributos dentro del modo explorador.

23

Page 26: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

5.6 Visualización

Para empezar un método de selección de atributos lo primero es seleccionar el método de eva-luación de atributos (Attribute evaluator). Este método será el encargado de evaluar cada uno de loscasos a los que se le enfrente y dotar a cada atributo de un peso específico. El funcionamiento paraseleccionar este método es el mismo que con otros métodos en Weka, se selecciona el método con elbotónChoosesituado dentro del cuadroAttribute evaluator. Una vez seleccionado podemos accedera las propiedades del mismo pulsando sobre el nombre de la etiqueta que muestra el nombre del mé-todo seleccionado.

El siguiente paso será elegir el método de búsqueda que será el encargado de generar el espaciode pruebas. El funcionamiento es el mismo al caso anterior. Una vez seleccionado el método deevaluación y el de generación del espacio de pruebas sólo falta elegir el método de prueba, el atributoque representa la clasificación conocida y pulsarStart. Una vez acabado el experimento pulsando elbotón secundario sobre la etiqueta del experimento en la lista de experimentos realizados tenemosla opción deVisualize Reduced Data, que nos mostrará los datos habiendo tomado los mejoresatributos en una ventana como la del modo Visualización (visualize), que se explicará en el siguientepunto.

5.6. Visualización

El modo visualización (figura 20) es un modo que muestra gráficamente la distribución de todoslos atributos mostrando gráficas en dos dimensiones, en las que va representando en los ejes todoslos posibles pares de combinaciones de los atributos. Este modo nos permite ver correlaciones yasociaciones entre los atributos de una forma gráfica.

Figura 20: El modo de Visualización dentro del modo explorador.

Pulsandodoble clicksobre cualquier gráfica se nos mostrará en una ventana nueva con el inter-faz para gráficas ya explicado. Las opciones que ofrece este modo se activan mediante las barrasdeslizantes. Las posibles opciones son:

24

Page 27: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

6 EXPERIMENTER

Plotsize define el tamaño del lado de cada una de las gráficas en píxeles, de 50 a 500.

Pointsize define el tamaño del punto expresado en píxeles, de 1 a 10.

Jitter Añade un ruido aleatorio a las muestras, de manera que espacia las muestras que están físi-camente muy próximas, esto tiene útilidad cuando se concentran tanto los puntos que no esposible discernir la cantidad de éstos en un área.

Una vez seleccionados los cambios es imprescindible pulsar el botónUpdate para que se re-presenten de nuevo las gráficas. Otro botón útil, es elSelect Atributes, que nos permite elegir losatributos que se representarán en las gráficas. El último botón que se encuentra en esta ventana esel Subsampleque permite definir el tanto por ciento de muestras (que escogerá aleatoriamente) quequeremos representar.

6. Experimenter

El modo experimentador (Experimenter) es un modo muy útil para aplicar uno o varios métodosde clasificación sobre un gran conjunto de datos y, luego poder realizar contrastes estadísticos entreellos y obtener otros índices estadísticos.

6.1. Configuración

Una vez abierto el modo experimentador obtendremos una ventana como la de la figura 21, quecorresponde a la secciónSetup. Por defecto el modo experimentador está configurado en modo sim-ple, no obstante, esto puede variarse a modo avanzado pulsándo el botón circular acompañado con laetiquetaAdvanced. Para empezar se explicará el modo simple y posteriormente se pasará a explicarel modo avanzado.

Figura 21: El modo experimentador, modo simple.

25

Page 28: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

6.1 Configuración

Lo primero a realizar es definir un fichero configuración que contendrá todos los ajustes, ficherosinvolucrados, notas, etc, pertenecientes a un experimento. Con el botónOpen podemos abrir uno yacreado pero también podremos crear uno nuevo con el botónNew. Una vez creado podemos guardar-lo (Weka por defecto no guarda nada), para lo que usaremos el botónSave* .

El siguiente paso es decidir dónde queremos almacenar los resultados, si es que queremos ha-cerlo. En caso de decantarnos por no hacerlo, aunque Weka lo permite, luego no se podrán ver losresultados obtenidos. Podemos archivar el resultado del experimento de tres formas distintas, en unfichero arff, en un fichero CSV y en una base de datos. Para ello, simplemente debemos seleccionar laopción que corresponda dentro del cuadroResults Destinationy a continuación elelegira ruta lógicadónde guardar dicho resultado.

Lo siguiente es definir el tipo de validación que tendrá el experimento, al igual que en el mo-do explorer, tenemos tres tipos de validación: validación-cruzada estratificada, entrenamiento con unporcentaje de la población tomando ese porcentaje de forma aleatoria y entrenamiento con un por-centaje de la población tomando el porcentaje de forma ordenada.

Una vez completados los anteriores pasos, deberemos indicar a Weka qué archivos de datos que-remos que formen parte de nuestro experimento. Para ello en el cuadroDatasetstenemos un botónllamadoAdd new. . . que nos permite especificar un archivo de datos a añadir o bien, seleccionandoun directorio, nos añadirá todos los archivos que contengan ese directorio de forma recursiva. Junto aese botón se encuentra la opciónUse relative paths, que se utiliza para indicar a Weka que almacenelas referencias a los ficheros como referencias relativas no indirectas. Puede ser útil si deseamos re-petir el experimento en otro ordenador distinto con una estructura de ficheros distinta.

En el cuadro denominadoIteration controldefiniremos el número de repeticiones de nuestro ex-perimento, especificando si queremos que se realicen primero los archivos de datos o los algoritmos.Debajo de este cuadro se encuentra la sección de algoritmos en el que con el botónAdd new. . .podremos añadir los algoritmos que ququeramosSi queremos borrar alguno le seleccionamos y pul-samos el botónDelete selected.

Si se desea se pueden añadir comentarios y notas al experimento; para ello, Weka dispone de uncuadro de texto en la parte inferior de la ventana.

Con esto ya estaría configurado un experimento en modo simple. En el modoAdvancedhayciertas diferencias tanto en los botones (ver figura 22) como en el uso.

* Es importante señalar que aunque hayamos guardado una vez, cada vez que se realice un cambio deberemos volver aguardar los cambios conSave.

26

Page 29: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

6 EXPERIMENTER

Figura 22: El modo experimentador, modoAdvanced.

La principal diferencia es que el funcionamiento de este modo está orientado a realizar tareas es-pecíficas más concretas que un experimento normal, y una cierta funcionalidad existente en el modosimple se ha traslado al modo avanzado, mostrándola más concreta y explícita al usuario.

El cuadroDestinationespecifica dónde guardará Weka el resultado del experimento. Su funciona-lidad es la misma que la del modo simple, pero no su funcionamiento. En este caso deberemos pulsarChoosey elegir en el árbol el tipo de método a utilizar para exportar los resultados (Base de datos,fichero arff o fichero csv). Una vez elegido pulsando sobre la etiqueta que indica el método usado, seabrirá una ventana desplegable en donde configuraremos dicho método. Aunque pueda parecer unacomplicación el cambio en la interfaz para realizar esta operación, ésta segunda permite la adición denuevos métodos sin variar la interfaz original.

Ahora el cambio fundamental entre una interfaz y otra se basa en elResult Generator. En estenuevo modo es necesario seleccionar con el botónChoosequé método generador de resultados utili-zaremos y seguidamente configurarle. Para ello es necesario seguir siempre el mismo procedimiento,pulsardoble clicksobre la etiqueta que identifica el método elegido. Los 5 métodos que permiteseleccionar Weka son:

CrossValidationResultProducerGenera resultados fruto de una validación cruzada. Tiene poropciones:

• numfoldsEl número de particiones para la validación cruzada.

• outputFileFichero donde queremos guardar cada una de las particiones que se realizaránen la validación cruzada. Lo guarda codificado en formato Zip.

27

Page 30: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

6.1 Configuración

Nota: Weka tiene un “fallo” y éste es que al abrir la ventana de diálogo para seleccionar el�fichero donde queremos guardar, al elegir uno y pulsarSelect, lo selecciona pero no cierradicha ventana. Es por tanto necesario pulsarSelecty seguidamente cerrar la ventana.

• rawOutputGuarda los resultados “tal cual”, es decir sin ningún formato fijo. Esta opciónes interesante si queremos buscar errores en el programa (debug mode).

• splitEvaluatorEl método que seleccionemos para evaluar cada una de las particiones dela validación cruzada. En él especificaremos, de la manera habitual, el clasificador a usar.

AveragingResultProducerToma los resultados de un método generador de resultados (comopodría ser el anterior explicado,CrossValidationResultProducer) y cácalculaos promedios delos resultados. Es útil, por ejemplo, para realizar una validación cruzada de muchas particionespor separado y hallar los promedios. Tiene las siguiente opciones:

• calculateStdDevsSeleccionado calcula las desviaciones estándar.

• expectedResultsPerAverageSe elije el número de resultados que se esperan, para dividir lasuma de todos los resultados entre este número. Si por ejemplo realizamos una validacióncruzada de 10 particiones y asignamos el valor de 10 nos dividirá el resultado de las sumasde cada partición entre 10, es decir, en este caso la media aritmética.

• keyFieldnameEn esta opción se selecciona el campo que será distintivo y único de cadarepetición. Por defecto es “Fold” ya que cada repetición será de una partición distinta(Fold).

• resultProducerel método generador de resultados del que tomará los datos.

LearningRateResultProducerLlama a un método generador de resultados para ir repitiendoel experimento variando el tamaño del conjunto de datos. Habitualmente se usa con unAvera-gingResultProducery CrossValidationResultProducerpara generar curvas de aprendizaje. Susopciones son:

• lowersizeSelecciona el número de instancias para empezar. Si es 0 se toma como mínimoel tamaño destepSize.

• resultProducerSelecciona el método generador de resultados. Habitualmente para hacercurvas de aprendizaje se usa elAveragingResultProducer.

• setsizeNúmero de instancias a añadir por iteración.

• upperSizeSelecciona el número máximo de instancias en el conjunto de datos. Si se elije-1 el límite se marca en el número total de instancias.

RandomSplitResultProducerGenera un conjunto de entrenamiento y de prueba aleatorio paraun método de clasificación dado.

• outputfileAl igual que antes define el archivo donde se guardarán los resultados.

• randomizeDataSi lo activamos cogerá los datos de forma aleatoria.

• rawOutputActivado proporciona resultados sin formato útiles para depurar el programa.

• splitEvaluatorSelecciona el método de clasificación a usar.

• trainPercentEstablece el porcentaje de datos para entrenar la muestra.

28

Page 31: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

6 EXPERIMENTER

DatabaseResultProducerDe una base de datos toma los resultados que coinciden con losobtenidos con un método generador de resultados (cualquiera de los anteriores). Si existendatos que no aparezcan en la base de datos se calculan.

• cacheKeyNameSelecciona el nombre del campo de la base de datos a utilizar para formaruna caché de la que coger los datos.

• databaseURLDirección de la base de datos.

• resultproducerMétodo generador de resultados a utilizar.

• usernameNombre de usuario para acceder a la base de datos.

• passwordContraseña para acceder a la base de datos.

Figura 23: Configurandolas opciones de un méto-do de generación de resul-tados.

Una vez que ya está configurado elResult Generatorpode-mos utilizar el Generator propertiespara configurar de una for-ma más sencilla los parámetros seleccionados en elResult Ge-nerator. Para activarlo, simplemente es necesario pulsar el bo-tón que dentro del campoGenerator propertiespone Disabled(desactivado). Una vez pulsado habrá pasado aEnabled (activa-do).

Una vez seleccionado aparecerá una figura 23, en la que podre-mos seleccionar (marcar con el ratón y pulsarSelect) algún atributode los posibles del método. Una vez hecho esto, aparecerá en el re-cuadro inferior, donde estaba el botón de activación, el valor actual dedicha variable. Escribiendo un nuevo valor y pulsandoAdd podemosañadir uno o más valores y, seleccionándolos y pulsandoDelete bo-rrarlos. Con el botónSelect property. . . seleccionamos otros atribu-tos.

En el caso de que el atributo a modificar sea un método, apare-cerá un botón llamadoChooseque nos permitirá seleccionarlo y mo-dificarlo. Esto es particularmente útil si queremos repetir un experi-mento con varios clasificadores, pues seleccionado el atributo del cla-sificador a usar, con ese menú podemos añadir tantos como quera-mos.

El cuadrorunspermite seleccionar las iteraciones con la que se realizará el experimento.

6.1.1. Weka distribuido

Una de las características más interesantes del modo experimentador es que permite distribuir laejecución de un experimento entre varios ordenadores mediante Java RMI. El modelo usado es elcliente-servidor. Como primer paso configuraremos un servidor para después explicar la configura-ción de los clientes.

29

Page 32: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

6.1 Configuración

Configuración del Servidor Los elementos a configurar en el servidor son los mismos que cual- �quier otro experimento pero además de esto debemos activar el botón de activación del cuadroDistri-bute experiment. Una vez activado es necesario elegir el tipo de distribución, por fichero de datos (bydata set), o por iteración (by run). Un buen consejo es que cuando el número de archivos en el querealizar los experimentos es pequeño la distribución se haga por iteraciones, ya que distribuirá cadauna de las tareas fundamentales de un experimento (por ejemplo, en una validación cruzada cada unade las particiones); sin embargo, si usamos un conjunto de archivos grande es recomendable el uso deuna distribución por archivos.

Una vez seleccionado pulsaremos en el botónHostsy obtendremos una ventana como la figura 24.

Figura 24: El modo experimentador, configuración de un experimento distribuido

En esta ventana introduciremos en la etiqueta cada uno de los ordenadores que queramos añadiry con elenter lo añadiremos. También seleccionando una ip y pulsandoDelete Selectednos da laopción a borrar un host determinado. Para aceptar los cambios con cerrar la ventana es suficiente.

Con esto ya queda configurado el ordenador que actuará de servidor para la aplicación distribuida.

Configuración de un ordenador cliente Lo primero es copiar el archivoremoteExperimentSer-ver.jar situado en la carpeta raíz de Weka, en el ordenador que actuará como cliente. Dicho archivose encuentra codificado en Jar* pero debemos desempaquetarlo. Para ello se utiliza el siguiente man-dato** :

jar xvf remoteExperimentServer.jar

Con esto queda desempaquetado el archivoremoteExperimentServer.jar en el direc-torio actual. Con esta operación habremos obtenido 3 ficheros:remoteEngine.jar, remote.policyyDatabaseUtils.props. A continuación se hace una breve descripción de los mismos:

* JavaARchives. Este formato de archivos permite empaquetar multitud de ficheros en uno solo para poder almacenaraplicaciones con muchos archivos y que su intercambio y ejecución sea más sencillo.

** Se entiende que la máquina cliente tiene la máquina virtual Java correctamente instalada.

30

Page 33: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

6 EXPERIMENTER

DatabaseUtils.propsHabitualmente, cuando se realiza un experimento distribuido lo normal y máscómodo es que los datos estén en una base de datos común a todos los ordenadores que partici-pen en la ejecución del experimento. En este archivo se definen las bases de datos jdbc* , en éllo primero que definiremos es el controlador (driver) de jdbc que utilizaremos, que dependeráde la base de datos a utilizar. Las líneas que comiencen con “#” son comentarios.

Lo siguiente será determinar la dirección por la que son accesibles los datos.

remote.policy Archivo que define la política de seguridad. En él se definen las restricciones de ac-ciones a realizar, los puertos y host a utilizar, etc.

remoteEngine.jar Archivo jar en el que se encuentra el cliente para realizar experimentos de formaremota.

Una vez configuradosDatabaseUtils.propsy remote.policyel siguiente paso es ejecutar el cliente,para ello haremos uso del mandato (todo es la misma línea):

java -classpath remoteEngine.jar:/controlador_jdbc \

-Djava.security.policy=remote.policy \

-Djava.rmi.server.codebase=

file:/ruta_al_dir_actual/remoteEngine.jar \

weka.experiment.RemoteEngine

Con esto ya estaría configurado y funcionando un cliente. El siguiente paso sería añadir tantosclientes como deseemos.

6.2. Ejecución

La ventana para comenzar la ejecución del experimento se obtiene pulsando la segunda pestañasuperior, etiquetada comoRun, obtendremos una ventana que será similar a la de la figura 25.

Figura 25: El modo experimentador, ventana de ejecución del experimento.

* jdbces una tecnología que permite la interconexión de bases de datos con aplicaciones Java.

31

Page 34: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

6.3 Análisis de resultados

El funcionamiento es obvio, pulsar el botónStart para comenzar el experimento y el botónStopsi queremos detenerle en plena ejecución. Un detalle importante es que los experimentos no se puedenparar y luego continuar en el punto en que se pararon.

6.3. Análisis de resultados

Pulsando la pestañaAnalyseentraremos la sección dedicada a analizar los datos (figura 26). Éstanos permite ver los resultados de los experimentos, realizar contrastes estadísticos, etc.

Figura 26: El modo experimentador, ventana de análisis de resultados.

Lo primero a definir es el origen de los datos de los resultados, con los botonesFile, DatabaseoExperiment (este último procesa los resultados del experimento que está actualmente cargado* ).

Una vez hecho esto definiremos el test que queramos realizar; para ello, utilizaremos las opcio-nes que nos ofrece el cuadroConfigure test. A continuación se realiza una breve descripción de lasmismas:

Row key fields Selecciona el atributo o atributos que harán de filas en la matriz de resultados.

Run fields Define el atributo que identifica cada una de las iteraciones.

Column key fields Selecciona los atributos que actuarán de columnas en la matriz de resultados.

Comparison fields El atributo que va a ser comparado en el contraste.

* Es importante señalar que para poder cargar los resultados de un experimento procesado es necesario que hayamosdefinido un fichero de resultado de los datos.

32

Page 35: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

6 EXPERIMENTER

Significance Nivel de significación para realizar el contraste estadístico. Por defecto es el 0,05.

Test baseSeleccionamos qué algoritmo de los utilizados (o el resumen, o el ranking) utilizaremosde base para realizar el test.

Show std. deviationsMuestra las desviaciones estándar.

Una vez configurado ya sólo queda utilizar el botónPerform test con el que se realizará el testde la t de Student, mostrando el resultado en el cuadro denominadoTest Output. Con el botónSaveOutput se permite guardar el contenido de la salida del test en un fichero de texto. También, si enla lista de resultados pulsamos el botón secundario del ratón sobre algún elemento, nos mostrará elresultado de ese test en una ventana separada.

Por ejemplo, queremos realizar una comparación entre dos clasificadores, ambos mediante SVM,uno con el kernel lineal y otro gaussiano. Queremos comprobar si hay diferencias significativas entreambos métodos clasificando sobre la base de datos iris.arff que incluye Weka en el directoriodata .Para ello una vez realizado el experimento, en el modo análisis de resultados, realizamos un test al0,05 de confianza, comparando como atributo el porcentaje de acierto (percent correct) de ambosclasificadores.

Realizamos el test y obtendremos un resultado como el siguiente:

1 Analysing: Percent_correct2 Datasets: 13 Resultsets: 24 Confidence: 0.05 (two tailed)5 Date: 4/08/04 12:306

7

8 Dataset (1) functions.SMO ’ | (2) functions.SM9 ----------------------------------------

10 iris (100) 96.27( 4.58) | 88.07(12.62) *11 ----------------------------------------12 (v/ /*) | (0/0/1)13 Skipped:14

15 Key:16

17 (1) functions.SMO ’-C 1.0 -E 1.0 -G 0.01 -A 1000003 -T 0.001018 -P 1.0E-12 -N 0 -V -1 -W 1’ 922011182960164291219 (2) functions.SMO ’-C 1.0 -E 1.0 -G 0.01 -A 1000003 -T 0.001020 -P 1.0E-12 -N 0 -R -V -1 -W 1’ 9220111829601642912

Como se puede observar en la línea 10, SVM con kernel lineal (función 1) obtiene un 96,27 %(DE. 4,58) de acierto frente a los 88,07 % (DE. 12.62) que se obtienen con un kernel gaussiano. A laderecha del todo aparece un asterisco eso significa que el elemento a comparar esPeor que el ele-mento base. Si hubiera aparecido una “v” significaría lo contrario.

Por tanto, concluimos que hay diferencias significativas entre ambos métodos. Además, en lalínea 12, aparece un indicador del tipo(0/0/1) siendo (xx,yy,zz), xx el número de veces que elelemento a comparar es mejor que el base, yy el número de veces que son iguales, y zz el número de

33

Page 36: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

veces que es peor. En este caso sólo aparece un 1, debido a que sólo hemos comparado una medida,el porcentaje de aciertos.

7. Knowledge flow

Esta última interface de Weka es quizá la más cuidada y la que muestra de una forma más explícitael funcionamiento interno del programa. Su funcionamiento es gráfico y se basa en situar en el panelde trabajo (zona gris de la figura 27), elementos base (situados en la parte superior de la ventana) demanera que creemos un “circuito” que defina nuestro experimento.

Figura 27: El modoKnowledge flow.

Para explicar este modo de funcionamiento se recurrirá a un ejemplo. Supongamos que queremosclasificar mediante máquinas de vectores soporte la muestra (iris.arff) situada en el directoriodata/del programa. Para ello, lo primero será añadir a nuestro “circuito” una fuente de los datos. Éstas seencuentran en el apartadoDatasourcesen la parte superior donde se puede observar que hay cargado-res de datos para arff, csv, c45 e instancias serializadas; no obstante, no los hay para bases de datos.Esto es porque Weka es un programa en desarrollo y esta característica aún no está implementada enel modoKnowledge flow.

En este ejemplo utilizaremos el cargadorarffloader. Para utilizarlo pulsaremos sobre él (ver fi-gura 28), el icono del ratón pasará a convertirse en una cruz y podremos situar en la zona de trabajo(zona gris) nuestro cargador. En cualquier momento, con el ratón, podremos arrastrarlo y situarlodónde creamos conveniente.

34

Page 37: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

7 KNOWLEDGE FLOW

Figura 28: Iconodelarffloader

Una vez lo hayamos situado es necesario configurarlo. Para ello,pulsando el botón secundario del ratón aparecerá un menú desplega-ble con varias opciones. Para configurar el archivoarff que carga-rá, pulsamos enedit/configure y aparecerá una ventana en la que se-leccionaremos el archivo pulsandodoble click en la etiqueta del ar-chivo. Hecho esto aparecerá una nueva ventana desplegable. En nues-tro caso accederemos airis.arff . Si queremos borrar la confi-guración realizada repetiremos el procedimiento anterior, pulsando enedit/delete.

El siguiente paso será definir cuál es el atributo que define la clasificacióncorrecta (habitualmente suele ser el último). Para ello haremos uso del objetoClass asignerdentrode Evaluationque realiza esta tarea. Lo situamos en la zona de trabajo y lo configuramos de lamisma forma que el objeto anterior. Una vez ambos objetos estén situados y configurados deberemosunirles de manera que los datos fluyan entre ambos. Abrimos el menú de opciones del cargador(botón secundario sobre el elementoarffloader) y mediante la opciónconnection/dataset, Weka nospermitirá dibujar una flecha que una ambos objetos (figura 29). Si queremos eliminarla pulsaremos elbotón secundario sobre la flecha y con la opciónDeleteserá eliminada.

Figura 29: Knowledge flow. El Origen de los datos ya está definido.

En este punto, ya está definido por completo el origen de los datos. El siguiente hito será conseguirrealizar una validación cruzada que enfrentar al clasificador. Para ello existe el objetoCrossvalida-tionfoldmakerdentro deEvaluation, que será el encargado de realizarnos cada una de las particionesde la validación cruzada. Para configurarlo se utiliza el mismo sistema que antes, pulsar botón secun-dario yconfigure. Para conectar elClassAsignercon elCrossvalidationfoldmaker, seleccionamos laopciónconnections/datasety dibujamos una flecha al igual que antes.

Ya sólo quedan añadir dos objetos más, el clasificador y algún objeto que nos facilite el resulta-do, bien sea en modo texto o gráfico. A modo de ejemplo añadiremos dos clasificadores SVM condistintos parámetros. Los objetos que corresponden a los clasificadores se encuentran en el aparta-do Classifiersy son en este caso losSMO(que es el algoritmo que utiliza Weka para implementarlas SVM). Añadimos dos y los configuramos. Para conectarles pulsaremos enCrossvalidationfol-dermakerbotón secundario y seleccionaremosconnections/testsetuniendo el conjunto de prueba del

35

Page 38: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

generador de pruebas con el clasificador. Es necesario también unir el conjunto de entrenamiento(connections/trainingset). Una vez que conectemos por duplicado el generador de particiones a losclasificadores obtendremos el resultado de la figura 30.

Figura 30: Aún queda definir un elemento que nos muestre el resultado.

El último paso será añadir dos objetos de tipotextviewer, que nos permitirán ver el resultado deforma textual. Para conectarlos a los clasificadoresSMOharemos uso de la opciónconnections/text.Una vez hecho esto ya estaría completada la primera prueba obteniéndose un circuito como el de lafigura 31.

Figura 31: El experimento ya está completo.

Para comenzar con la ejecución del experimento haremos uso de la opciónActions/Start Loadingdentro delarffloader, con esto es suficiente. Para poder observar los resultados, en nuestro caso, conla opciónActions/Show resultsveremos los resultados de cada una de las particiones. De esta formaobtenemos una información mucho más completa que la obtenida del modo explorador.

Esto no hace más que resaltar la necesidad de manejar Weka de una forma completa, porquela comprensión de un sólo modo de funcionamiento es insuficiente para poder obtener el óptimorendimiento del programa.

36

Page 39: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

8 MODIFICANDO WEKA

8. Modificando Weka

Una de las características más interesantes de Weka es la posibilidad de modificar su código yobtener versiones adaptadas con funcionalidades que no contengan las versiones oficiales. El primerpaso para poder modificar Weka es descargarse la últimasnapshot(versión en desarrollo) que seencuentra en el servidor de versiones (CVS). La dirección del mismo es:pserver:[email protected]:/usr/local/global-cvs/ml_cvs .

Para operar con dicho servidor es altamente recomendable utilizar algún programa que nos facili-te esta tarea. Un buen programa es elSmartCVSque es gratuito en su versión normal pero totalmentefuncional. Además, está programado en Java lo que lo hace multiplataforma. El sitio web del mismoeshttp://www.smartcvs.com .

Weka hace uso de la herramientaant* para la compilación de este proyecto. Una vez que esté todoinstalado para compilar Weka haremos uso del mandatoant dentro del directorio donde tengamos laversión en desarrollo y obtendremos un resultado como el siguiente:

1 hell:/pfc/dev/weka-cvs/weka# ant2 Buildfile: build.xml3

4 init_all:5

6 compile_inline:7 [javac] Compiling 635 source files to /pfc/dev/weka-cvs8 [javac] Note: Some input files use or override a deprecated API.9 [javac] Note: Recompile with -deprecation for details.

10 [rmic] RMI Compiling 1 class to /pfc/dev/weka-cvs11

12 BUILD SUCCESSFUL13 Total time: 32 seconds

Una vez compilado Weka, podremos ejecutar cada uno de los métodos que implementa por sepa-rado (ya que todos pueden ser accesibles vía consola porque tienen método main y paso de parámetrospor línea de mandato) o podemos cargar alguno de los interfaces que ofrece. Para poder cargar la in-terfaz de selección de interfaces (ver figura 2) ordenaremos el mandato siguiente en el directorioinmediatamente superior al de Weka:

java weka.gui.GUIChooser

La estructura de directorios de Weka está organizada en paquetes de forma que añadir, eliminar omodificar elementos es una tarea sencilla. La estructura física de directorios es la siguiente:

� associationsCarpeta que contiene las clases que implementan los métodos para realizar aso-ciaciones.

� classificationContiene clases

� tertius Contiene las clases para implementar el método tertius.

* Ant es una herramienta para la automatización de la compilación de proyectos Java. Está considerado elmakeparaJava.http://ant.apache.org/ant

37

Page 40: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

� attributeSelection

� classifiersContiene la implementación de los clasificadores existentes en Weka.

� bayesClases para implementar clasificadoresbayescomo puede sernaivebayes.

� net Clases en desarrollo para aplicar el clasificador bayes en búsquedas web.

� evaluation Clases que evevalúanos resultados de un clasificador, como dibujar las matri-ces de confusión, las curvas de coste, etc.

� functions Contiene métodos de clasificación basados en funciones.

� neural Métodos de clasificación basados en redes neuronales.

� paceMétodos numéricos sobre datos (manipulación de matrices, funciones estadís-ticas)

� supportVector Métodos de clasificación basados en máquinas de vectores soporte.

� lazy Implementa clasificadoresIB1, IBk, Kstar, LBR, LWL.

� kstar Métodos necesarios para implementarKstar.

� metaMetaclasificadores.

� miscClasificadores que se encuentren identificados en otras categorías.

� rules Contiene clases para implementar reglas de decisión.

� car Carpeta que tiene métodos para realizar reglas de asociación sobre clases.

� utils� part Clases para implementar reglas sobre estructuras parciales de árboles.

� treesContiene métodos para implementar árboles.

� adtree Implementa árbolesadtree

� j48 Implementa árbolesc45y otros métodos útiles para tratar con éstos.

� lmt Implementa árboleslmt

� m5 Implementa árbolesm5

� clusterersContiene las clases donde se implementa elclustering.

� core Paquete principal donde se encuentran las clases principales comoInstance, Attribute,Option. . . , y las clases que definen “habilidades” (Drawable, Copyable, Matchable, . . . ).

� convertersClases para convertir entre tipos de archivos y para cargar archivos de formasecuencial.

� datageneratorsClases abstractas para generadores de datos y clases para representar tests.

� estimatorsEstimadores de probabilidades condicionadas y de probabilidades simples de dife-rentes distribuciones (Poisson, Normal . . . ).

� experimentClases que implementan la entidad experimento. Así mismo también están las quemodelan los experimentos remotos.

� filters Contiene filtros para aplicar a los datos para preprocesarlos.

� unsupervisedFiltros no supervisados.

38

Page 41: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

8 MODIFICANDO WEKA

� attribute Filtros para aplicar a atributos.

� instanceFiltros para aplicar a instancias.

� supervisedFiltros supervisados. En la última versión oficial (3-4-2) de Weka esta opciónno está activada, se prevee que en sucesivas versiones lo esté.

� attribute Filtros para aplicar a atributos.

� instanceFiltros para aplicar a instancias.

� gui Contiene las clases que implementan las interfaces gráficas.

� beansClases básicas de Weka de tratamiento de datos y creación de entidades princi-pales del programa referentes a instancias (DataSource, TestsetListener, TetsetProducer,TrainingSet. . . ).

� icons Iconos y demás elementos visuales para aplicar a los beans y al knowledgeflow.

� boundaryvisualizer Métodos para crear instancias a partir de otras.

� experiment Interfaz del modo experimentador.

� explorer Interfaz del modo explorador.

� graphvisualizer Clases para dibujar y mostrar gráficas.

� iconsIconos y demás elementos visuales para aplicar al visor de gráficas.

� streamsClases para realizar operaciones sobre flujos de datos, que habitualmente serásobre un objeto de claseInstance, que es la clase que almacena las instancias.

� treevisualizerClases para elaborar árboles y mostrarlos de una forma gráfica.

� visualizer Contiene clases que implementan los métodos para poder seleccionar atributosen las gráficas y las clases principales para dibujar gráficas (Plot2d, VisualizePanel etc.).

· build.xmlArchivo de reglas de compilación. Define qué archivos es necesario compilar y cómohacerlo.

· TODO.xmlArchivo de definición de tareas pendientes.

· TODO.dtdArchivo de definición de tipos. Define las construcciones permitidas para hacer listasde tareas pendientes.

8.1. Creando un nuevo clasificador

Programar nuevos clasificadores para Weka es sencillo teniendo conocimientos de Java, ya queWeka está orientado al desarrollo abierto y comunitario y eso se nota; no obstante, su estructura, quizáalgo enrevesada, en parte adolece un mal diseño. Para crear un nuevo clasificador han de seguirse lassiguientes pautas:

Lo primero es crear una nueva clase y situarla dentro deweka/classifiers/ . Una vez creadala clase, cualquier clasificador debe heredar de las clases:

import weka.classifiers.*

import weka.core.*

39

Page 42: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

8.1 Creando un nuevo clasificador

import weka.util.*

Y debe extender la claseClassifier . Si el clasificador calcula la distribución de clases debeextender también deDistributionClassifier . Una vez completado esto, todo clasificadortiene que tener los siguientes métodos:

void buildClassifier(Instances instancias) Este método debe implementarla construcción del clasificador obteniendo como parámetro las instancias. Este método debeinicializar todas las variables y nunca debe modificar ningún valor de las instancias.

float classifyInstance(Instance instancia) Clasifica una instancia concre-ta una vez que el clasificador ya está construido. Devuelve la clase en la que se ha clasificado oInstance.missingValue() si no se consigue clasificar.

double[] distributionForInstance(Instance instancia) Este método de-vuelve la distribución de una instancia en forma de vector. Si el clasificador no ha logradoclasificar la instancia dada devolverá un vector lleno de ceros. Si lo consigue y las clases sonnuméricas devolverá el valor obtenido y en los demás casos devolverá un vector con las proba-bilidades de cada elemento en cada clase.

Y, en según qué circunstancias, deberá implementar las siguientes interfaces:

UpdateableClassifier Si el clasificador tiene un carácter incremental.

WeightedInstanceHandler Si el clasificador hace uso de los pesos de cada instancia.

Es muy útil conocer las clasesInstance e Instances que son aquellas que almacenan (siem-pre condoubles ) todas las instancias, incluso las nominales que utilizan como índice la declaracióndel atributo y las indexa según este orden. Los métodos más útiles de la claseInstance (se encuen-tra en el paquete weka.core) son:

Instances classAttribute() Devuelve la clase de la que procede el atributo.

double classValue() Devuelve el valor de la clase del atributo.

double value(int i) Devuelve el valor del atributo que ocupa la posición i.

Enumeration enumerateAttributes() Devuelve una enumeración de los atributosque contiene esa instancia.

double weight() Devuelve el peso de una instancia en concreto.

Y de la claseInstances :

int numInstances() Devuelve el número de instancias que contiene el conjunto de datos.

Instance instance(int) Devuelve la instancia que ocupa la posición i.

Enumeration enumerateInstances() Devuelve una enumeración de las instanciasque posee el conjunto de datos.

Un ejemplo de un clasificador muy sencillo podría ser el siguiente:

40

Page 43: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

8 MODIFICANDO WEKA

EjemploClasificador.java

1 /*2 * Ejemplo de clasificador3 * -----------------------4 * Calcula del conjunto de entrenamiento la media5 * de los valores de todos sus datos, y compara con la media6 * de la instancia a clasificar. Si es mayor clasifica con la7 * clase cuyo índice valor sea 0.0 si no clasifica con la clase8 * cuyo índice valor es 1.0.9 */

10 import weka.classifiers.*11 import weka.core.*12 import weka.util.*13

14 public class EjemploClasificador extends Classifier {15

16 private double media_entrenamiento = 0; //Media del conjunto de entrenamiento17

18 public void buildClassifier(Instances instancias) throw Exception {19

20 // Recorremos todas las instancias21 for (int i=0; i<instancias.numClasses();m_numclase.length; i++) {22 // Recorremos todos sus atributos23 for (int j=0; j < instancias[i].numAttributes(); j++) {24 media_entrenamiento += instancias[i].value[j]25 / instancias[i].numAttributes();26 }27 }28 } // buildClassifier29

30 public double classifyInstance(Instance instance) {31 float media_instancia = 0;32

33 // Recorremos todos sus atributos34 for (int j=0; j < instancias[i].numAttributes(); j++) {35 media_instancia += instancias[i].value[j] / instancias[i].numAttributes();36 }37

38 if (media_instancia > media_entrenamiento) {39 return 0.0;40 } else if {41 return 1.0;42 }43 } // classifyInstance44 } // Fin clase

41

Page 44: MANUAL DE WEKA - ujaen.esmatema.ujaen.es/jnavas/web_recursos/archivos/weka... · ple Cli, Explorer, Experimenter y Knowledge flow que se expli-carán detenidamente y de forma individual

REFERENCIAS

Referencias

[1] Ian H. Witten and Eibe Frank.Data Mining: Practical machine learning tools with Java imple-mentations. Morgan Kaufmann, San Francisco, 2000.

[2] Ian H. Witten, Eibe Frank, Len Trigg, Mark Hall Geoffrey Holmes, and Sally Jo Cunningham.Weka: Practical machine learning tools and techniques with java implementations.Departmentof Computer Science. University of Waikato. New Zealand. http://www.cs.waikato.ac.nz/~ml/publications/1999/99IHW-EF-LT-MH-GH-SJC%-Tools-Java.pdf .

42