Inteligencia en Redes de Comunicaciones

Universidad Carlos III de Madrid Inteligencia en Redes de Comunicaciones PRÁCTICA FINAL PREDICCIÓN METEOROLÓGICA USANDO WEKA Titulación: Ingeniería ...
5 downloads 1 Views 182KB Size
Universidad Carlos III de Madrid

Inteligencia en Redes de Comunicaciones PRÁCTICA FINAL PREDICCIÓN METEOROLÓGICA USANDO WEKA

Titulación: Ingeniería de Telecomunicación, Curso 5º Grupo 91 Pablo Casas Muñoz Roberto García Sánchez

Introducción El objetivo de esta práctica es desarrollar un sistema real de predicción meteorológica para la ciudad de Madrid, utilizando técnicas de aprendizaje automático para obtener los modelos de caracterización y predicción, empleando como herramienta la plataforma Weka.

El punto de partida es la información METAR (Meteorological Actual Report) disponible en Internet. El código METAR, que fue establecido por la World Meteorological Organization (WMO) y adoptado por todas las naciones del mundo, sirve para representar condiciones meteorológicas en aeropuertos o estaciones meteorológicas, habitualmente con medidas horarias. El código METAR es preciso y fácil de leer y proporciona información muy valiosa que utilizan líneas aéreas y organizaciones gubernamentales de todo el mundo. Para esta práctica se proporciona un conjunto de datos meteorológicos sobre el aeropuerto de Madrid Barajas (código internacional, LEMD) desde el año 1996 al 2004, con las siguientes medidas cada media hora. • • • • • • • • • • • •

HoraCET Temperatura (grados Farenheit) Punto de rocío (grados Farenheit) Humedad Presión (pulgadas) Visibilidad Dirección del viento Velocidad del viento (millas por hora) Velocidad de ráfagas de viento (millas por hora) Precipitación Eventos Condiciones

Los datos están distribuidos por ficheros, correspondiendo cada uno de ellos a un día del año, desde el 1/1/1994 al 31/10/2004. El formato de los datos es el siguiente (extracto de un día cualquiera): HoraCET,TemperaturaF,Nivel de RocíoF,Humedad,PresiónIn,Visibilidad MPH,Wind Direction,Velocidad del vientoMPH,RáfagaMPH,Precipitación In,Hechos,Conditions 12:00 AM,37.4,33.8,87,30.39,7.0,NNE,2.3,-,N/A,,Parcialmente Nublado 12:30 AM, 35.6,33.8,93,30.39,7.0,Calm,Calm,-,N/A,,Parcialmente Nublado 1:00 AM,35.6,33. 8,93,30.39,7.0,Calm,Calm,-,N/A,,Nubes Dispersas 1:30 AM,35.6,33.8,93,30.36,7. 0,Norte,1.2,-,N/A,,Nubes Dispersas 2:00 AM,35.6,33.8,93,30.36,7.0,Norte,1.2,,N/A,,Nubes Dispersas 2:30 AM,35.6,33.8,93,30.36,7.0,NNO,1.2,-,N/A,,Nubes Dis persas 3:00 AM,35.6,33.8,93,30.36,7.0,NNO,1.2,-,N/A,,Nubes Dispersas 3:30 AM,33.8,32.0,93,30.33,7.0,Calm,Calm,-,N/A,,Parcialmente Nublado 4:00 AM,30.2, 32.0,100,30.33,7.0,Calm,Calm,-,N/A,,Parcialmente Nublado 4:30 AM,32.0,30.2,93 ,30.33,7.0,Calm,Calm,-,N/A,,Parcialmente Nublado 5:00 AM,32.0,30.2,93,30.30,7 .0,Calm,Calm,-,N/A,,Parcialmente Nublado 5:30 AM,30.2,30.2,100,-9999,5.6,Calm ,Calm,-,N/A,,Despejado ...

En nuestro caso el profesor se ha encargado de proporcionarnos un fichero procesado en el que se contemplan todos los datos en orden, hora a hora, desde el primer día hasta el último. El fichero "lemd.csv" proporcionado contiene estos datos, con el formato de 1 registro por línea (189.936 registros), correspondiente a datos cada media hora, con campos separados por comas, con valores nulos marcados con ?, y comenzando por AÑO, MES, DIA, HORA donde HORA va de 0 (12:00AM) a 47 (11:30 PM). A partir de estos datos proporcionados en orden se tendrá que construir una matriz de minería que entienda Weka para poder realizar las predicciones que se nos están pidiendo.

Introducción sobre WEKA El programa para realizar el estudio de los datos meteorológicos es el programa Weka, cuyo logotipo es el siguiente:

Weka es una herramienta de minería de datos. WEKA, acrónimo de Waikate Environment for Knowledge Análisis, es un entorno para experimentación de análisis de datos que permite aplicar, analizar y evaluar las técnicas más relevantes de análisis de datos, principalmente las provenientes del aprendizaje automático, sobre cualquier conjunto de datos del usuario. Para ello únicamente se requiere que los datos a analizar se almacenen con un cierto formato, conocido como ARFF (Attribute-Relation File Format). WEKA se distribuye como software libre de distribución desarrollado en Java. Está constituido por una serie de paquetes de código abierto con diferentes técnicas de preprocesado, clasificación, agrupamiento, asociación y visualización, así como facilidades para su aplicación y análisis de prestaciones cuando son aplicadas a los datos de entrada seleccionados. Estos paquetes pueden ser integrados en cualquier proyecto de análisis de datos, e incluso pueden extenderse con contribuciones de los usuarios que desarrollen nuevos algoritmos. Con objeto de facilitar su uso por un mayor número de usuarios, WEKA además incluye una interfaz gráfica de usuario para acceder y configurar las diferentes herramientas integradas. Lo primero de todo para trabajar con Weka es la preparación de los datos. Los datos de entrada a la herramienta, sobre todo los que operarán las técnicas implementadas, deben estar codificados en un formato específico, denominado Attribute-Relation File Format (extensión arff). La herramienta permite cargar los datos en tres soportes: fichero de texto, acceso a una base de datos y acceso a través de internet sobre una dirección URL de un servidor web. En

nuestro caso trabajaremos con ficheros de texto. Los datos deben estar dispuestos en el fichero de la siguiente forma: cada instancia en una fila, y con los atributos separados por comas.

¿ Cómo hacer un fichero entendible para WEKA? Previamente a que el profesor dejase los datos colocados, nosotros habíamos implementado un programa para unificar todos los archivos que nos habían dado, pero el problema de hacerlo así es que el fichero único con todos los archivos proporcionados contenía huecos de horas con lo que hacer la concatenación de registros con él, no era lo más adecuado puesto que se iban a descolocar las muestras y el fichero de obtención de una temperatura posterior, de la temperatura a veinticuatro horas y las condiciones a veinticuatro horas obtenidas serían incorrectas porque no seguirían el orden adecuado debido a la problemática de la existencia de huecos. Por lo tanto el punto de partida es el fichero proporcionado por el profesor con todos los datos ordenados y sin huecos para obtener un fichero adecuado para las predicciones que tenemos que realizar. El objetivo final es obtener un fichero para cada predicción con el formato adecuado (.arff) para poder trabajar con dichos datos en la herramienta de WEKA. Preprocesado Lo primero que hicimos para tratar el fichero proporcionado por el profesor fue crear un código Java que fuese capaz de concatenar varias líneas consecutivas para tener en cada registro, datos de registros anteriores y así tener mas datos a la hora de realizar las predicciones. Para ello primero se consiguió un fichero en el que se tenían tres filas simples del fichero proporcionado por el profesor en una sola fila, y a partir de este fichero se extrajeron los ficheros necesarios para las predicciones pero tratado de forma distinta. Para el caso de la predicción de la temperatura de una hora de después lo que se hizo fue utilizar este registro y añadir los registros de 1 hora posterior obteniendo en cada tupla el valor de la temperatura actual, el valor de la temperatura hace media hora, el valor de la temperatura hace una hora y el valor de la temperatura hace una hora y media con todos los respectivos datos pertenecientes a cada uno de esos instantes, como son la presión, humedad, etc. Posteriormente con el filtro ”Remove” que proporciona Weka se quitarían aquellas variables que no fuesen consideradas importantes para obtener la predicción . Para el caso de la predicción de la temperatura a veinticuatro horas y las condiciones a veinticuatro horas se añadieron los registros necesarios de tal forma que por cada tupla se tenían los datos actuales, los datos hace media hora, los datos hace una hora y la temperatura a veinticuatro horas en el caso del fichero de la predicción de la temperatura a veinticuatro horas o las condiciones a veinticuatro horas en el caso del fichero de la predicción de las condiciones a veinticuatro horas. Al igual que en el caso de la predicción de la temperatura a una hora posterior, se eliminarían aquellos registros o variables que no fuesen consideradas importantes para la predicción a realizar. El proceso de eliminación de variables se puede hacer bien usando el filtro Remove que soporta Weka ó bien utilizando las instrucción cut en la shell de linux que permite eliminar columnas, cuando estas columnas tienen un separador entre ellas. Para la realización de todos estos ficheros se ha utilizado la programación orientada a objetos, programación Java. Posteriormente a la obtención de estos ficheros se le añade a cada fichero los atributos y datos que deben de tener para poder visualizarlos con el programa Weka, es decir, tenemos que hacer la creación de un fichero arff entendible por Weka. El formato de un fichero arff sigue la estructura siguiente:

% comentarios @relation NOMBRE_RELACION @attribute r1 real @attribute r2 real … @attribute i1 integer @attribute i2 integer … @attribute s1 {v1_s1, v2_s1, …, vn_s1} @attribute s2 {v1_s1, v2_s1, …, vn_s1} … @data DATOS Por tanto, los atributos pueden ser principalmente de dos tipos: numéricos de tipo real o entero (indicado con la palabra real o integer tras el nombre del atributo), y simbólicos, en cuyo caso se especifican los valores posibles que puede tomar entre llaves Los atributos enteros pueden ser englobados por el tipo numeric. Muestra de datos El fichero de datos objeto de estudio contiene muestras correspondientes a datos meteorológicos de los últimos años. Los datos que describen cada dato meteorológico contienen información del año, mes, día, horaCET, temperatura, nivel de rocio, humedad, presión, visibilidad, dirección del viento, velocidad de ráfaga, precipitación, hechos y condiciones. El fichero arff final (para la predicción de la temperatura a una hora posterior a la actual) para nuestros datos es el siguiente: @relation meteorologia @attribute Mes numeric @attribute Temperatura1h30minantes numeric @attribute Temperatura1hantes numeric @attribute Temperatura30minantes numeric @attribute Temperaturaactual numeric @attribute Punto_rocioactual numeric @attribute Humedadactual numeric @attribute Presionactual numeric @attribute Veloc_vientoactual numeric @attribute Condicionesactual {Nubes_de_Polvo,Arena,Granizo_pequeño,Desconocido,Leve_Caída_de_Granizo_Pequeño, Granizo_Leve,Nubes_Bajas_de_Polvo,Caidas_de_Granizo,Despejado,Bruma_Helada_Leve, Tormentas_con_Granizo,Remolino_de_Polvo,Fuertes_Lluvias,Tormenta,Tormenta_Leve,Par cialmente_Nublado,Nubes_Dispersas,Altamente_Nublado,Tormentas_y_Lluvia,Tormentas_L eves_y_Lluvia,Fuertes_Tormentas_y_Lluvia,Lluvias,Nublado,Llovizna_Leve,Llovizna,Llovi zna_Abundante,Neblina,Humo,Bruma,Bancos_de_Bruma,Bruma_Leve,Bruma_Ligera,Lluvia ,Lluvia_Leve,Abundantes_Lluvias,Nieve,Nevada_Leve,Particulas_de_Nieve,Caidas_de_Niev

e,Abundante_Nieve,Niebla,Niebla_Leve,Abundante_Niebla,Lluvia_Helada_Leve,Llovizna_ Helada_Leve,Nube_en_Embudo} @attribute Temperatura1horamas numeric @data 9,62.6,62.6,66.2,66.2,44.6,46,29.98,8.1,Altamente_Nublado,68 9,51.8,51.8,50,50,44.6,82,29.98,1.2,Nubes_Dispersas,48.2 9,69.8,69.8,68,68,44.6,43,29.77,9.2,Altamente_Nublado,66.2 9,71.6,71.6,71.6,71.6,46.4,41,30.21,4.6,Despejado,73.4 9,84.2,84.2,84.2,84.2,55.4,37,30.18,3.5,Parcialmente_Nublado,86 9,64.4,64.4,64.4,64.4,55.4,73,30.24,1.2,Despejado,62.6 9,69.8,69.8,77,77,57.2,50,30.33,1.2,Despejado,80.6 9,66.2,66.2,62.6,62.6,53.6,72,30.21,1.2,Despejado,60.8 10,68,68,68,68,44.6,43,30.06,9.2,Nubes_Dispersas,68 10,53.6,53.6,53.6,53.6,41,62,30.18,4.6,Parcialmente_Nublado,51.8 10,55.4,55.4,59,59,44.6,59,30.21,4.6,Parcialmente_Nublado,64.4 10,64.4,64.4,62.6,62.6,44.6,52,30.24,8.1,Parcialmente_Nublado,62.6 10,59,59,55.4,55.4,41,58,30.3,1.2,Despejado,55.4 10,69.8,69.8,62.6,62.6,37.4,39,30.27,2.3,Despejado,62.6 10,50,50,50,50,39.2,66,30.09,8.1,Nubes_Dispersas,53.6 10,44.6,44.6,44.6,44.6,37.4,76,30.09,4.6,Despejado,41 10,46.4,46.4,44.6,44.6,39.2,81,30.12,4.6,Parcialmente_Nublado,44.6 10,44.6,44.6,44.6,44.6,39.2,81,30.15,3.5,Parcialmente_Nublado,41 10,50,50,48.2,48.2,42.8,82,30.12,6.9,Despejado,46.4 10,50,50,48.2,48.2,42.8,82,30.12,1.2,Despejado,46.4 10,46.4,46.4,46.4,?,?,?,?,?,?,44.6 10,73.4,73.4,75.2,75.2,50,41,30.04,4.6,Despejado,73.4 10,53.6,53.6,60.8,60.8,46.4,59,30.04,2.3,Despejado,68 10,68,68,68,68,51.8,56,30.01,4.6,Despejado,71.6 10,71.6,71.6,73.4,73.4,53.6,50,29.92,4.6,Parcialmente_Nublado,73.4 10,73.4,73.4,71.6,71.6,48.2,43,29.89,6.9,Altamente_Nublado,71.6 10,59,59,60.8,60.8,51.8,72,29.77,11.5,Altamente_Nublado,60.8 10,53.6,53.6,53.6,53.6,53.6,100,29.62,9.2,Lluvia,53.6 10,53.6,53.6,53.6,53.6,53.6,100,29.59,10.4,Lluvia,53.6 10,57.2,57.2,59,59,41,51,30.06,3.5,Nubes_Dispersas,62.6 10,66.2,66.2,66.2,66.2,46.4,49,29.98,13.8,Nubes_Dispersas,64.4 10,51.8,51.8,50,50,50,100,30.01,1.2,Despejado,50 10,50,50,50,50,50,100,?,1.2,Niebla,50 10,57.2,57.2,59,59,57.2,94,?,1.2,Nublado,59 10,55.4,55.4,55.4,55.4,53.6,94,30.36,4.6,Despejado,53.6 10,50,50,50,?,?,?,?,?,?,60.8 10,77,77,77,77,51.8,41,30.33,2.3,Nubes_Dispersas,78.8 10,73.4,73.4,66.2,66.2,48.2,52,30.33,1.2,Altamente_Nublado,62.6 10,59,59,57.2,57.2,51.8,82,30.36,1.2,Despejado,57.2 10,57.2,57.2,64.4,64.4,51.8,64,30.24,1.2,Despejado,69.8 10,69.8,69.8,64.4,64.4,44.6,49,30.15,1.2,Despejado,59 10,51.8,51.8,51.8,51.8,46.4,82,30.15,3.5,Despejado,48.2 10,53.6,53.6,55.4,55.4,51.8,88,30.27,1.2,Altamente_Nublado,60.8 10,68,68,69.8,?,?,?,?,?,?,73.4

10,44.6,44.6,42.8,42.8,33.8,70,30.39,5.8,Despejado,41 10,51.8,51.8,59,59,37.4,45,30.45,1.2,Despejado,62.6 10,48.2,48.2,48.2,48.2,33.8,58,30.45,6.9,Despejado,44.6 11,69.8,69.8,62.6,62.6,39.2,42,30.39,1.2,Despejado,57.2 11,69.8,69.8,66.2,60.8,37.4,42,30.33,?,Despejado,57.2 11,69.8,69.8,68,68,42.8,40,30.15,11.5,Nubes_Dispersas,? 11,57.2,57.2,55.4,53.6,50,88,30.09,10.4,Lluvia_Leve,53.6 11,53.6,53.6,53.6,53.6,51.8,94,30.06,10.4,Altamente_Nublado,53.6 11,37.4,37.4,44.6,44.6,39.2,81,30.39,2.3,Despejado,51.8 11,59,59,62.6,?,?,?,?,?,?,64.4 11,39.2,39.2,37.4,37.4,37.4,100,30.36,1.2,Despejado,37.4 11,37.4,37.4,46.4,46.4,42.8,87,30.42,1.2,Despejado,51.8 11,48.2,48.2,46.4,46.4,42.8,87,30.27,4.6,Nubes_Dispersas,44.6 11,50,50,50,50,46.4,87,29.5,1.2,Altamente_Nublado,48.2 11,51.8,51.8,51.8,?,?,?,?,?,?,50 ... Algunas modificaciones que se han tenido que hacer para realizar el fichero arff de forma correcta son las siguientes: • • •

Para las condiciones se han tenido que sustituir los espacios en blanco por guiones bajos,_, porque sino Weka el fichero lo entendía como otro token(cada palabra separada por espacios en blanco) y el fichero no se cargaba en Weka correctamente. Los valores desconocidos para Weka como son –9999.0,-9999,N/A,-, y los datos vacíos han sido sustituidos por el valor desconocido que entiende la herramienta que es ?. Para el buen procesamiento de Weka se ha tenido que sustituir el valor de velocidad del viento que en muchos datos venía como Calm al valor mas pequeño encontrado que es 1.2 ya que tal y como lo hemos definido se tenia que tratar de un valor real y Calm era un valor no definido.

Una vez que tenemos el fichero .arff disponible para ser ejecutado con WEKA y antes de empezar con dicha herramienta más vale aclarar el objetivo de la práctica. El objetivo de la práctica es desarrollar un sistema de caracterización meteorológica, utilizando la plataforma WEKA como herramienta de aplicación de algoritmos de aprendizaje. En concreto hay que desarrollar tres modelos de predicción: • • •

Predicción de temperatura a 1 hora Predicción de temperatura a 24 horas Predicción de condiciones meteorológicas (Despejado, Parcialmente Nublado, etc ) a 24 horas.

Visualización de todos los datos Una vez cargado el fichero en Weka podemos ver los datos con los que vamos a trabajar para realizar la predicción En nuestro caso estas variables son las variables ya filtradas que hemos considerado más importantes para la predicción de la temperatura a una hora posterior.

Para ver todas las variables con las que vamos a trabajar no hay más que darle al botón de Visualize en la pantalla principal de inicio de Weka, a continuación se muestra su presentación:

Cada uno de los ficheros tiene aproximadamente unas 4000 líneas escogidas de forma aleatoria y repartida por todo el fichero. Esto se ha hecho así ya que si se utilizaba el fichero entero con las aproximadamente 100000 instancias no había suficiente memoria para poder utilizar la herramienta Weka de forma correcta. Para escoger las líneas de forma aleatoria se ha utilizado un programa en Java que escoja las líneas de forma aleatoria y las vaya guardando en un fichero de salida. Las variables que se han descartado han sido todas las referentes a estados de una hora y media antes, una hora antes y media hora antes excepto el valor de la temperatura que puede ser útil para predecir el valor de la temperatura a una hora después y se han dejando todos los valores de la hora actual excepto los correspondientes a año, día ,hora, visibilidad, dirección del viento, velocidad de ráfagas de viento, precipitación y eventos por considerar que no ofrecían importancia para la predicción a una temperatura posterior. La de los estados anteriores se han quitado por pensar que serían muy similares a las del estado actual y que no ofrecerían relevancia para la predicción de la variable a determinar.

ALGORITMOS EMPLEADOS Clasificador como árbol de decisión: J48 El algoritmo J48 de WEKA es una implementación del algoritmo C4.5, uno de los algoritmos de minería de datos que más se ha utilizado en multitud de aplicaciones. No vamos a entrar en los detalles de todos los parámetros de configuración, y únicamente resaltaremos uno de los más importantes, el factor de confianza para la poda, confidence level, puesto que influye notoriamente en el tamaño y capacidad de predicción del árbol construido. Tabla de Decisión (Decisión Table) La tabla de decisión es un instrumento para decidir la mejor alternativa en un proceso de decisión. Para ello se utiliza el concepto de regla de decisión, que es una aplicación que asocia a cada alternativa un número, que expresa las preferencias del decisor por los resultados asociados a dicha alternativa. Una tabla de decisión se compone de una matriz en la que se almacenan una serie de condiciones y sus correspondientes acciones. El problema de este algoritmo es decidir qué atributos introducir en la tabla. Algoritmo LeastMedSq Implementa una regresión lineal LeastMedSq utilizando la clasificación por regresión lineal disponible en el WEKA para formar predicciones. Las funciones LeastMedSq se generan a partir de un muestreo de datos aleatorio. La regresión ajustada con el error cuadrático medio más bajo se elige como el modelo final. SMOReg Implementa el algoritmo de optimización de secuencia mínima desarrollado por John C. Platts para entrenar una SVM (máquina de vectores soporte) con kernel polinomiales o funciones de base radial (RBF). Esta implementación substituye todos los valores que faltan y transforma atributos nominales en otros binarios. También normaliza todos los atributos por defecto. (los coeficientes a la salida están basados en los datos normalizados, no en los originales.) SMO Es similar al anterior pero soluciona problemas multiclase usando clasificación por parejas. En los casos multi-clase las probabilidades predichas se juntaran usando los métodos de emparejamiento Hastie y Tibshirani. REPTree Es un método de aprendizaje rápido mediante árboles de decisión. Construye un árbol de decisión usando la información de varianza y lo poda usando como criterio la reducción del error. Solamente clasifica valores para atributos numéricos una vez. Los valores que faltan se obtienen partiendo las correspondientes instancias.

OneR Este es uno de los clasificadores más sencillos y rápidos, aunque en ocasiones sus resultados son sorprendentemente buenos en comparación con algoritmos mucho más complejos. Simplemente selecciona el atributo que mejor “explica” la clase de salida. Si hay atributos numéricos, busca los umbrales para hacer reglas con mejor tasa de aciertos. Predicción de la temperatura a una hora Para la predicción de la temperatura a una hora posterior lo que hacemos es utilizar las instancias que disponemos en la actualidad, la temperatura hace media hora, la temperatura hace una hora, la temperatura hace una hora y media para realizar la predicción en Weka. Para calcular dicha predicción utilizamos varios métodos de los que se han explicado anteriormente y alguno más. Para ver que variables son las más importantes, se puede utilizar el método de regresión lineal que es el que mejor muestra a través de los pesos que variables son las más importantes a la hora de realizar la predicción. El método de regresión lineal te pone la variable que quieres determinar en función del resto de variables que has considerado importante para su predicción y a cada variable le asocia un peso según su importancia.

Por el método de regresión lineal se ve que las variables más importantes son la de las condiciones actuales y la referente a la temperatura actual y temperatura hace treinta minutos principalmente. Otra forma de saber que variables son las más importantes es por medio de la relación existente en los dibujos que relacionan las variables entre sí. Para la predicción de temperatura a una hora obtenemos los siguientes resultados para los siguientes algoritmos ejecutados: Decision Table

REPTree

Kstar

LeastMedSq

SMOReg

IB1

Regresión Lineal

Decisión Stump

Para la predicción de temperatura a una hora obtenemos la siguiente tabla-resumen de resultados:

Root Mean Squared Algoritmo Error Decision Table 4.1705 3.9841 RepTree 3.473 Kstar 3.7665 LeastMedSq 4.3007 SMOreg 5.8299 IB1 5.8299 IBK(K=1) Regresion Lineal 5.7214 Decision Stump 9.3118

Relative Absolute Error(%) 22.8365 21.548 19.9362 18.9094 18.1676 31.0165 31.0165 20.5757 57.9357

Mean Absolute Error 3.0151 2.845 2.6322 2.4966 2.3987 4.0951 4.0951 2.7166 7.6493

Desde el punto de vista de Root Mean Squared Error el mejor método es el del algoritmo Kstar, mientras que para el Relative Absolute Error el mejor algoritmo es el SMOreg. Desde el punto de vista del mean absolute error (que es la clasificación que nos interesa) el mejor algoritmo es el de SMOreg también. Predicción para la temperatura a veinticuatro horas Para la predicción de la temperatura veinticuatro horas despues lo que hacemos es utilizar las instancias que disponemos en la actualidad, la temperatura hace media hora, la temperatura hace una hora, la temperatura hace una hora y media para realizar la predicción en Weka. Para calcular dicha predicción utilizamos varios métodos de los que se han explicado con anterioridad. Para ver que variables son las más importantes, se puede utilizar el método de regresión lineal que es el que mejor muestra a través de los pesos que variables son las más importantes a la hora de realizar la predicción.

Las variables más importantes según el método de regresión lineal son la dirección del viento, las condiciones, la visibilidad y la temperatura una hora antes, ya que estas variables son las que mayor peso tienen en la función lineal de salida para la predicción de la temperatura veinticuatro horas posterior. Para la predicción de la temperatura a veinticuatro horas usamos los siguientes métodos con los correspondientes resultados: Para el Decisión Table

Para el REPTree

Para el Kstar

Para el LeastMedSq

M5P

Para el IB1

Para el IB5

Para el algoritmo de Regresión Lineal

Para el algoritmo Decision Stump

Para la predicción de temperatura a veinticuatro horas obtenemos la siguiente tabla-resumen de resultados: Root Mean Squared Algoritmo Error Decision Table 18.8325 18.0967 RepTree 17.7841 Kstar 18.3754 LeastMedSq 17.5404 M5P 21.6829 IB1 19.6625 IB5 Regresion Lineal 18.0609 Decision Stump 20.1665

Relative Absolute Error(%) 46.5582 40.5375 40.1686 37.6777 36.4379 82.1117 63.9462 39.7511 65.0802

Mean Absolute Error 6.1871 5.387 5.338 5.007 4.8409 10.9118 8.4978 5.2825 8.6485

En este caso el mejor método encontrado es el M5P que es el que mejor Root Mean Squared error tiene, el que menor Relative error y el que menor mean absolute error tiene. Predicción para las condiciones a veinticuatro horas Para la predicción de las condiciones a veinticuatro horas después lo que hacemos es utilizar las instancias que disponemos en la actualidad, la temperatura hace media hora, la temperatura hace una hora, la temperatura hace una hora y media para realizar la predicción en Weka. Para calcular dicha predicción utilizamos varios métodos ya descritos anteriormente. Para ver las variables más importantes se puede obtener por medio de los dibujos que relacionan las variables entre sí. Para las condiciones meteorológicas a veinticuatro horas, los resultados de los métodos son los que a continuación se muestran: Algoritmo SMO

Algoritmo LWL

Para el algoritmo Decision Table

Para el algoritmo REPTree

Para el algoritmo Kstar

Para el algoritmo IB1

Para el algoritmo IB5

Para el algoritmo Decisión Stump

Para el algoritmoOneR

Para la predicción de las condiciones meteorológicas a veinticuatro horas obtenemos la siguiente tabla-resumen de los resultados de los algoritmos utilizados:

Root Mean Squared Algoritmo Error Decision Table 0.1244 0.1308 RepTree 0.1437 Kstar 0.1419 SMO 0.1235 LWL 0.17 IB1 0.1326 IB5 0.1578 OneR Decision Stump 0.1237

Relative Absolute Mean Absolute Error(%) Error 910.177 0.0299 913.677 0.03 874.079 0.0287 123.9237 0.0407 917.871 0.0302 879.445 0.0289 894.628 0.0294 75.785 0.0249 929.109 0.0305

Tasa de aciertos 44.0171 41.2393 37.2863 44.9786 42.6282 33.547 39.1026 41.1325 42.735

En este caso el método que mejor root mean squared error da es LWL, es que mejor relative absolute error es el OneR y el que mejor mean absolute error tiene que es el que más nos interesa es el del OneR también. En este caso también se añade una tasa de aciertos, el método que mejor tasa de aciertos tiene es el SMO con una tasa de aciertos no muy buena. La tasa de aciertos es del 44.97%, por lo que el resultado no es muy bueno. En muchos de los resultados salían matrices de confusión, aquí se pretende explicar qué es lo que representan dichas matrices: •

Matriz de confusión: aquí aparece la información detallada de cuantas instancias de cada clase son predichas a cada uno de los valores posibles. Por tanto, es una matriz con N2 posiciones, con N el número de valores que puede tomar la clase. En cada fila i, i=1...N, aparecen las instancias que realmente son de la clase i, mientras que las columnas j, j=1...N, son las que se han predicho al valor j de la clase. En el ejemplo anterior, la matriz de confusión que aparece es la siguiente: === Confusion Matrix === a b =0.91)){ salida.write(lineaLeida); salida.newLine(); salida.flush(); } lineaLeida=leeLineas.readLine();

} salida.flush(); salida.close(); leeLineas.close(); } public static void main(String args[])throws IOException{ Muestreo muestreo= new Muestreo(); muestreo.leeFichero(); } }

Programa para añadir otros registros necesarios de temperatura para tener una buena predicción en Weka. import java.io.*; public class AniadirDatos{ public void leeFichero()throws IOException{ BufferedReader leeLineas = new BufferedReader(new FileReader("meteo.arff")); BufferedWriter salida = new BufferedWriter(new FileWriter("temp1mas.arff")); int numLineas; String temperatura; String lineaLeida; String acumulada; lineaLeida=leeLineas.readLine(); acumulada=lineaLeida; while(lineaLeida!=null){ for(numLineas=1;numLineas