Story Transcript
PRÁCTICA FINAL DE INTELIGENCIA EN REDES DE ORDENADORES
PREDICCIÓN METEOROLÓGICA 5º INGENIERIA DE TELECOMUNICACIÓN
Julio Alberto Polo Fernández 100029757 Raúl Muñoz Martínez 100029571
PREDICCIÓN METEOROLÓGICA
Inteligencia en redes de ordenadores
INDICE 1.
Introducción
2.
Preprocesado de los datos a. Análisis b. Selección
3.
Aprendizaje a. Aprendizaje para el modelo de predecir la temperatura b. Aprendizaje condiciones
4.
para
el
modelo
Anexos a. Script inicial b. Código java para el preprocesado
Página 2 de 37
de
predecir
las
PREDICCIÓN METEOROLÓGICA
1.
Inteligencia en redes de ordenadores
Introducción
En esta práctica vamos a desarrollar un sistema de predicción meteorológica usando la herramienta de minería de datos WEKA. El programa WEKA permite realizar minería de datos con una interfaz gráfica lo que facilita su utilización. Además, permite una comparación con los distintos métodos que se utilizan para el pre-procesamiento, clasificación de información, clustering y meta-aprendizaje. Las técnicas de minería de datos están en auge, usándose cada vez más para mejorar el rendimiento de negocios o procesos industriales en los que se manejan grandes volúmenes de información estructurada y almacenada en bases de datos. Mediante estas técnicas de pueden explorar grandes volúmenes de datos con el fin de predecir ciertos modelos de comportamiento y así ayudar en la toma de decisiones. Un proyecto de minería de datos consta de los siguientes pasos: -
Filtrado de datos: Los datos tienen que estar en un formato que entienda nuestra herramienta WEKA. Además es necesario eliminar valores no validos o que sobrepasan un umbral y que en el modelo aportarían ruido.
-
Selección de variables: Una vez filtrados los datos, se siguen teniendo una cantidad de datos innecesaria que ralentiza nuestro análisis. Por ello, es necesario elegir las variables que mas influyen en nuestra predicción sin perjudicar el resultado. Las técnicas mas usadas son las que buscan las variables independientes mediante algoritmos de distancia o heurísticos.
-
Uso de algoritmos para obtener un modelo de conocimiento: A continuación se aplican diversos algoritmos de conocimiento que mediante patrones de comportamiento que observan en las variables realizan asociaciones de las mismas para finalmente llegar a un modelo.
-
Interpretación y evaluación: Finalmente es necesario comprobar que los resultados de nuestro modelo son validos. Por ello es importante realizar comparaciones entre los distintos algoritmos para intentar escoger el mejor, es decir, el que menor error cometa en la predicción.
Página 3 de 37
PREDICCIÓN METEOROLÓGICA
Inteligencia en redes de ordenadores
En esta practica, como hemos dicho, vamos a intentar desarrollar un sistema de predicción meteorológica, para ellos vamos a tomar como fuente de datos la información METAR (Meteorological Actual Report). El código METAR 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. Para nuestra práctica adquiriremos estos datos del aeropuerto de Madrid Barajas (con código LEMD) desde el año 1996 al 2004. La información descrita en dicho código es la siguiente: ¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾
Hora (CET) Temperatura (grados Fahrenheit) Punto de rocío (grados Fahrenheit) 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
En cada fichero con código METAR se tiene la información de un día. Los tres objetivos de predicción en esta práctica son: ¾ Predicción de temperatura a 1 hora ¾ Predicción de temperatura a 24 horas ¾ Predicción de condiciones meteorológicas a 24 horas
Página 4 de 37
PREDICCIÓN METEOROLÓGICA
2.
Inteligencia en redes de ordenadores
Preprocesado de los datos
A la hora de comenzar con el trabajo, los datos facilitados estaban distribuidos en numerosos ficheros de texto, los cuales contenían todos los datos pertenecientes a cada uno de los días bajo estudio. Se hacia necesario una manera automática de procesar los datos, ya manera del orden de 3000 ficheros para colocar los datos adecuadamente, es algo impensable en estos días. En primer lugar, pensamos en sencillos scripts bajo linux, con lenguajes como perl, bash o similares, los cuales permiten de una manera sencilla, extraer los datos de los ficheros para colocarlos en un solo fichero, y en cada línea, las medidas de cada instante de tiempo. Debido a la escasa soltura en el manejo de estos lenguajes y la falta de tiempo, se ha utilizado el fichero generado mediante perl por nuestro profesor, en cual, tenemos todos los datos línea a línea. Con estos datos, pasamos a realizar un análisis.
a. Primer análisis En primer lugar, a simple vista, podemos observar como el fichero contiene una parte muy significante de días y horas en las que no se ha realizado ninguna medida, es decir, todos los parámetros son desconocidos, por lo que pasamos a eliminar todos estos datos. Aún así, podemos observar que, repartidos a lo largo de todo el fichero, encontramos pequeños conjuntos de medidas, que al igual que las anteriores, son desconocidas, pero se hace muy complicado eliminarlos manualmente. Por otro lado, también comprobamos que existen muchas magnitudes erróneas, o simplemente desconocidas (“N/A”, “-9999”, etc.) que tenemos que reemplazar por signo de interrogación (“?”), carácter utilizado por WEKA para los datos desconocidos. A raíz de esto, surgió la necesidad de implementar un nuevo programa o script para realizar estas tareas de manera automática. El lenguaje elegido fue JAVA, debido a su simplicidad en el trabajo con cadenas de caracteres y al buen manejo del mismo. Aprovechando el manejo de los datos mediante el programa, se han hecho unos cambios de variables para expresar los datos en unas unidades más familiares. Por tanto, a partir de ahora la temperatura y el nivel de rocío serán medidos en grados centígrados y la velocidad del viento en kilómetros por hora. Cuando ya se han eliminado los datos innecesarios y corregido los datos desconocidos, pasamos a realizar un análisis de los datos mediante la herramienta WEKA. Esto nos permitirá, de una manera más exacta, saber cuales son las variables determinantes a la hora de estimar la temperatura y las condiciones climatológicas.
Página 5 de 37
PREDICCIÓN METEOROLÓGICA
Inteligencia en redes de ordenadores
A priori, podemos asegurar que la temperatura en las horas anteriores y la temperatura del día anterior a la misma hora, serán unas variables muy relacionadas para estimar la temperatura, así como las condiciones climatológicas del día anterior a la misma hora para predecir las mismas. Esto ya nos indica la necesidad de crear otro programa para poder ordenar estás ultimas medidas de una manera correcta para el análisis con WEKA.
b. Segundo análisis Después de crear el nuevo programa para introducir la temperatura de una hora antes, la temperatura de dos horas antes, la temperatura del día anterior a la misma hora así como las condiciones climatológicas del día anterior, tenemos que crear la estructura de la cabecera de los ficheros ARFF (Attribute Relation File Format), que tiene un aspecto similar a: @relation nombre_de_la_relación @attribute r1 real … @attribute i1 integer … @attribute v1 {v11,v12,v13,…,v1n} … @data datos En nuestro caso, el la cabecera tiene el siguiente aspecto: @relation 'meteorologia' @attribute 'año' {1996,1997,1998,1999,2000,2001,2002,2003,2004} @attribute 'dia' integer @attribute 'hora' {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,2 6,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47} @attribute 'temperatura' integer @attribute 'rocio' integer @attribute 'humedad' integer @attribute 'presion' real @attribute 'visibilidad' real @attribute 'direccion' {Calm,Este,Norte,Sur,Oeste,ONO,NNO,NE,NO,ENE,NNE,ESE,SE,SSO,OSO,SSE,SO ,Variable} @attribute 'velocidad' integer @attribute 'hechos' {Lluvia,Bruma,Bruma_Lluvia,Tormenta,Lluvia_Nieve,Nieve,Tornado} @attribute 'condiciones' {Despejado,Tormenta,Parcialmente_Nublado,Nubes_Dispersas,Altamente_Nub lado,Lluvias,Nublado,Niebla,Bruma,Bancos_de_Bruma,Bruma_Leve,Bruma_Lig era,Lluvia,Lluvia_Leve,Nieve} @attribute 'temperatura1' integer @attribute 'temperatura2' integer @attribute 'temperatura24' integer @attribute 'condiciones24' {Despejado,Tormenta,Parcialmente_Nublado,Nubes_Dispersas,Altamente_Nub lado,Lluvias,Nublado,Niebla,Bruma,Bancos_de_Bruma,Bruma_Leve,Bruma_Lig era,Lluvia,Lluvia_Leve,Nieve} @data
Página 6 de 37
PREDICCIÓN METEOROLÓGICA
Inteligencia en redes de ordenadores
Podemos comprobar como se han añadido las variables nuevas mencionadas anteriormente. Hemos de destacar que, para el conjunto de datos con el que hemos trabajado, algunas de las clases de “condiciones” y “hechos”, no aparecían en ninguna de las instancias, por tanto, hemos eliminado la aparición de las mismas. Estas han sido: •
Para hechos: Nieve_Granizo
•
Para condiciones: Granizo_Pequeño, Leve_Caída_de_Granizo_Pequeño, Granizo_Leve, Nubes_Bajas_de_Polvo, Caídas_de_Granizo, Bruma_Helada_Leve, Tormenta_con_Granizo, Remolino_de_Polvo, Tormenta_Leve, Nube_en_embudo, Arena y Nubes_de_Polvo.
Lluvia_Granizo_Tormenta,
Granizo,
Granizo_Tormenta
y
A pesar de ello, y para simplificar aún más el modelado, se han agrupado otros conjuntos de clases: • • • • • • •
Lluvia_Tormenta como Lluvia Llovizna_Helada_Leve, Llovizna_Leve, Llovizna_Abundante, Llovizna, Lluvia_Helada_Leve como Lluvia_Leve Fuertes_Lloviznas y Abundantes_Lluvias como Lluvias Tormentas_y_Lluvia, Tormentas_Leves_y_Lluvia, Fuertes_Tormentas_y_Lluvia como Tormenta Niebla_Leve, Abundante_Niebla y Neblina como Niebla Bancons_de_Bruma, Bruma_Leve y Bruma_Ligera como Bruma Nevada_Leve, Caidas_de_Nieve y Abundante_Nieve como Nieve
Una vez elaborado correctamente el fichero ARFF, introducimos los valores en el programa WEKA, mediante el cual podremos hacer la selección, paso muy importante para poder procesar los datos de una manera más eficiente.
c. Selección Lo primero que podemos observar al introducir los datos en el programa, es que tenemos datos que se escapan de una manera exagera de los rango de variación normales para la magnitudes medidas. Por lo que se modificó ligeramente el programa para restringir los datos dentro de unos rangos normales. Así, se han descartado medidas como: Nivel de rocío por debajo de -11º o por encima de 17º Presión a nivel del mar por debajo de 29 pulgadas de mercurio o por encima de 31 Visibilidad por debajo de 3 o por encima de 8 Velocidad por debajo de 0 o por encima de 40 Temperatura por debajo de -10 o por encima de 45 Con los datos correctos, pasamos a realizar un análisis buscando que variables son las más correlacionadas para la estimación de cada unos de los parámetros buscados, es decir, la temperatura y las condiciones climatológicas. Página 7 de 37
PREDICCIÓN METEOROLÓGICA
Inteligencia en redes de ordenadores
Realizando un análisis de CfsSubsetEval, bien sea utilizando búsqueda BestFirst, ExhaustiveSearch o GreedyStepwise, obtenemos unos resultados muy similares: -
Para la estimación de la temperatura: rocio humedad direccion hechos temperatura1 temperatura2 temperatura24
-
Para la estimación de las condiciones climatológicas: dia humedad presion visibilidad velocidad hechos temperatura1 condiciones24
Por tanto, una vez selección las variables importantes, pasamos a realizar el entrenamiento del sistema para poder realizar las predicciones deseadas de la manera más exacta posible. Es importante destacar que a la hora de realizar los análisis, no ha sido posible utilizar el 100% de los datos, debido a la ingente cantidad de memoria y tiempo que eso supondría para los ordenadores de sobremesa actuales, por lo que ha sido necesaria un muestreo de todas los datos disponibles.
Página 8 de 37
PREDICCIÓN METEOROLÓGICA
3.
Inteligencia en redes de ordenadores
Aprendizaje
En este punto vamos a aplicar diversos algoritmos de conocimiento para finalmente intentar llegar a un modelo que reduzca la probabilidad de error en la predicción.
3.1 Aprendizaje para el modelo de predecir la temperatura REGRESION LINEAL Scheme: weka.classifiers.functions.LinearRegression -S 0 -R 1.0E-8 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1-3,7-8,10,12,16 Instances: 121825 Time taken to build model: 9.91 seconds === Summary === Correlation coefficient 0.9866 Mean absolute error 1.0299 Root mean squared error 1.4426 Relative absolute error 14.0606 % Root relative squared error 16.1723 % Total Number of Instances 12681
Como hemos tenido problemas de memoria y de tiempo en llegar a un modelo con la mayoría de los algoritmos hemos decidido tomar menos muestras. Ahora estábamos tomando 121000 y a partir de ahora aplicamos un filtro de muestreo (resample) para así tener unas 12000 muestras. REGRESION LINEAL Scheme: weka.classifiers.functions.LinearRegression -S 0 -R 1.0E-8 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1-3,7-8,10,12,16weka.filters.unsupervised.instance.Resample-S1-Z10.0 Instances: 12182 Time taken to build model: 1.09 seconds === Summary === Correlation coefficient 0.9861 Mean absolute error 1.0042 Root mean squared error 1.4488 Relative absolute error 13.7886 % Root relative squared error 16.4208 % Total Number of Instances 1268
MULTILAYER PERCEPTRON Scheme: weka.classifiers.functions.MultilayerPerceptron -L 0.3 -M 0.2 -N 500 -V 0 -S 0 -E 20 -H a Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1-3,7-8,10,12,16weka.filters.unsupervised.instance.Resample-S1-Z10.0
Página 9 de 37
PREDICCIÓN METEOROLÓGICA
Inteligencia en redes de ordenadores
Instances: 12182 Time taken to build model: 392.02 seconds === Summary === Correlation coefficient 0.9847 Mean absolute error 0.3116 Root mean squared error 1.5947 Relative absolute error 4.2783 % Root relative squared error 18.0752 % Total Number of Instances 1268
RBF NETWORK Scheme: weka.classifiers.functions.RBFNetwork -B 2 -S 1 -R 1.0E-8 -M -1 -W 0.1 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1-3,7-8,10,12,16weka.filters.unsupervised.instance.Resample-S1-Z10.0 Instances: 12182 Time taken to build model: 1.16 seconds === Summary === Correlation coefficient 0.8538 Mean absolute error 3.6982 Root mean squared error 4.5075 Relative absolute error 50.778 % Root relative squared error 51.0891 % Total Number of Instances 1268
IBK K=1 Scheme: weka.classifiers.lazy.IBk -K 1 -W 0 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1-3,7-8,10,12,16weka.filters.unsupervised.instance.Resample-S1-Z10.0 Instances: 12182 Time taken to build model: 0.02 seconds === Summary === Correlation coefficient 0.9728 Mean absolute error 1.1141 Root mean squared error 2.0213 Relative absolute error 15.2971 % Root relative squared error 22.9096 % Total Number of Instances 1268
IBK K=2 Scheme: weka.classifiers.lazy.IBk -K 2 -W 0 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1-3,7-8,10,12,16weka.filters.unsupervised.instance.Resample-S1-Z10.0 Instances: 12182 Time taken to build model: 0.02 seconds === Summary === Correlation coefficient Class complexity | order 0 bits/instance Class complexity | scheme bits/instance
0.9756 6527.6923 bits
5.148
4107.9446 bits
3.2397
Página 10 de 37
PREDICCIÓN METEOROLÓGICA Complexity improvement (Sf) bits/instance Mean absolute error Root mean squared error Relative absolute error Root relative squared error Total Number of Instances
Inteligencia en redes de ordenadores 2419.7477 bits
1.9083
1.0791 1.9173 14.817 % 21.7313 % 1268
IBK 3 Scheme: weka.classifiers.lazy.IBk -K 3 -W 0 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1-3,7-8,10,12,16weka.filters.unsupervised.instance.Resample-S1-Z10.0 Instances: 12182 Test mode: user supplied test set: 1268 instances Time taken to build model: 0.02 seconds === Summary === Correlation coefficient 0.9758 Class complexity | order 0 6527.6923 bits 5.148 bits/instance Class complexity | scheme 4400.0129 bits 3.47 bits/instance Complexity improvement (Sf) 2127.6794 bits 1.678 bits/instance Mean absolute error 1.0584 Root mean squared error 1.9142 Relative absolute error 14.5326 % Root relative squared error 21.6963 % Total Number of Instances 1268
IBK 5 Scheme: weka.classifiers.lazy.IBk -K 5 -W 0 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1-3,7-8,10,12,16weka.filters.unsupervised.instance.Resample-S1-Z10.0 Instances: 12182 Time taken to build model: 0 seconds === Summary === Correlation coefficient 0.9747 Class complexity | order 0 6527.6923 bits 5.148 bits/instance Class complexity | scheme 3631.2756 bits 2.8638 bits/instance Complexity improvement (Sf) 2896.4166 bits 2.2842 bits/instance Mean absolute error 1.0763 Root mean squared error 1.9567 Relative absolute error 14.7779 % Root relative squared error 22.1778 % Total Number of Instances 1268
KSTAR Scheme:
weka.classifiers.lazy.KStar -B 20 -M a
Página 11 de 37
PREDICCIÓN METEOROLÓGICA
Inteligencia en redes de ordenadores
Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1-3,7-8,10,12,16weka.filters.unsupervised.instance.Resample-S1-Z10.0 Instances: 12182 Time taken to build model: 0.02 seconds === Summary === Correlation coefficient 0.9952 Class complexity | order 0 6527.6923 bits 5.148 bits/instance Class complexity | scheme 3372.0149 bits 2.6593 bits/instance Complexity improvement (Sf) 3155.6773 bits 2.4887 bits/instance Mean absolute error 0.616 Root mean squared error 0.8639 Relative absolute error 8.4587 % Root relative squared error 9.7912 % Total Number of Instances 1268
LAZY Scheme: weka.classifiers.lazy.LWL -U 0 -K -1 -W weka.classifiers.trees.DecisionStump Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1-3,7-8,10,12,16weka.filters.unsupervised.instance.Resample-S1-Z10.0 Instances: 12182 Time taken to build model: 0.02 seconds === Summary === Correlation coefficient 0.8496 Class complexity | order 0 6527.6923 bits 5.148 bits/instance Class complexity | scheme 5574.4037 bits 4.3962 bits/instance Complexity improvement (Sf) 953.2886 bits 0.7518 bits/instance Mean absolute error 3.7511 Root mean squared error 4.5961 Relative absolute error 51.5048 % Root relative squared error 52.0931 % Total Number of Instances 1268
TREES M5P Scheme: weka.classifiers.trees.M5P -M 4.0 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1-3,7-8,10,12,16weka.filters.unsupervised.instance.Resample-S1-Z10.0 Instances: 12182 Time taken to build model: 23.3 seconds === Summary === Correlation coefficient 0.9938 Class complexity | order 0 6527.6923 bits 5.148 bits/instance Class complexity | scheme 2451.565 bits 1.9334 bits/instance Complexity improvement (Sf) 4076.1272 bits 3.2146 bits/instance Mean absolute error 0.6397
Página 12 de 37
PREDICCIÓN METEOROLÓGICA Root mean squared error Relative absolute error Root relative squared error Total Number of Instances
Inteligencia en redes de ordenadores 0.9663 8.7836 % 10.952 % 1268
REP TREE Scheme: weka.classifiers.trees.REPTree -M 2 -V 0.0010 -N 3 -S 1 -L -1 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1-3,7-8,10,12,16weka.filters.unsupervised.instance.Resample-S1-Z10.0 Instances: 12182 Time taken to build model: 0.39 seconds === Summary === Correlation coefficient 0.9853 Class complexity | order 0 6527.6923 bits 5.148 bits/instance Class complexity | scheme 3353.6191 bits 2.6448 bits/instance Complexity improvement (Sf) 3174.0731 bits 2.5032 bits/instance Mean absolute error 1.0942 Root mean squared error 1.4758 Relative absolute error 15.0242 % Root relative squared error 16.7276 % Total Number of Instances 1268
CONJUNCTIVE RULE Scheme: weka.classifiers.rules.ConjunctiveRule -N 3 -M 2.0 -P -1 -S 1 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1-3,7-8,10,12,16weka.filters.unsupervised.instance.Resample-S1-Z10.0 Instances: 12182 === Summary === Correlation coefficient 0.7801 Class complexity | order 0 6527.6923 bits 5.148 bits/instance Class complexity | scheme 6950.1605 bits 5.4812 bits/instance Complexity improvement (Sf) -422.4682 bits -0.3332 bits/instance Mean absolute error 4.3146 Root mean squared error 5.4649 Relative absolute error 59.2426 % Root relative squared error 61.9411 % Total Number of Instances 1268
DECISION TABLE Scheme: weka.classifiers.rules.DecisionTable -X 1 -S 5 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1-3,7-8,10,12,16weka.filters.unsupervised.instance.Resample-S1-Z10.0 Instances: 12182 === Summary ===
Página 13 de 37
PREDICCIÓN METEOROLÓGICA Correlation coefficient Class complexity | order 0 bits/instance Class complexity | scheme bits/instance Complexity improvement (Sf) bits/instance Mean absolute error Root mean squared error Relative absolute error Root relative squared error Total Number of Instances
Inteligencia en redes de ordenadores 0.9786 6527.6923 bits
5.148
3848.669
bits
3.0352
2679.0232 bits
2.1128
1.3905 1.777 19.0918 % 20.1413 % 1268
M5 RULES Scheme: weka.classifiers.rules.M5Rules -M 4.0 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1-3,7-8,10,12,16weka.filters.unsupervised.instance.Resample-S1-Z10.0 Instances: 12182 Time taken to build model: 80.2 seconds === Summary === Correlation coefficient 0.9937 Class complexity | order 0 6527.6923 bits 5.148 bits/instance Class complexity | scheme 2457.1768 bits 1.9378 bits/instance Complexity improvement (Sf) 4070.5155 bits 3.2102 bits/instance Mean absolute error 0.6482 Root mean squared error 0.9681 Relative absolute error 8.8997 % Root relative squared error 10.973 % Total Number of Instances 1268
A la hora de realizar una comparación entre los diferentes algoritmos planteados, hemos de fijarnos algunos de los parámetros de salida. Hemos seleccionado los siguientes: •
Tiempo: nos ha parecido un parámetro decisivo a la hora de obtener un modelo de conocimiento apropiado para realizar las estimaciones. Junto con este parámetro, aparece asociado la cantidad de memoria necesaria para procesar los datos. Como ya hemos explicado anteriormente nos hemos visto obligados a reducir el conjunto de muestras.
•
Root mean squared error: nos permitirá obtener una aproximación de lo buenos que es modelo en función de la desviación que existe entre el valor real y el predicho.
•
Relative absolute error: es una medida similar a la anterior, pero de manera porcentual.
Página 14 de 37
PREDICCIÓN METEOROLÓGICA
Inteligencia en redes de ordenadores
Predicción de temperatura
Tiempo
Root mean squared error
Relative absolute error
REGRESION LINEAL
1.09 seconds
1.4488
13.7886 %
MULTILAYER PERCEPTRON
392.02 seconds
1.5947
4.2783 %
RBF NETWORK
1.16 seconds
4.5075
50.778
IBK K=1
0.02 seconds
2.0213
15.2971 %
IBK K=2
0.02 seconds
1.9173
14.817
IBK K=3
0.02 seconds
1.9142
14.5326 %
1.9567
14.7779 %
IBK K=5
0 seconds
%
%
KSTAR
0.02 seconds
0.8639
8.4587 %
LAZY
0.02 seconds
4.5961
51.5048 %
TREES M5P
23.3 seconds
0.9663
8.7836 %
REP TREE
0.39 seconds
1.4758
15.0242 %
CONJUNCTIVE RULE
------
5.4649
59.2426 %
DECISION TABLE
------
1.777
19.0918 %
M5 RULES
80.2 seconds
0.9681
8.8997 %
Página 15 de 37
PREDICCIÓN METEOROLÓGICA
Inteligencia en redes de ordenadores
Como podemos comprobar en la tabla anterior, se han marcado los mejores resultados obtenidos en cada uno de los parámetros elegidos para comparar los métodos de aprendizajes. Observando estos valores, podemos concluir que el mejor algoritmo para predecir la temperatura es KSTAR, ya permite obtener un buen valor de para el error cuadrático medio así como el error absoluto, con unos tiempos de procesamiento muy buenos.
Página 16 de 37
PREDICCIÓN METEOROLÓGICA
3.2
Inteligencia en redes de ordenadores
Aprendizaje para el modelo de predecir las condiciones
RED BAYESIANA Scheme: weka.classifiers.bayes.BayesNet -D -Q weka.classifiers.bayes.net.search.local.K2 -- -P 1 -S BAYES -E weka.classifiers.bayes.net.estimate.SimpleEstimator -- -A 0.5 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1,3-5,9,14-15weka.filters.unsupervised.instance.Resample-S1-Z9.0 Instances: 10964 Test mode: user supplied test set: 1141 instances Time taken to build model: 0.39 seconds === Summary === Correctly Classified Instances 603 53.1746 % Incorrectly Classified Instances 531 46.8254 % Kappa statistic 0.3074 K&B Relative Info Score 34625.4742 % K&B Information Score 816.4969 bits 0.72 bits/instance Class complexity | order 0 2415.7786 bits 2.1303 bits/instance Class complexity | scheme 1980.1762 bits 1.7462 bits/instance Complexity improvement (Sf) 435.6025 bits 0.3841 bits/instance Mean absolute error 0.0759 Root mean squared error 0.2009 Relative absolute error 78.457 % Root relative squared error 93.1008 % Total Number of Instances 1134 Ignored Class Unknown Instances 7
NAIVE BAYES Scheme: weka.classifiers.bayes.NaiveBayes Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1,3-5,9,14-15weka.filters.unsupervised.instance.Resample-S1-Z9.0 Instances: 10964 Test mode: user supplied test set: 1141 instances Time taken to build model: 0.13 seconds === Summary === Correctly Classified Instances 681 60.0529 % Incorrectly Classified Instances 453 39.9471 % Kappa statistic 0.4474 K&B Relative Info Score 45035.1821 % K&B Information Score 1061.9663 bits 0.9365 bits/instance Class complexity | order 0 2415.7786 bits 2.1303 bits/instance Class complexity | scheme 1964.9799 bits 1.7328 bits/instance Complexity improvement (Sf) 450.7987 bits 0.3975
Página 17 de 37
PREDICCIÓN METEOROLÓGICA bits/instance Mean absolute error Root mean squared error Relative absolute error Root relative squared error Total Number of Instances Ignored Class Unknown Instances
Inteligencia en redes de ordenadores
0.069 0.1857 71.3473 % 86.0378 % 1134 7
NAIVE BAYES UPDATEABLE Scheme: weka.classifiers.bayes.NaiveBayesUpdateable Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1,3-5,9,14-15weka.filters.unsupervised.instance.Resample-S1-Z9.0 Instances: 10964 Test mode: user supplied test set: 1141 instances Time taken to build model: 0.11 seconds === Summary === Correctly Classified Instances 681 60.0529 % Incorrectly Classified Instances 453 39.9471 % Kappa statistic 0.4474 K&B Relative Info Score 45035.1821 % K&B Information Score 1061.9663 bits 0.9365 bits/instance Class complexity | order 0 2415.7786 bits 2.1303 bits/instance Class complexity | scheme 1964.9799 bits 1.7328 bits/instance Complexity improvement (Sf) 450.7987 bits 0.3975 bits/instance Mean absolute error 0.069 Root mean squared error 0.1857 Relative absolute error 71.3473 % Root relative squared error 86.0378 % Total Number of Instances 1134 Ignored Class Unknown Instances 7
LOGISTIC Scheme: weka.classifiers.functions.Logistic -R 1.0E-8 -M -1 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1,3-5,9,14-15weka.filters.unsupervised.instance.Resample-S1-Z9.0 Instances: 10964 Test mode: user supplied test set: 1141 instances Time taken to build model: 128.64 seconds === Summary === Correctly Classified Instances 689 60.7584 % Incorrectly Classified Instances 445 39.2416 % Kappa statistic 0.3944 K&B Relative Info Score 37094.5794 % K&B Information Score 874.7204 bits 0.7714 bits/instance Class complexity | order 0 2415.7786 bits 2.1303 bits/instance Class complexity | scheme 1720.1743 bits 1.5169 bits/instance Complexity improvement (Sf) 695.6044 bits 0.6134
Página 18 de 37
PREDICCIÓN METEOROLÓGICA bits/instance Mean absolute error Root mean squared error Relative absolute error Root relative squared error Total Number of Instances Ignored Class Unknown Instances
Inteligencia en redes de ordenadores
0.072 0.1844 74.4332 % 85.4463 % 1134 7
MULTILAYER PERCEPTRON Scheme: weka.classifiers.functions.MultilayerPerceptron -L 0.3 -M 0.2 -N 500 -V 0 -S 0 -E 20 -H a Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1,3-5,9,14-15weka.filters.unsupervised.instance.Resample-S1-Z9.0 Instances: 10964 Test mode: user supplied test set: 1141 instances Time taken to build model: 731.19 seconds === Summary === Correctly Classified Instances 781 68.8713 % Incorrectly Classified Instances 353 31.1287 % Kappa statistic 0.5438 K&B Relative Info Score 58091.117 % K&B Information Score 1369.8359 bits 1.208 bits/instance Class complexity | order 0 2415.7786 bits 2.1303 bits/instance Class complexity | scheme 1472.549 bits 1.2985 bits/instance Complexity improvement (Sf) 943.2297 bits 0.8318 bits/instance Mean absolute error 0.0428 Root mean squared error 0.1566 Relative absolute error 44.2499 % Root relative squared error 72.5641 % Total Number of Instances 1134 Ignored Class Unknown Instances 7
SMO Scheme: weka.classifiers.functions.SMO -C 1.0 -E 1.0 -G 0.01 -A 250007 -L 0.0010 -P 1.0E-12 -N 0 -V -1 -W 1 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1,3-5,9,14-15weka.filters.unsupervised.instance.Resample-S1-Z9.0 Instances: 10964 Test mode: user supplied test set: 1141 instances Time taken to build model: 96.38 seconds === Summary === Correctly Classified Instances 780 68.7831 % Incorrectly Classified Instances 354 31.2169 % Kappa statistic 0.5442 K&B Relative Info Score -6294.7844 % K&B Information Score -148.4361 bits -0.1309 bits/instance Class complexity | order 0 2415.7786 bits 2.1303 bits/instance Class complexity | scheme 3326.2595 bits 2.9332
Página 19 de 37
PREDICCIÓN METEOROLÓGICA bits/instance Complexity improvement (Sf) bits/instance Mean absolute error Root mean squared error Relative absolute error Root relative squared error Total Number of Instances Ignored Class Unknown Instances
Inteligencia en redes de ordenadores
-910.4808 bits
-0.8029
0.1158 0.2358 119.7363 % 109.2794 % 1134 7
IBI Scheme: weka.classifiers.lazy.IB1 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1,3-5,9,14-15weka.filters.unsupervised.instance.Resample-S1-Z9.0 Instances: 10964 Test mode: user supplied test set: 1141 instances Time taken to build model: 0.03 seconds === Summary === Correctly Classified Instances 518 45.679 % Incorrectly Classified Instances 616 54.321 % Kappa statistic 0.2975 K&B Relative Info Score 32573.9768 % K&B Information Score 768.1209 bits 0.6774 bits/instance Class complexity | order 0 2415.7786 bits 2.1303 bits/instance Class complexity | scheme 661584 bits 583.4074 bits/instance Complexity improvement (Sf) -659168.2214 bits -581.2771 bits/instance Mean absolute error 0.0724 Root mean squared error 0.2691 Relative absolute error 74.8852 % Root relative squared error 124.7147 % Total Number of Instances 1134 Ignored Class Unknown Instances 7
Ibk k=1 Scheme: weka.classifiers.lazy.IBk -K 1 -W 0 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1,3-5,9,14-15weka.filters.unsupervised.instance.Resample-S1-Z9.0 Instances: 10964 Test mode: user supplied test set: 1141 instances Time taken to build model: 0.02 seconds === Summary === Correctly Classified Instances 518 45.679 % Incorrectly Classified Instances 616 54.321 % Kappa statistic 0.2975 K&B Relative Info Score 32494.7896 % K&B Information Score 766.2536 bits 0.6757 bits/instance Class complexity | order 0 2415.7786 bits 2.1303 bits/instance Class complexity | scheme 8295.7622 bits 7.3155
Página 20 de 37
PREDICCIÓN METEOROLÓGICA bits/instance Complexity improvement (Sf) bits/instance Mean absolute error Root mean squared error Relative absolute error Root relative squared error Total Number of Instances Ignored Class Unknown Instances
Inteligencia en redes de ordenadores
-5879.9835 bits
-5.1852
0.0726 0.269 75.019 % 124.6566 % 1134 7
Ibk k=2 Scheme: weka.classifiers.lazy.IBk -K 2 -W 0 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1,3-5,9,14-15weka.filters.unsupervised.instance.Resample-S1-Z9.0 Instances: 10964 Test mode: user supplied test set: 1141 instances === Summary === Correctly Classified Instances 598 52.7337 % Incorrectly Classified Instances 536 47.2663 % Kappa statistic 0.3707 K&B Relative Info Score 35652.7972 % K&B Information Score 840.722 bits 0.7414 bits/instance Class complexity | order 0 2415.7786 bits 2.1303 bits/instance Class complexity | scheme 6719.4236 bits 5.9254 bits/instance Complexity improvement (Sf) -4303.645 bits -3.7951 bits/instance Mean absolute error 0.0745 Root mean squared error 0.2363 Relative absolute error 77.0379 % Root relative squared error 109.5146 % Total Number of Instances 1134 Ignored Class Unknown Instances 7
Ibk k=3 Scheme: weka.classifiers.lazy.IBk -K 3 -W 0 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1,3-5,9,14-15weka.filters.unsupervised.instance.Resample-S1-Z9.0 Instances: 10964 Test mode: user supplied test set: 1141 instances Time taken to build model: 0.02 seconds === Summary === Correctly Classified Instances 594 52.381 % Incorrectly Classified Instances 540 47.619 % Kappa statistic 0.3678 K&B Relative Info Score 34924.4509 % K&B Information Score 823.547 bits 0.7262 bits/instance Class complexity | order 0 2415.7786 bits 2.1303 bits/instance Class complexity | scheme 5743.9718 bits 5.0652 bits/instance
Página 21 de 37
PREDICCIÓN METEOROLÓGICA Complexity improvement (Sf) bits/instance Mean absolute error Root mean squared error Relative absolute error Root relative squared error Total Number of Instances Ignored Class Unknown Instances
Inteligencia en redes de ordenadores -3328.1931 bits
-2.9349
0.0767 0.2252 79.3064 % 104.3681 % 1134 7
KStar Scheme: weka.classifiers.lazy.KStar -B 20 -M a Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1,3-5,9,14-15weka.filters.unsupervised.instance.Resample-S1-Z9.0 Instances: 10964 Test mode: user supplied test set: 1141 instances Time taken to build model: 0 seconds === Summary === Correctly Classified Instances 557 49.1182 % Incorrectly Classified Instances 577 50.8818 % Kappa statistic 0.235 K&B Relative Info Score 29743.7223 % K&B Information Score 701.3812 bits 0.6185 bits/instance Class complexity | order 0 2415.7786 bits 2.1303 bits/instance Class complexity | scheme 2245.7203 bits 1.9804 bits/instance Complexity improvement (Sf) 170.0584 bits 0.15 bits/instance Mean absolute error 0.0758 Root mean squared error 0.2123 Relative absolute error 78.3573 % Root relative squared error 98.3673 % Total Number of Instances 1134 Ignored Class Unknown Instances 7
Lazy Scheme: weka.classifiers.lazy.LWL -U 0 -K -1 -W weka.classifiers.trees.DecisionStump Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1,3-5,9,14-15weka.filters.unsupervised.instance.Resample-S1-Z9.0 Instances: 10964 Time taken to build model: 0.02 seconds === Summary === Correctly Classified Instances 741 65.3439 % Incorrectly Classified Instances 393 34.6561 % Kappa statistic 0.4857 K&B Relative Info Score 52841.3361 % K&B Information Score 1246.0418 bits 1.0988 bits/instance Class complexity | order 0 2415.7786 bits 2.1303 bits/instance Class complexity | scheme 1183.2523 bits 1.0434 bits/instance
Página 22 de 37
PREDICCIÓN METEOROLÓGICA Complexity improvement (Sf) bits/instance Mean absolute error Root mean squared error Relative absolute error Root relative squared error Total Number of Instances Ignored Class Unknown Instances
Inteligencia en redes de ordenadores 1232.5263 bits
1.0869
0.0498 0.1553 51.4551 % 71.9594 % 1134 7
Decisions Stump Scheme: weka.classifiers.trees.DecisionStump Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1,3-5,9,14-15weka.filters.unsupervised.instance.Resample-S1-Z9.0 Instances: 10964 Time taken to build model: 0.09 seconds === Summary === Correctly Classified Instances 738 65.0794 % Incorrectly Classified Instances 396 34.9206 % Kappa statistic 0.4807 K&B Relative Info Score 51034.1438 % K&B Information Score 1203.4267 bits 1.0612 bits/instance Class complexity | order 0 2415.7786 bits 2.1303 bits/instance Class complexity | scheme 1238.9036 bits 1.0925 bits/instance Complexity improvement (Sf) 1176.8751 bits 1.0378 bits/instance Mean absolute error 0.0518 Root mean squared error 0.1567 Relative absolute error 53.5791 % Root relative squared error 72.6229 % Total Number of Instances 1134 Ignored Class Unknown Instances 7
J48 Scheme: weka.classifiers.trees.J48 -C 0.25 -M 2 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1,3-5,9,14-15weka.filters.unsupervised.instance.Resample-S1-Z9.0 Instances: 10964 Time taken to build model: 5.02 seconds === Summary === Correctly Classified Instances 558 49.2063 % Incorrectly Classified Instances 576 50.7937 % Kappa statistic 0.2356 K&B Relative Info Score 27322.5765 % K&B Information Score 644.2886 bits 0.5682 bits/instance Class complexity | order 0 2415.7786 bits 2.1303 bits/instance Class complexity | scheme 141611.7122 bits 124.8781 bits/instance Complexity improvement (Sf) -139195.9335 bits -122.7477 bits/instance
Página 23 de 37
PREDICCIÓN METEOROLÓGICA Mean absolute error Root mean squared error Relative absolute error Root relative squared error Total Number of Instances Ignored Class Unknown Instances
Inteligencia en redes de ordenadores 0.0777 0.226 80.3665 % 104.7143 % 1134 7
NBTree Scheme: weka.classifiers.trees.NBTree Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1,3-5,9,14-15weka.filters.unsupervised.instance.Resample-S1-Z9.0 Instances: 10964 Test mode: user supplied test set: 1141 instances Time taken to build model: 23.39 seconds === Summary === Correctly Classified Instances 706 62.2575 % Incorrectly Classified Instances 428 37.7425 % Kappa statistic 0.4591 K&B Relative Info Score 41092.6786 % K&B Information Score 968.9989 bits 0.8545 bits/instance Class complexity | order 0 2415.7786 bits 2.1303 bits/instance Class complexity | scheme 1640.6281 bits 1.4468 bits/instance Complexity improvement (Sf) 775.1506 bits 0.6836 bits/instance Mean absolute error 0.07 Root mean squared error 0.1815 Relative absolute error 72.3447 % Root relative squared error 84.0982 % Total Number of Instances 1134 Ignored Class Unknown Instances 7
REPTree Scheme: weka.classifiers.trees.REPTree -M 2 -V 0.0010 -N 3 -S 1 -L -1 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1,3-5,9,14-15weka.filters.unsupervised.instance.Resample-S1-Z9.0 Instances: 10964 Time taken to build model: 1.84 seconds === Summary === Correctly Classified Instances 583 51.4109 % Incorrectly Classified Instances 551 48.5891 % Kappa statistic 0.2557 K&B Relative Info Score 28683.728 % K&B Information Score 676.3857 bits 0.5965 bits/instance Class complexity | order 0 2415.7786 bits 2.1303 bits/instance Class complexity | scheme 73226.9607 bits 64.574 bits/instance Complexity improvement (Sf) -70811.1821 bits -62.4437 bits/instance Mean absolute error 0.0772
Página 24 de 37
PREDICCIÓN METEOROLÓGICA Root mean squared error Relative absolute error Root relative squared error Total Number of Instances Ignored Class Unknown Instances
Inteligencia en redes de ordenadores 0.2124 79.7705 % 98.4207 % 1134 7
ConjunctiveRule Scheme: weka.classifiers.rules.ConjunctiveRule -N 3 -M 2.0 -P -1 -S 1 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1,3-5,9,14-15weka.filters.unsupervised.instance.Resample-S1-Z9.0 Instances: 10964 Time taken to build model: 0.34 seconds === Summary === Correctly Classified Instances 738 65.0794 % Incorrectly Classified Instances 396 34.9206 % Kappa statistic 0.4783 K&B Relative Info Score 47677.0369 % K&B Information Score 1124.2634 bits 0.9914 bits/instance Class complexity | order 0 2415.7786 bits 2.1303 bits/instance Class complexity | scheme 1299.0154 bits 1.1455 bits/instance Complexity improvement (Sf) 1116.7632 bits 0.9848 bits/instance Mean absolute error 0.0541 Root mean squared error 0.1591 Relative absolute error 55.9646 % Root relative squared error 73.734 % Total Number of Instances 1134 Ignored Class Unknown Instances 7
Decision Table Scheme: weka.classifiers.rules.DecisionTable -X 1 -S 5 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1,3-5,9,14-15weka.filters.unsupervised.instance.Resample-S1-Z9.0 Instances: 10964 Time taken to build model: 2.03 seconds === Summary === Correctly Classified Instances 833 73.4568 % Incorrectly Classified Instances 301 26.5432 % Kappa statistic 0.6067 K&B Relative Info Score 63899.0056 % K&B Information Score 1506.7906 bits 1.3287 bits/instance Class complexity | order 0 2415.7786 bits 2.1303 bits/instance Class complexity | scheme 4113.5337 bits 3.6275 bits/instance Complexity improvement (Sf) -1697.7551 bits -1.4971 bits/instance Mean absolute error 0.0431 Root mean squared error 0.1464 Relative absolute error 44.5141 % Root relative squared error 67.8337 %
Página 25 de 37
PREDICCIÓN METEOROLÓGICA Total Number of Instances Ignored Class Unknown Instances
Inteligencia en redes de ordenadores 1134 7
J Rip Scheme: weka.classifiers.rules.JRip -F 3 -N 2.0 -O 2 -S 1 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1,3-5,9,14-15weka.filters.unsupervised.instance.Resample-S1-Z9.0 Instances: 10964 Time taken to build model: 35.45 seconds === Summary === Correctly Classified Instances 718 63.3157 % Incorrectly Classified Instances 416 36.6843 % Kappa statistic 0.3863 K&B Relative Info Score 32617.5444 % K&B Information Score 769.1483 bits 0.6783 bits/instance Class complexity | order 0 2415.7786 bits 2.1303 bits/instance Class complexity | scheme 4961.5706 bits 4.3753 bits/instance Complexity improvement (Sf) -2545.792 bits -2.245 bits/instance Mean absolute error 0.0761 Root mean squared error 0.1917 Relative absolute error 78.6888 % Root relative squared error 88.8366 % Total Number of Instances 1134 Ignored Class Unknown Instances 7
One R Scheme: weka.classifiers.rules.OneR -B 6 Relation: meteorologiaweka.filters.unsupervised.attribute.Remove-R1,3-5,9,14-15weka.filters.unsupervised.instance.Resample-S1-Z9.0 Instances: 10964 Time taken to build model: 0.09 seconds === Summary === Correctly Classified Instances 741 65.3439 % Incorrectly Classified Instances 393 34.6561 % Kappa statistic 0.4856 K&B Relative Info Score 46223.0993 % K&B Information Score 1089.9784 bits 0.9612 bits/instance Class complexity | order 0 2415.7786 bits 2.1303 bits/instance Class complexity | scheme 422082 bits 372.2063 bits/instance Complexity improvement (Sf) -419666.2214 bits -370.076 bits/instance Mean absolute error 0.0462 Root mean squared error 0.215 Relative absolute error 47.7758 % Root relative squared error 99.6148 % Total Number of Instances 1134 Ignored Class Unknown Instances 7
Página 26 de 37
PREDICCIÓN METEOROLÓGICA
Inteligencia en redes de ordenadores
Como en el apartado anterior, vamos a proceder a estudiar el algoritmo de aprendizaje que mejor aproximación da, basándonos en los 3 parámetros seleccionados, el tiempo que tarda en ejecutarse, el error cuadrático medio y el error absoluto relativo:
Predicción de condiciones a 24 horas
Tiempo
Root mean squared error
Relative absolute error
RED BAYESIANA
0.39 seconds
0.2009
78.457 %
NAIVE BAYES
0.13 seconds
0.1857
71.3473 %
NAIVE BAYES UPDATEABLE
0.11 seconds
0.1857
71.3473 %
LOGISTIC
128.64 seconds
0.1844
74.4332 %
MULTILAYER PERCEPTRON
731.19 seconds
0.1566
44.2499 %
SMO
96.38 seconds
0.2358
119.7363 %
IBI
0.03 seconds
0.2691
74.8852 %
IBK k=1
0.02 seconds
0.269
75.019 %
IBK k=2
0.02 seconds
0.2363
77.0379 %
IBK k=3
0.02 seconds
0.2252
79.3064 %
KSTAR
--
0.2123
78.3573 %
LAZY
0.02 seconds
0.1553
51.4551 %
Página 27 de 37
PREDICCIÓN METEOROLÓGICA
DECISIONS STUMP
0.1567
53.5791 %
5.02 seconds
0.226
80.3665 %
NBTree
23.39 seconds
0.1815
72.3447 %
REPTree
1.84 seconds
0.2124
79.7705 %
Conjunctive Rule
0.34 seconds
0.1591
55.9646 %
Decision Table
2.03 seconds
0.1464
44.5141 %
J Rip
35.45 seconds
0.1917
78.6888 %
One R
0.09 seconds
0.215
47.7758 %
J48
0.09 seconds
Inteligencia en redes de ordenadores
En la tabla anterior, al igual que con el apartado de predicción de la temperatura, se han seleccionado como parámetros para comparar los métodos, el tiempo de ejecución, el error cuadrático medio y el error absoluto. También podríamos haber elegido los porcentajes de acierto y fallo en cada uno de los métodos, pero hemos comprobado están totalmente relacionados. En este caso, con una gran diferencia, podemos decir que el mejor de los métodos es el de Decisión Table, ya que el que obtiene un error menor a pesar de ser un poco más lento que otros métodos. Si nos fijamos en el porcentaje de aciertos que obtiene: Correctly Classified Instances Incorrectly Classified Instances
833 301
73.4568 % 26.5432 %
Hemos comprobado que es muy superior al de la mayoría de los otros algoritmos, que en el mejor de los casos están en torno a 68% de aciertos.
Página 28 de 37
PREDICCIÓN METEOROLÓGICA
4.
Inteligencia en redes de ordenadores
Anexos a. Script inicial
Como se ha comentado anteriormente, el script utilizado ha sido facilitado por el profesor. Este script se encarga de abrir cada uno de los ficheros con la información, extraer los datos y juntarlos todos en un solo fichero. Además, se modifica el formato de la hora para que en lugar de tener las horas de 0 a 12 en AM y PM, utilizar un formato de 0 a 47 en intervalos de media hora. El código es el siguiente: procesa-lemd/filtra.pl while() { chop(); if(/^[0123456789]*:[03]0/) { s/^12:00 AM/0/; s/^12:30 AM/1/; s/^1:00 AM/2/; s/^1:30 AM/3/; s/^2:00 AM/4/; s/^2:30 AM/5/; s/^3:00 AM/6/; s/^3:30 AM/7/; s/^4:00 AM/8/; s/^4:30 AM/9/; s/^5:00 AM/10/; s/^5:30 AM/11/; s/^6:00 AM/12/; s/^6:30 AM/13/; s/^7:00 AM/14/; s/^7:30 AM/15/; s/^8:00 AM/16/; s/^8:30 AM/17/; s/^9:00 AM/18/; s/^9:30 AM/19/; s/^10:00 AM/20/; s/^10:30 AM/21/; s/^11:00 AM/22/; s/^11:30 AM/23/; s/^12:00 PM/24/; s/^12:30 PM/25/; s/^1:00 PM/26/; s/^1:30 PM/27/; s/^2:00 PM/28/; s/^2:30 PM/29/; s/^3:00 PM/30/; s/^3:30 PM/31/; s/^4:00 PM/32/; s/^4:30 PM/33/; s/^5:00 PM/34/; s/^5:30 PM/35/; s/^6:00 PM/36/; s/^6:30 PM/37/; s/^7:00 PM/38/; s/^7:30 PM/39/; s/^8:00 PM/40/;
Página 29 de 37
PREDICCIÓN METEOROLÓGICA
Inteligencia en redes de ordenadores
s/^8:30 PM/41/; s/^9:00 PM/42/; s/^9:30 PM/43/; s/^10:00 PM/44/; s/^10:30 PM/45/; s/^11:00 PM/46/; s/^11:30 PM/47/; print "$_\n"; } } procesa-lemd/pon48.pl $FICHERO = $ARGV[0]; $FICHERO =~ s/08221-//; $FICHERO =~ s/-/,/g; $contador = 0; while() { chop(); $linea = $_; $linea =~ s/,,/,?,/g; ($valor) = ($linea =~ /^([0-9]+),/); while($contador 17) ){ escribe = escribe + "?" + sepa; incompleto++; }else{ escribe = escribe + tempe + sepa; } }else{ escribe = escribe + "?" + sepa; incompleto++; } index1 = index2+1;
//humedad index2 = tmp.indexOf(sepa,index1); nue = tmp.substring(index1,index2); if ( !nue.equals("?") && !nue.equals("-9999") !nue.equals("N/A") ) { tempe = Integer.valueOf(nue); escribe = escribe + tempe + sepa; }else{ escribe = escribe + "?" + sepa; incompleto++; } index1 = index2+1; //presion index2 = tmp.indexOf(sepa,index1); nue = tmp.substring(index1,index2); if ( !nue.equals("?") && !nue.equals("-9999") !nue.equals("N/A") ) { temp = Double.valueOf(nue); if ( (temp < 29) || (temp > 31) ) { escribe = escribe + "?" + sepa; incompleto++; }else{ escribe = escribe + temp + sepa; } }else{ escribe = escribe + "?" + sepa; incompleto++; } index1 = index2+1;
&&
&&
&&
//visibilidad index2 = tmp.indexOf(sepa,index1); nue = tmp.substring(index1,index2); if ( !nue.equals("?") && !nue.equals("-9999.0") !nue.equals("N/A") ) { temp = Double.valueOf(nue); if ( (temp < 3) || (temp > 8) ) {
Página 33 de 37
&&
PREDICCIÓN METEOROLÓGICA
Inteligencia en redes de ordenadores
escribe = escribe + "?" + sepa; incompleto++; }else{ escribe = escribe + temp + sepa; } }else{ escribe = escribe + "?" + sepa; incompleto++; } index1 = index2+1; //direccion index2 = tmp.indexOf(sepa,index1); nue = tmp.substring(index1,index2); escribe = escribe + nue + sepa; index1 = index2+1;
9999.0")
&&
//velocidad index2 = tmp.indexOf(sepa,index1); nue = tmp.substring(index1,index2); if ( nue.equals("Calm") ) { escribe = escribe + "0" + sepa; } else if ( !nue.equals("?") && !nue.equals("!nue.equals("N/A") ) { temp = Double.valueOf(nue)*1.6092; tempe = Math.round(temp.floatValue()); if ( (tempe < 0) || (tempe > 40) ) { escribe = escribe + "?" + sepa; incompleto++; }else{ escribe = escribe + tempe + sepa; } }else{ escribe = escribe + "?" + sepa; incompleto++; } index1 = index2+1; //rafaga index2 = tmp.indexOf(sepa,index1); //de este dato pasamos porque siempre es index1 = index2+1; //precipitacion index2 = tmp.indexOf(sepa,index1); //de este dato pasamos porque siempre es N/A index1 = index2+1; //hechos index2 = tmp.indexOf(sepa,index1); nue = tmp.substring(index1,index2).replace('-','_'); if ( nue.equals("Lluvia_Granizo_Tormenta") || nue.equals("Granizo") || nue.equals("Granizo_Tormenta") || nue.equals("Nieve_Granizo") ) { nue = "?"; }else if ( nue.equals("Lluvia_Tormenta") ) { nue = "Tormenta"; }
Página 34 de 37
PREDICCIÓN METEOROLÓGICA
Inteligencia en redes de ordenadores
escribe = escribe + nue + sepa; index1 = index2+1; //condiciones index2 = tmp.length(); nue = tmp.substring(index1,index2).replace(' ','_'); if ( nue.equals("Desconocido") || (nue.length() == 0) || nue.equals("Granizo_Pequeño") || nue.equals("Leve_Caída_de_Granizo_Pequeño") || nue.equals("Granizo_Leve") || nue.equals("Nubes_Bajas_de_Polvo") || nue.equals("Caídas_de_Granizo") || nue.equals("Tormentas_con_Granizo") || nue.equals("Remolinos_de_Polvo") || nue.equals("Tormenta_Leve") || nue.equals("Humo") || nue.equals("Particulas_de_Nieve") || nue.equals("Nubes_de_Polvo") || nue.equals("Bruma_Helada_Leve") || nue.equals("Nube_en_Embudo") || nue.equals("Arena") ){ nue = "?"; }else if (nue.equals("Tormentas_y_Lluvia") || nue.equals("Tormentas_Leves_y_Lluvia") || nue.equals("Fuertes_Tormentas_y_Lluvia") ) { nue = "Tormenta"; }else if (nue.equals("Fuertes_Lluvias") || nue.equals("Abundantes_Lluvias")) { nue = "Lluvias"; }else if (nue.equals("Niebla_Leve") || nue.equals("Abundante_Niebla") || nue.equals("Neblina") ) { nue = "Niebla"; }else if (nue.equals("Llovizna_Helada_Leve") || nue.equals("Llovizna") || nue.equals("Llovizna_Leve") || nue.equals("Llovizna_Abundante") || nue.equals("Lluvia_Helada_Leve") ) { nue = "Lluvia_Leve"; }else if (nue.equals("Nevada_Leve") || nue.equals("Caidas_de_Nieve") || nue.equals("Abundante_Nieve") ) { nue = "Nieve"; }else if (nue.equals("Bancos_de_Bruma") || nue.equals("Bruma_Leve") || nue.equals("Bruma_Ligera") ) { nue = "Bruma"; } escribe = escribe + nue + sepa; condicioneshoy = nue; if (i==1) { diacont=diahoy; horacont=horahoy; }else{ horacont = horacont+1;
Página 35 de 37
PREDICCIÓN METEOROLÓGICA
Inteligencia en redes de ordenadores
if (horacont == 48) { horacont = 0; diacont = (diacont+1)%366; } }
//temperatura 1 hora antes if (horahoy == 0) { index = 46; }else if (horahoy == 1) { index = 47; }else{ index = horahoy-2; } escribe = escribe + temperatura24[index] + sepa; //temperatura 2 horas antes if (horahoy == 0) { index = 44; }else if (horahoy == 1) { index = 45; }else if (horahoy == 2) { index = 46; }else if (horahoy == 3) { index = 47; }else{ index = horahoy-4; } escribe = escribe + temperatura24[index] + sepa; //temperatura 24 horas antes escribe = escribe + temperatura24[horahoy] + sepa; //condiciones 24 horas antes escribe = escribe + condiciones24[horahoy]; temperatura24[horahoy] = temperaturahoy; condiciones24[horahoy] = condicioneshoy; if ( (horacont != horahoy)
||
(diacont != diahoy) )
{ if (diacont == diahoy) { for (int m=horacont; m < horahoy; m++) { temperatura24[m] = "?"; condiciones24[m] = "?"; } }else if ( (diahoy-diacont) > 1) { for (int m=0; m < 48; m++) { temperatura24[m] = "?"; condiciones24[m] = "?"; } }else{ for (int m=horacont; (m%48)