Diego Escalada López. Mario Ramos Benito. Inteligencia Redes de Comunicación. Minería de datos: Predicción Meteorológica. Escalada López, Diego Ramos Benito, Mario. 5º Ingeniería de Telecomunicación 1 Diego Escalada López. Mario Ramos Benito. Inteligencia Redes de Comunicación. Minería de datos: Predicción Meteorológica. 1. 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 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 este conjunto de datos meteorológicos en el aeropuerto de Madrid Barajas (código internacional: LEMD), desde el año 1996 al 2004, con las siguientes medidas cada media hora (pueden faltar medidas): • • • • • • • • • • • • 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 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 Los modelos pueden basarse en cualquier técnica entre las disponibles en Weka, incorporando las variables que se estimen oportunas entre las proporcionadas y haciendo uso de toda la información histórica que se crea conveniente, es decir, la matriz de minería de datos estaría compuesta por los valores de las variables seleccionadas en diferentes instantes de tiempo. 2 Diego Escalada López. Mario Ramos Benito. Inteligencia Redes de Comunicación. Minería de datos: Predicción Meteorológica. 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 (3955 ficheros). 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 Pero se ha hecho uso de los datos facilitados en el fichero lemb.zip que contiene los registros en el siguiente formato: 1996,07,01,4,75.2,50.0,41,30.01,-9999.0,Calm,Calm,-,N/A,?,Despejado 1996,07,01,5,75.2,50.0,41,30.01,-9999.0,Calm,Calm,-,N/A,?,Despejado 1996,07,01,6,73.4,48.2,41,30.01,-9999.0,Este,1.2,-,N/A,?,Despejado 1996,07,01,7,73.4,48.2,41,30.01,-9999.0,Este,1.2,-,N/A,?,Despejado 1996,07,01,8,69.8,48.2,46,29.98,-9999.0,Norte,3.5,-,N/A,?,Despejado 1996,07,01,9,69.8,48.2,46,29.98,-9999.0,Norte,3.5,-,N/A,?,Despejado 1996,07,01,10,66.2,41.0,40,29.98,-9999.0,Calm,Calm,-,N/A,?,Despejado 1996,07,01,11,66.2,41.0,40,29.98,-9999.0,Calm,Calm,-,N/A,?,Despejado En cada fichero con código METAR se tiene la información de un día. No se han utilizado todos los datos de todos los días ni de todas las horas, ya que mucha de esta información no estaba disponible. Por tanto se ha realizado una limpieza previa de los datos. Las fases del proyecto son: • • • Filtrado de datos Î El formato de los datos contenidos en la fuente de datos nunca es el idóneo. Mediante el preprocesado, se filtran los datos (de forma que se eliminan valores incorrectos, no válidos, desconocidos. Selección de variables Î Aún después de haber sido preprocesados, en la mayoría de los casos se dispone de una cantidad de datos excesiva. La selección de características reduce el tamaño de los datos eligiendo las variables más influyentes en el problema, sin apenas sacrificar la calidad del modelo de conocimiento obtenido del proceso de minería. Se busca que las variables elegidas estén lo menos correladas posibles y que representen de la mejor manera el escenario del problema. Algoritmos de extracción del conocimiento Î Mediante una técnica de minería de datos, se obtiene un modelo conocimiento, que representa patrones de comportamiento observados en los valores de las variables del problema o relaciones de asociación entre dichas variables. También pueden 3 Diego Escalada López. Mario Ramos Benito. • Inteligencia Redes de Comunicación. Minería de datos: Predicción Meteorológica. usarse varias técnicas a la vez para generar distintos modelos, aunque generalmente cada técnica obliga a un preprocesado diferente de los datos. Interpretación y evaluación: Una vez obtenido el modelo, se debe proceder a su validación, comprobando que las conclusiones que arroja son válidas y suficientemente satisfactorias. En el caso de haber obtenido varios modelos mediante el uso de distintas técnicas, se deben comparar los modelos en busca de aquel que se ajuste mejor al problema. 2. Desarrollo de la práctica. Uno de los aspectos mas tediosos de la práctica es el preprocesado de los datos en función de unos criterios descritos anteriormente y poner los datos en el formato con el que trabaja Weka (ficheros .arff). Es importante notar que trabajaremos con dos tipos de ficheros .arff, uno de entrenamiento (train) sobre los que se ha ajustado los algoritmos de predicción y estimación de Weka que contiene los datos desde el año 1994 hasta 2003; y otro fichero arff el cual contiene los datos de validación (test) del año 2004 sobre los que se validarán los resultados obtenidos. Gran trabajo del preprocesado de los datos y la conformación del fichero .arff se ha realizado a través de un programa que parseaba el flujo de datos originales. Este programa entre otras cosas elminina en primer lugar los registros con datos erróneos. Por otra parte se ha realizado de manera manual el cambio de ciertos valores de atributos para que Weka los pueda entender. Una vez que se tenían todos los registros del fichero en un formato legible para Weka, se han suprimido la cuarta parte de los registros de manera equiespaciada dado que se disponía de una cantidad ingente de datos cuya información en principio no creemos que aporte algo relevante al modelo. A continuación se elegirán los atributos con los que se realizarán las secuencias de entrenamiento, test y la posterior validación. Este procedimiento es de gran importancia pues se tendrán que elegir los atributos que mejor caractericen al problema. Se elegirán aquellos atributos que presenten una mayor incorrelación entre ellos. Está elección se hara de manera plenamente subjetiva ya que disponemos de una herramienta para conocer la correlación entre dos atributos. Los atributos que definen el modelo son los siguientes: Año. Mes. Dia. Hora. 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. Temperatura en 1 hora. Temperatura en 24 horas. 4 Diego Escalada López. Mario Ramos Benito. Inteligencia Redes de Comunicación. Minería de datos: Predicción Meteorológica. Condiciones en 24 horas. Hay que a notar que a cada registro del fichero original se le han añadido tres nuevos campos al final: Temperatura en 1 hora, Temperatura 24 horas y Condiciones 24 horas. Finalmente los atributos que se ha elegido para realizar las predicciones son: Temperatura. Humedad. Presión. Condiciones. Temperatura en 1 hora. Temperatura en 24 horas. Condiciones en 24 horas. 3. Algortimos empleados. Los algoritmos escogidos para realizar la clasificación han sido: 3.1 Decision 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. 5 Diego Escalada López. Mario Ramos Benito. Inteligencia Redes de Comunicación. Minería de datos: Predicción Meteorológica. 3.1.1 Predicción temperatura en 1 hora. === Run information === Scheme: weka.classifiers.rules.DecisionTable -X 1 -S 5 Relation: datos_weka_levs_train_temp_1H_2Antweka.filters.unsupervised.attribute.Remove-R1-4,6,9-14 Instances: 7964 Attributes: 7 TemperaturaF Humedad PresionIn Conditions TemperaturaF_+1 TemperaturaF_+24 Conditions_+24 Test mode: split 90% train, remainder test === Classifier model (full training set) === Decision Table: Number of training instances: 7964 Number of Rules : 36 Non matches covered by Majority class. Best first search for feature set, terminated after 5 non improving subsets. Evaluation (for feature selection): CV (leave one out) Feature set: 1,5,6 Time taken to build model: 1.74 seconds === Evaluation on test split === === Summary === Correlation coefficient Mean absolute error Root mean squared error Relative absolute error Root relative squared error Total Number of Instances 0.959 2.4081 3.156 27.7543 % 28.347 % 797 3.1.2 Predicción temperatura en 24 horas. === Run information === Scheme: weka.classifiers.rules.DecisionTable -X 1 -S 5 Relation: datos_weka_levs_train_temp_1H_2Antweka.filters.unsupervised.attribute.Remove-R1-4,6,9-14 Instances: 7964 Attributes: 7 TemperaturaF Humedad PresionIn Conditions TemperaturaF_+1 TemperaturaF_+24 Conditions_+24 Test mode: split 90% train, remainder test === Classifier model (full training set) === Decision Table: Number of training instances: 7964 Number of Rules : 152 Non matches covered by Majority class. Best first search for feature set, terminated after 5 non improving subsets. Evaluation (for feature selection): CV (leave one out) Feature set: 1,5,6,7 Time taken to build model: 1.44 seconds === Evaluation on test split === === Summary === Correlation coefficient Mean absolute error Root mean squared error Relative absolute error Root relative squared error Total Number of Instances 0.872 4.0535 5.3774 47.3396 % 48.9952 % 797 6 Diego Escalada López. Mario Ramos Benito. Inteligencia Redes de Comunicación. Minería de datos: Predicción Meteorológica. 3.1.3 Predicción condiciones en 24 horas. === Run information === Scheme: weka.classifiers.rules.DecisionTable -X 1 -S 5 Relation: datos_weka_levs_train_temp_1H_2Antweka.filters.unsupervised.attribute.Remove-R1-4,6,9-14 Instances: 7964 Attributes: 7 TemperaturaF Humedad PresionIn Conditions TemperaturaF_+1 TemperaturaF_+24 Conditions_+24 Test mode: split 90% train, remainder test === Classifier model (full training set) === Decision Table: Number of training instances: 7964 Number of Rules : 372 Non matches covered by Majority class. Best first search for feature set, terminated after 5 non improving subsets. Evaluation (for feature selection): CV (leave one out) Feature set: 2,3,4,6,7 Time taken to build model: 3.27 seconds === Evaluation on test split === === Summary === Correctly Classified Instances 333 Incorrectly Classified Instances 464 Kappa statistic 0.2054 Mean absolute error 0.033 Root mean squared error 0.1313 Relative absolute error 90.0383 % Root relative squared error 97.1535 % Total Number of Instances 797 41.7817 % 58.2183 % 3.2 Regresión Lineal. 7 Diego Escalada López. Mario Ramos Benito. Inteligencia Redes de Comunicación. Minería de datos: Predicción Meteorológica. 3.2.1 Predicción temperatura en 1 hora. === Run information === Scheme: weka.classifiers.functions.LinearRegression -S 0 -R 1.0E-8 Relation: datos_weka_levs_train_temp_1H_2Antweka.filters.unsupervised.attribute.Remove-R1-4,6,9-14 Instances: 7964 Attributes: 7 TemperaturaF Humedad PresionIn Conditions TemperaturaF_+1 TemperaturaF_+24 Conditions_+24 Test mode: split 90% train, remainder test === Classifier model (full training set) === Linear Regression Model Time taken to build model: 94.08 seconds === Evaluation on test split === === Summary === Correlation coefficient Mean absolute error Root mean squared error Relative absolute error Root relative squared error Total Number of Instances 0.9787 1.6306 2.2854 18.7938 % 20.5268 % 797 3.2.2 Predicción temperatura en 24 horas. === Run information === Scheme: weka.classifiers.functions.LinearRegression -S 0 -R 1.0E-8 Relation: datos_weka_levs_train_temp_1H_2Antweka.filters.unsupervised.attribute.Remove-R1-4,6,9-14 Instances: 7964 Attributes: 7 TemperaturaF Humedad PresionIn Conditions TemperaturaF_+1 TemperaturaF_+24 Conditions_+24 Test mode: split 90% train, remainder test === Classifier model (full training set) === === Evaluation on test split === === Summary === Correlation coefficient Mean absolute error Root mean squared error Relative absolute error Root relative squared error Total Number of Instances 0.8636 3.9785 5.5405 46.4631 % 50.4817 % 797 8 Diego Escalada López. Mario Ramos Benito. Inteligencia Redes de Comunicación. Minería de datos: Predicción Meteorológica. 3.2.3 Predicción condiciones en 24 horas. No se puede implementar ya que el atributo a clasificar ha de ser numérico. 3.3 IBK. Es un algoritmo de clasificación basado observar de que tipo son los k vecinos mas próximos de la muestra a clasificar. En nuestro caso se ha tomado la determinación de tomar k=5 vecinos como referencia. 3.3.1 Predicción temperatura en 1 hora. === Run information === Scheme: weka.classifiers.lazy.IBk -K 5 -W 0 Relation: datos_weka_levs_train_temp_1H_2Antweka.filters.unsupervised.attribute.Remove-R1-4,6,9-14 Instances: 7964 Attributes: 7 TemperaturaF Humedad PresionIn Conditions TemperaturaF_+1 TemperaturaF_+24 Conditions_+24 Test mode: split 90% train, remainder test === Classifier model (full training set) === IB1 instance-based classifier using 5 nearest neighbour(s) for classification Time taken to build model: 0.03 seconds === Evaluation on test split === === Summary === Correlation coefficient Mean absolute error Root mean squared error Relative absolute error Root relative squared error Total Number of Instances 0.9476 2.405 3.5757 27.7185 % 32.1165 % 797 9 Diego Escalada López. Mario Ramos Benito. Inteligencia Redes de Comunicación. Minería de datos: Predicción Meteorológica. 3.3.2 Predicción temperatura en 24 horas. === Run information === Scheme: weka.classifiers.lazy.IBk -K 5 -W 0 Relation: datos_weka_levs_train_temp_1H_2Antweka.filters.unsupervised.attribute.Remove-R1-4,6,9-14 Instances: 7964 Attributes: 7 TemperaturaF Humedad PresionIn Conditions TemperaturaF_+1 TemperaturaF_+24 Conditions_+24 Test mode: split 90% train, remainder test === Classifier model (full training set) === IB1 instance-based classifier using 5 nearest neighbour(s) for classification Time taken to build model: 0.02 seconds === Evaluation on test split === === Summary === Correlation coefficient Mean absolute error Root mean squared error Relative absolute error Root relative squared error Total Number of Instances 0.8667 4.1186 5.4932 48.0997 % 50.0505 % 797 3.3.3 Predicción condiciones en 24 horas. === Run information === Scheme: weka.classifiers.lazy.IBk -K 5 -W 0 Relation: datos_weka_levs_train_temp_1H_2Antweka.filters.unsupervised.attribute.Remove-R1-4,6,9-14 Instances: 7964 Attributes: 7 TemperaturaF Humedad PresionIn Conditions TemperaturaF_+1 TemperaturaF_+24 Conditions_+24 Test mode: split 90% train, remainder test === Classifier model (full training set) === IB1 instance-based classifier using 5 nearest neighbour(s) for classification Time taken to build model: 0.02 seconds === Evaluation on test split === === Summary === Correctly Classified Instances 312 39.1468 % Incorrectly Classified Instances 485 60.8532 % Kappa statistic 0.1895 Mean absolute error 0.0319 Root mean squared error 0.1378 Relative absolute error 87.0378 % Root relative squared error 102.0112 % Total Number of Instances 797 10 Diego Escalada López. Mario Ramos Benito. Inteligencia Redes de Comunicación. Minería de datos: Predicción Meteorológica. 3.4 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. 3.4.1 Predicción temperatura en 1 hora. === Run information === Scheme: weka.classifiers.trees.REPTree -M 2 -V 0.0010 -N 3 -S 1 -L -1 Relation: datos_weka_levs_train_temp_1H_2Antweka.filters.unsupervised.attribute.Remove-R1-4,6,914 Instances: 7964 Attributes: 7 TemperaturaF Humedad PresionIn Conditions TemperaturaF_+1 TemperaturaF_+24 Conditions_+24 Test mode: split 90% train, remainder test === Classifier model (full training set) === Size of the tree : 2481 Time taken to build model: 0.97 seconds === Evaluation on test split === === Summary === Correlation coefficient Mean absolute error Root mean squared error Relative absolute error Root relative squared error Total Number of Instances 0.9763 1.7199 2.4125 19.8224 % 21.6686 % 797 11 Diego Escalada López. Mario Ramos Benito. Inteligencia Redes de Comunicación. Minería de datos: Predicción Meteorológica. 3.4.2 Predicción temperatura en 24 horas. === Run information === Scheme: weka.classifiers.trees.REPTree -M 2 -V 0.0010 -N 3 -S 1 -L -1 Relation: datos_weka_levs_train_temp_1H_2Antweka.filters.unsupervised.attribute.Remove-R14,6,9-14 Instances: 7964 Attributes: 7 TemperaturaF Humedad PresionIn Conditions TemperaturaF_+1 TemperaturaF_+24 Conditions_+24 Test mode: split 90% train, remainder test === Classifier model (full training set) === Size of the tree : 1886 Time taken to build model: 1.39 seconds === Evaluation on test split === === Summary === Correlation coefficient Mean absolute error Root mean squared error Relative absolute error Root relative squared error Total Number of Instances 0.8581 4.0835 5.6617 47.6901 % 51.5859 % 797 3.4.3 Predicción condiciones en 24 horas. === Run information === Scheme: weka.classifiers.trees.REPTree -M 2 -V 0.0010 -N 3 -S 1 -L -1 Relation: datos_weka_levs_train_temp_1H_2Antweka.filters.unsupervised.attribute.Remove-R1-4,6,9-14 Instances: 7964 Attributes: 7 TemperaturaF Humedad PresionIn Conditions TemperaturaF_+1 TemperaturaF_+24 Conditions_+24 Test mode: split 90% train, remainder test === Classifier model (full training set) === Size of the tree : 630 Time taken to build model: 3.83 seconds === Evaluation on test split === === Summary === Correctly Classified Instances 322 Incorrectly Classified Instances 475 Kappa statistic 0.1983 Mean absolute error 0.0327 Root mean squared error 0.1343 Relative absolute error 89.2027 % Root relative squared error 99.3603 % Total Number of Instances 797 40.4015 % 59.5985 % 12 Diego Escalada López. Mario Ramos Benito. Inteligencia Redes de Comunicación. Minería de datos: Predicción Meteorológica. 4. Resultados obtenidos y conclusiones. A continuación se muestran en una tabla los resultados obtenidos. 4.1. Predicción temperatura 1 hora. Algoritmo Decision table Regresión Lineal IBK REPTree Tiempo en generar el modelo (seg) 1.74 94.08 0.03 0.97 Root mean square error 3.156 2.2854 3.5757 2.4125 Relative absolute error (%) 27.7543 18.7938 27.7185 19.8224 Visto los resultados el modelo que proporciona el mejor resultado es el de regresión lineal dado que es el que presenta el menor relative absolute error. El algoritmo REPTree proporciona un resultado muy parejo al de regresión lineal y sin embargo el tiempo que tarda en generar el modelo es mucho menor que el caso de regresión lineal por lo que si tuviésemos que elegir un modelo de los cuatro simulados nos quedariamos con REPTree ya que los otros dos restantes, Decision Table e IBK proporcionan unos resultados con un error mayor. 4.2. Predicción temperatura 24 horas. Algoritmo Decision table Regresión Lineal IBK REPTree Tiempo en generar el modelo (seg) 1.44 0.02 1.39 Root mean square error 5.3774 5.5405 5.4932 5.6617 Relative absolute error (%) 47.3396 46.4631 48.0997 47.6901 En este caso la tabla muestra que de nuevo el algoritmo que mejor resultados ofrece es el de regresión lineal. Sin embargo, la diferencia con respecto a los otros algortimos es mínima y aunque en la tabla no se muestra (ya que no lo generó el programa) el tiempo en generar el modelo es mucho mayor comparado con el resto de los caso por lo que de tomar un modelo se podría elegir el REPTree o Decision Table ya que proporcionan resultados muy parejos y el modelo se tarda poco en generar. 4.3. Predicción condiciones 24 horas. Algoritmo Tiempo en generar el modelo (seg) Root mean square error Relative absolute error (%) Decision table IBK REPTree 3.27 0.02 3.83 0.1313 0.1378 0.1343 90.0383 87.0378 89.2027 Instancias mal clasificadas (%) 58.2183 60.8532 59.5985 Por último, se tiene que el algoritmo que resulta mejor para predecir las condiciones meteorológicas es el decision table. Hemos tomado como criterio el 13 Diego Escalada López. Mario Ramos Benito. Inteligencia Redes de Comunicación. Minería de datos: Predicción Meteorológica. porcentaje de de las instancias mal clasificadas. A pesar de todo los otros dos modelos proporcionan unos resultados muy parecidos a decision table por lo que prácticamente daría igual elegir cualesquiera de ellos. A nivel global podemos decir que de los algoritmos probados la regresión lineal es la que mejor funciona con el inconveniente de que es un modelo que tarda mas en generarse que el resto de los probados. Esto es norma general, los mejores clasificadores tienen un alto coste computacional pero a cambio proporcionan unos resultados bastante fiables. En un principio los clasificadores basados en redes neuronales son los más potentes pero tienen una gran carga computacional. Si queremos rapidez y una convergencia rápida optaremos por modelos como el IBK que se basa en la clasificación atendiendo a la localización de las k muestras más próximas. Como comentario final nos gustaría señalar que nos hubiera gustado probar con más modelos y observar los pros y contras de unos respecto de los otros. Sin embargo esta labor no nos ha sido posible básicamente por falta de tiempo. El preprocesado, limpieza y filtración de los datos así como el convertirlos al formato .arff legible para Weka nos ha supuesto quebraderos de cabeza y el emplear una gran cantidad de tiempo. 5. Anexo Se proporciona como anexo el código java Parsear.java con el que se ha realizado parte del parseado del flujo de datos. import import import import java.io.*; java.lang.*; java.math.*; java.util.*; class Parsear{ public static void main (String arg[]){ try{ BufferedReader lector = new BufferedReader(new FileReader(arg[0])); BufferedWriter escritor = new BufferedWriter(new FileWriter(arg[1])); String linea=""; char c; int cont=0; int coma=0; boolean fallo=false; while ((linea = lector.readLine()) != null){ cont++; fallo=false; coma=0; if(cont%2==0){ fallo=true; 14 Diego Escalada López. Mario Ramos Benito. Inteligencia Redes de Comunicación. Minería de datos: Predicción Meteorológica. } for(int i=0;i<linea.length();i++){ c=linea.charAt(i); if(c==','){ coma++; if(coma==4 || coma==5 || coma==7 || coma==14 || coma==15 || coma==16 || coma==17){ char sig=linea.charAt(i+1); if (sig=='?'){ fallo=true; break; } } } } if (coma!=17){ fallo=true; } if (fallo==false){ try{ escritor.write(linea); escritor.newLine(); } catch(Exception e){ e.printStackTrace(); System.out.println("Error al escribir la linea "+linea+" en el fichero."); } } } escritor.flush(); escritor.close(); } catch(Exception e){ System.err.println("Error al leer de fichero"); System.exit(-0); } } } 15 Diego Escalada López. Mario Ramos Benito. Inteligencia Redes de Comunicación. Minería de datos: Predicción Meteorológica. 16