Evaluación de Modelos para Predicción Meteorológica

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Evaluación de Modelos para Predicción Meteorológica"

Transcripción

1 Trabajo de Inteligencia en redes de comunicaciones Evaluación de Modelos para Predicción Meteorológica 5º I. Telecomunicación Autores: Aurora Agudo de Carlos Juan Carlos Alonso Bayal Ruth Santana Tejero Universidad Carlos III de Madrid

2 ÍNDICE 1. Introducción Métodos empleados Decisión Table REPTree KStar LMS MultilayerPerceptron SMOreg SMO J Preprocesado de los datos Resultados obtenidos Predicción de temperatura a 1 hora Predicción de temperatura a 24 horas Predicción de las condiciones meteorológicas Conclusiones Bibliografía Anexo I Anexo II

3 1. Introducción El objetivo es desarrollar un sistema real de predicción meteorológica para la ciudad de Madrid, utilizando técnicas de aprizaje automático para obtener modelos de caracterización y predicción, empleando como herramienta la plataforma Weka. 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 Es decir, con la información disponible hasta el momento (valores de las variables de entrada en la hora H, H-1, H-2, etc.) hay que predecir el valor de la variable de salida (temperatura o condiciones meteorológicas) en H+1 y H+24. Los modelos pueden basarse en cualquier técnica entre las disponibles en Weka, incorporando las variables que se estimen oportunas entre las proporcionadas y hacio uso de toda la información histórica que se crea conveniente. 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. Se partirá de un conjunto de datos meteorológicos en dos localizaciones (Barajas y Cuatro Vientos) desde el año 1996 a la actualidad, 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 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... 3

4 En los datos no se ha realizado ningún tipo de procesado ni limpieza de datos, por lo que como primer paso es necesario un trabajo de limpieza y preprocesado de datos, previo al estudio de variables que conducirá a la obtención de la matriz (o matrices) de minería de datos. En particular hay que tener en cuenta el hecho de que faltan medidas para algunas horas, por lo que la matriz de minería trá huecos (valores incorrectos o inexistentes) en esos instantes de tiempo, que habrá que tratar apropiadamente (eliminar esos registros, rellenarlos con valores medios o extrapolaciones, etc.). Como conjunto de entrenamiento se utilizará la información hasta el 31/12/2003 (incluida) y los modelos se evaluarán con la información de El criterio de evaluación de sistemas será: en temperatura: el error relativo medio, calculado como: ERROR = media( abs(tpredicha-treal)/treal ) en condiciones meteorológicas: en proporción de aciertos: ERROR = cuenta(aciertos)/ (cuenta(aciertos) + cuenta(fallos)) Además puede resultar muy útil establecer un primer modelo de segmentación para distinguir situaciones meteorológicas particulares (invierno/verano, "tiempo bueno"/"tiempo malo", "tiempo mejorando"/"tiempo estable"/"tiempo empeorando", etc.) para después desarrollar modelos de predicción más ajustados a cada una de esas situaciones, y, por tanto, con menos error. 2. Métodos empleados 2.1. 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 REPTree Es un método de aprizaje 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 partio las correspondientes instancias. 4

5 2.3. KStar K* es un clasificado basado en instancias, esto significa que la clasificación de una instancia está basada en la clasificación de instancias de entrenamiento similares, determinadas por alguna función de similitud. Se diferencia de otros aprizajes basados en lo mismo en que usa una función de distancia basada en entropía LMS Implementa una regresión lineal LMS utilizando la clasificación por regresión lineal disponible en el WEKA para formar predicciones. Las funciones LMS 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 MultilayerPerceptron Es un clasificador que usa retropropagación para clasificar instancias. Esta red puede construirse a mano, mediante un algoritmo o mediante ambos. Además puede ser monitorizada y modificada durante el tiempo de entrenamiento. Los nodos en esta red son todo sigmoides, excepto cuando la clase es numérica, en cuyo caso los nodos de salida son unidades lineales SMOreg Implementa el algoritmo de optimización de secuencia mínima desarrollado por John C. Platts pra 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.) 2.7. 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 J48 Se trata de una implementación propia de WEKA para el algoritmo C4.5, un algoritmo basado en clasificación por árbol de decisión. El algoritmo ofrece la posibilidad de poder parar antes de alcanzar las hojas en cada subárbol; esto dará lugar a árboles menos refinados, por decirlo de alguna forma, y ayudará a evitar el overfitting. 5

6 3. Preprocesado de los datos Datos de Partida El preprocesado de datos en un problema de datamining engloba la recolección la información, extrayo lo que en realidad es relevante para poder enfrentarnos a nuestro problema. Hay que limpiar la información quitando ruidos, redundancias; analizando cuál es la información de la que disponemos y qué pretemos obtener a partir de ella. En nuestro caso, la información de partida estaba constituida por las medidas tomadas en dos estaciones meteorológicas de Madrid durante el mismo intervalo de tiempo, desde 1994 hasta Observando los ficheros proporcionados, pudimos comprobar que en realidad no todos los ficheros contenían datos; exactamente, los ficheros desde 1994 hasta el 30 de Junio de 1996 estaban vacíos (para ambas estaciones meteorológicas). Por lo que, para el desarrollo de nuestro problema tuvimos en cuenta los ficheros desde el 1 de Julio de 1996 hasta el 31 de Octubre de 2004, un total de 6090 ficheros. Estos ficheros estaban escritos en HTML, formato que Weka no es capaz de procesar. HoraCEST,TemperaturaF,Nivel de RocíoF,Humedad,PresiónIn,VisibilidadMPH,Wind Direction,Velocidad del vientomph,ráfagamph,precipitaciónin,hechos,conditions<br> 2:00 AM,75.2,50.0,41,30.01, ,Calm,Calm,-,N/A,,Despejado<BR>2:30 AM,75.2,50.0,41,30.01, ,Calm,Calm,-,N/A,,Despejado<BR>3:00 AM,73.4,48.2,41,30.01, ,Este,1.2,-,N/A,,Despejado<BR>3:30 AM,73.4,48.2,41,30.01, ,Este,1.2,-,N/A,,Despejado<BR>4:00 AM,69.8,48.2,46,29.98, ,Norte,3.5,- Figura 1.- Datos en formato HTML disponibles (fichero ) Datos legibles en Weka Para poder leer los datos en Weka y comprobar qué era de lo que partíamos, usamos un programa en Java que nos permitiera sustituir las etiquetas <BR> por un retorno de carro ( \n ). Transformamos los datos a un formato que Weka sí era capaz de interpretar; teníamos que guardar cada fichero con la extensión.csv. Fue en esta fase donde verificamos que disponíamos de un fichero para cada día del calario correspondiente al intervalo de tiempo anteriormente señalado. Automatizando el proceso de preprocesado Tras eso, al observar los datos que contenía cada fichero, comprobamos que tenía medidas de temperatura, rocío, humedad, presión, visibilidad, dirección del viento, velocidad del viento, ráfaga, nivel de precipitación, eventos acontecidos y condiciones meteorológicas tomadas aproximadamente cada 30 minutos. 6

7 Hora,Temperatura,Nivel de Rocio,Humedad,Presión,Visibilidad,Dirección del Viento,Velocidad del Viento,Ráfaga,Precipitación,Eventos,Condiciones 2:00 AM,75.2,50.0,41,30.01, ,Calm,Calm,-,N/A,,Despejado 2:30 AM,75.2,50.0,41,30.01, ,Calm,Calm,-,N/A,,Despejado 3:00 AM,73.4,48.2,41,30.01, ,Este,1.2,-,N/A,,Despejado 3:30 AM,73.4,48.2,41,30.01, ,Este,1.2,-,N/A,,Despejado 4:00 AM,69.8,48.2,46,29.98, ,Norte,3.5,-,N/A,,Despejado Figura 2.- Datos transformados al formato CSV (fichero csv) En el ejemplo mostrado anteriormente se comprueba que no todos los ficheros disponían de datos en toda la franja horaria de un día de 0:00 a 23:30. Para poder preprocesar de forma automática los datos, decidimos registrar las medidas de un día de 30 en 30 minutos. Para ello tuvimos que añadir líneas con las horas que faltaban, eliminar medidas redundantes tomadas a la misma hora, el mismo día y en la misma estación meteorológica, así como las medidas tomadas en instantes de tiempo no correspondientes a los instantes que queríamos almacenar. Para eliminar la redundancia, tan sólo tuvimos en cuenta la primera medida que aparecía para dicho intervalo. Las medidas en franjas horarias distintas a las previstas no se tuvieron en cuenta. Todo esto fue posible a un array de control como el que se muestra en la siguiente figura que almacenaba qué horas eran las que ya se habían leído. Suponio que los datos estaban ordenados cronológicamente, al leer una línea, leer los datos de un intervalo de tiempo determinado, si en el array de control existían elementos previos marcados como no leídos, se interpretaba que el fichero no contenía dichos datos y había que añadir una línea vacía (atributos desconocidos). En esta fase de preprocesado fue cuando añadimos un nuevo atributo, la fecha del fichero que estábamos leyo en ese momento. La importancia de este parámetro se explicará posteriormente en este documento. Líneas vacías Línea leída 00:00 00:30 01:00 01:30 02:00 02:30 23:00 23:30 Algunas de las medidas que contenía el fichero indicaban que era un valor desconocido. El formato general de dicho valor era a través de un guión bajo _, aunque el parámetro rocío tenía un valor cuando no se conocía su valor, así como en eventos producidos cuando no había nada que escribir podía aparecer la siguiente cadena N/A. Estos valores desconocidos los sustituimos por el siguiente símbolo?, el cuál Weka interpretaba como valor desconocido. 7

8 Para poder crear la matriz de minería de datos debíamos tener los datos de todos los días en un mismo fichero. Este fue el siguiente paso a llevar a cabo y para poder distinguir entre todos los datos de los que disponíamos fue por lo que añadimos el campo fecha, de tal modo que para cada estación meteorológica teníamos un fichero con todos las medidas tomadas, donde cada una se identificaba a partir del par < fecha, hora >. Cada fichero contenía 3045*48 = líneas. Mezclado e Interpolación A fin de obtener una mejor aproximación a nuestro problema, predecir la temperatura y las condiciones meteorológicas en Madrid, decidimos mezclar los datos del siguiente modo: - para las medidas de temperatura, rocío, humedad, presión, visibilidad, velocidad del viento, ráfaga y nivel de precipitación, parámetros numéricos: tomamos la media de ambos datos; en caso de que uno de los valores fuera desconocido se tomaba el valor conocido. - para las medidas de dirección del viento, eventos acontecidos y condiciones meteorológicas, constituidos por cadenas, tomamos uno de los valores escogido aleatoriamente. Una vez realizada la mezcla de ambos ficheros, usamos un filtro interpolador para sustituir datos desconocidos por datos aproximados. Cuando un dato era desconocido, comprobamos si el registro anterior y el registro posterior de dicho parámetros no eran desconocidos; en tal caso, sustituíamos el valor desconocido usando medias en caso de datos numéricos o escogio aleatoriamente si el parámetro era una cadena, como en el caso de la mezcla, a partir del dato anterior y el dato posterior. Vector de Parámetros El vector de parámetros escogido para formar la matriz de minería es, para cada uno los problemas a predecir, distinto. Para su elección se han considerado los siguientes puntos: A mayor número de parámetros, obtenemos una selección más precisa. Según [1], los parámetros importantes para predecir temperatura y condiciones meteorológicas son la temperatura, la presión, las condiciones meteorológicas y el nivel de precipitación. Es conveniente tener un registro temporal para valorar la evolución de los parámetros. Un número elevado de parámetros produce un elevado coste computacional, a veces inabordable por ordenadores personales. Buscando una situación de compromiso entre el registro temporal y el número de parámetros, decidimos usar valores medios que nos permitieran tener en cuenta la evolución de los registros anteriores. 8

9 Parámetros que se mantienen constantes no influyen en nuestra decisión, este es el caso de la presión atmosférica, aunque en un principio es un parámetro importante a tener en cuenta como ya hemos comentado anteriormente, en nuestros datos siempre se mantiene constante: las estaciones base están situadas aproximadamente a la misma altura. Parámetros cuyo valor en la mayoría de los registros es desconocido no es útil para predecir, tan sólo proporcionan excepciones que en muchos casos inducen a aumentar el error obtenido. De este modo, tenio en cuenta los valores que obtuvimos descartamos las medidas de visibilidad, ráfaga, nivel de precipitación y eventos acontecidos. Parámetros que toman valores incongruentes no son válidos. Esto ocurre en la medida de dirección del viento, donde a veces se introducen valores numéricos en vez de una cadena indicando la dirección, algo que carece de interpretación. Vector de parámetros para predecir la temperatura con un margen de 1h. Para predecir la temperatura con un margen de una hora hemos usado los parámetros de temperatura, rocío, velocidad del viento y condiciones meteorológicas de los tres registros anteriores, es decir de la hora y media anterior, así como los valores medios de temperatura de las últimas 12 horas tomados de 3 en 3 horas. Hemos de añadir también la temperatura a predecir y la fecha. Este último parámetro nos servirá para una fase posterior de preprocesado que explicaremos a continuación. Vector de parámetros para predecir la temperatura con un margen de 24 h. Predecir la temperatura con un margen de 24 horas parece en un principio un ejercicio más complicado de abordar, por ello hemos usado un vector de parámetros algo más complejo. Hemos utilizado las siguientes medidas de los cinco registros anteriores: temperatura, rocío y velocidad del viento. También hemos añadido los valores medios de temperatura de las 36 horas anteriores tomadas de 12 en 12 horas. Al igual que en el caso anterior hemos añadido la temperatura a predecir y la fecha. Vector de parámetros para predecir las condiciones meteorológicas con un margen de 24 h. Predecir las condiciones meteorológicas con un margen de 24 horas es un problema de complejidad mayor, ya que el uso de cadenas de caracteres tanto en los parámetros como en el dato a predecir induce a algoritmos de clasificación más costosos y complejos computacionalmente. Por eso a parte de los parámetros tomados anteriormente para el problema de la temperatura con un margen de 24 horas hemos añadido también las condiciones meteorológicas de esos cinco registros anteriores. 9

10 Segmentación En los requisitos de este trabajo se imponía que para evaluar los distintos algoritmos de clasificación había que dividir los datos en un conjunto de entrenamiento y un conjunto de validación. El conjunto de validación debía corresponder a la predicción de la temperatura o de las condiciones meteorológicas del año 2004; por lo que el conjunto de entrenamiento debe estar constituido por los datos anteriores. Para crear estos dos conjuntos usamos el campo fecha en cada una de las matrices de minería creadas, una para cada problema de predicción. Por problemas de memoria de nuestros ordenadores, nos vimos obligados a segmentar los datos en función de las estaciones del año: primavera, verano, otoño e invierno, especializando de este modo aún más los clasificadores a evaluar. Para hacer esta división usamos el mes del año del parámetro fecha de cada fila de la matriz de minería. La segmentación fue según se muestra en la siguiente tabla: Grupo asignado Mes Invierno -01- ; -02- ; -03- Primavera -04- ; -05- ; -06- Verano -07- ; -08- ; -09- Otoño -10- ; -11- ; -12- Escribir matriz en fichero A la hora de almacenar en fichero, ya no tuvimos en cuenta el parámetro fecha porque no nos era útil. Además, tampoco tuvimos en cuenta las filas cuyo valor predecir era desconocido (? ) porque carecía de sentido. Debido a problemas de memoria, nos vimos también obligados a eliminar todos los datos que tuvieran algún parámetro desconocido. Aún con esas, los ficheros de entrenamiento, seguían sio demasiado grandes por lo que escogimos filas alternadas para reducir el tamaño de este. Tenio en cuenta esto, mostramos el número de datos que en un principio procesaríamos y los que al final procesamos: Fichero de entrenamiento: Invierno Primavera Verano Otoño Temperatura con un margen de 1h. Líneas Iniciales Líneas Finales Líneas Iniciales Líneas Finales Líneas Iniciales Líneas Finales Líneas Iniciales Líneas Finales Entrenamiento Validación

11 Temperatura con un margen de 24 h. Condiciones con un margen de 24 h. Entrenamiento Validación Entrenamiento Validación Cabe comentar que se cumple que aproximadamente que los datos de validación son aproximadamente un 20 % del conjunto de datos total y los datos de entrenamiento constituyen el 80 %, división que se realiza habitualmente en estos problemas de predicción. Un comentario de lo que a procesado de información se refiere, es que la mitad de él se ha realizado en Java y la otra mitad en MatLab debido a que JVM no poseía memoria suficiente como para mezclar ambos ficheros. A partir del filtro mezclador se realizó todo el preprocesado con MatLab. Al final de la memoria incluimos un anexo con todo el código utilizado. 11

12 4. Resultados obtenidos 4.1. Predicción de temperatura a 1 hora. Estación del año Método de predicción Tiempo en generar el modelo (s) Root mean squared error Relative absolute error Primavera DecisionTable % REPTree % Kstar % Verano DecisionTable % REPTree % Kstar % Otoño DecisionTable % REPTree % Kstar % Invierno DecisionTable % REPTree % Kstar % Tabla 1: Resultados obtenidos para la predicción de temperatura en 1 hora. Observando la tabla anterior se deduce rápidamente cual es el método mas exacto de los tres que se han empleado para predecir la temperatura en el plazo de 1h, es claramente el REPTree tanto por las tasas de error que presenta como por el reducido tiempo que tarde en generar el modelo de predicción a partir de los datos de entrenamiento. En las cuatro estaciones del año genera los mejores resultados que oscilan entre un 11-15% de error, un resultado que a nuestro modo de ver está bastante bien sio hasta tres veces menor que para el método de DecisionTable y la mitad que para el método Kstar. Cabe también destacar que a pesar de que el algoritmo Kstar es más rápido, este factor no compensa los errores cometidos. Una cuestión que hay que subrayar aquí y que se comprobará mas adelante es que algoritmos mas complejos (MultilayerPerceptron, LMS o SOMreg) llegan a obtener resultados para predecir temperatura a 24h pero no a 1h porque en este caso se utilizan parámetros tanto numéricos como nominales por lo que el entrenamiento y la validación tiene un coste computacional mayor. Esto es debido a que Weka trata los atributos nominales parametrizándolos a un valor numérico, lo cual requiere mayor coste computacional. Es por esto que estos algoritmos no convergen para predicciones de temperatura de 1h (con los atributos que se han utilizado). 12

13 4.2. Predicción de temperatura a 24 horas. Estación del año Primavera Verano Otoño Invierno Método de predicción Tiempo en generar el modelo (s) Root mean squared error Relative absolute error DecisionTable % REPTree % MultilayerPerceptron % SOMreg % Kstar % LMS % DecisionTable % REPTree % MultilayerPerceptron % SOMreg % Kstar % LMS % DecisionTable % REPTree % MultilayerPerceptron % SOMreg % Kstar % LMS % DecisionTable % REPTree % MultilayerPerceptron % SOMreg % Kstar % LMS % Tabla 2: Resultados obtenidos para la predicción de temperatura en 24 horas. 13

14 Si se atie solo al porcentaje de error que proporciona cada algoritmo de predicción, es lógico pensar que los resultados son mejores en este caso que en la predicción a 1 hora. Esto es debido a que los atributos que se utilizan son solo numéricos y se pueden emplear complejos algoritmos de predicción como LMS o MultilayerPerceptron. Debido a esto se llegan a realizar predicciones con un error inferior al 10% en función de la estación del año que se analice pero esta mejora se realiza a costa de un mayor tiempo de procesado de datos de entrenamiento para obtener el modelo de predicción, basta con ver el tiempo que necesita el SOMreg que es superior a 7 horas. Quizás tan solo el algoritmo que utiliza el MultilayerPerceptron sea el único que realmente mejora los anteriores en la relación precisión/tiempo ya que mejora los resultados obtenidos por el REPTree y el tiempo que tarda en crear el modelo es de minutos. Otro cuestión que se puede ver es que los resultados obtenidos por los métodos que se usaron para predecir la temperatura a 1 hora son similares (en función de la estación) a los que se obtienen para la predicción a 24 horas, a pesar de que se usan parámetros distintos, ya que ahora sólo son numéricos y antes también se empleaban nominales Predicción de las condiciones meteorológicas. En la siguiente tabla se observan los resultados de las predicciones realizadas para cada algoritmo utilizado. Al contrario que en las predicciones anteriores, el mejor algoritmo es el DecisionTable, aunque cualquiera de los otros métodos presentan resultados similares excepto el Kstar. 14

15 Estación del año Primavera Verano Otoño Invierno Método de predicción Tiempo en generar el modelo (s) Instancias mal clasificadas Decisión Table % REPTree % SMO % J % Kstar % Decisión Table % REPTree % SMO % J % Kstar % Decisión Table % REPTree % SMO % J % Kstar % Decisión Table % REPTree % SMO % J % Kstar % Tabla 3: Resultados obtenidos para la predicción las condiciones meteorológicas en 24 horas. En definitiva, para los tres tipos de predicciones realizadas podemos concluir que el mejor método en nuestra opinión es el REPTree, porque proporciona buenos resultados (aunque no siempre los mejores) en todos los casos. Además se ha comprobado que los algoritmos complejos no trabajan muy bien con atributos nominales e incluso con numéricos llegan a necesitar un tiempo de procesado para la creación del modelo demasiado grande. 15

16 5. Conclusiones En este trabajo hemos desarrollado un completo estudio en la medida de nuestras posibilidades de diferentes métodos que se pueden utilizar para predecir parámetros meteorológicos: la temperatura y las condiciones meteorológicas. En este estudio hemos conseguido errores inferiores al 10% tanto con algoritmos más bien sencillos computacionalmente como las tablas o árboles de decisión, y con algoritmos más bien complejos como las redes SOM o las redes neuronales MLP. Estos algoritmos son los que comúnmente se utilizan para predecir los parámetros meteorológicos, pero requieren de un exhaustivo periodo de entrenamiento como hemos podido verificar a lo largo de este trabajo. Los resultados obtenidos con estos algoritmos suelen ser bastante mejores que los que hemos obtenido no sólo porque el número de parámetros utilizados es mayor o el preprocesado es más complejo, sino porque actualmente las matrices de minería de datos que se utilizan son matrices espacio-temporales [1,3], contienen datos de varias estaciones de medida (aproximadamente 10) y la evolución de estos a lo largo del tiempo. Además estos algoritmos se caracterizan por conseguir disminuir el número de parámetros a medida que aumentan el número de estaciones. En nuestro trabajo hemos desarrollado tan sólo predicciones a corto plazo, sólo hemos tenido en cuenta datos con 24 h. de antelación. Las predicciones a corto plazo, a día de hoy, suelen conducir a peores resultados que las predicciones a largo plazo, esto se debe principalmente a que se considera que los datos meteorológicos siguen una periodicidad estacional, por lo que tener en cuenta datos de años anteriores en la misma estación del año permite mejorar el comportamiento de estos clasificadores. Cabe destacar que éstos son los que más tiempo llevan investigándose. 6. Bibliografía [1] [2] WEKA. Machine Learning Algorithms in Java. Chapter 8 from the book Data Mining: Practical Machine Learning Tools and Techniques with Java Implementations Ian H. Witten. [3] [4] Manual incorporado en el programa WEKA [5] [6] [7] 16

17 Anexo I. Ficheros en Java utilizados para el preprocesado Datos legibles en Weka prueba1.java import java.io.file; public class prueba_1 { /** Creates a new instance of prueba_1 */ public prueba_1() { /** args the command line arguments */ public static void main(string[] args) { FileList f = new FileList("D:/LEVS/"); File lista_f[]=f.getfich_list(); f.checkfilelist(1,7,1996,31,10,2004); for (int i=0;i < lista_f.length; i++) { ModificarFichero mf = new ModificarFichero(lista_f[i]); mf.obtenertexto(); mf.parseartexto(); mf.escribirfichero(); System.out.println(i); System.out.println("Fin del directorio"); FileList.java import java.util.arraylist; import java.io.file; import java.util.gregoriancalar; import java.lang.integer; import java.util.stringtokenizer; public class FileList { String directory; // directorio donde extraemos la lista de ficheros a modificar public String getdirectory(){ return directory; File dir_file; // objeto File que contiene el directorio. public File getdir_file(){ return dir_file; ; File[] fich_list;// lista de ficheros; public File[] getfich_list(){ return fich_list; /** Creates a new instance of FileList */ public FileList(String d) { directory = d; dir_file = new File(d); if (dir_file.isdirectory()) fich_list=dir_file.listfiles(); else System.out.println("El path indicado no corresponde a un directorio"); 17

18 public void checkfilelist(int day_ini, int mes_ini, int ano_ini, int day_fin, int mes_fin, int ano_fin){ /* 1.- Deberíamos comprobar si existen ficheros para todos los días */ GregorianCalar fecha_ini = new GregorianCalar(ano_ini,mes_ini,day_ini); GregorianCalar fecha_fin = new GregorianCalar(ano_fin,mes_fin,day_fin); GregorianCalar fecha_file = new GregorianCalar(); String parser1 = "-"; String parser2 = "."; int i, dia, mes, ano; StringTokenizer fecha, file_name; i = 0; System.out.println("IO "+fich_list.length); while ((i < fich_list.length) ((fecha_ini.date!= fecha_fin.date) && (fecha_ini.month!= fecha_fin.month) &&(fecha_ini.year!= fecha_fin.year))){ // 1. Obtener la fecha del nombre del fichero file_name = new StringTokenizer(fich_list[i].getName(),parser2); fecha = new StringTokenizer(file_name.nextToken(),parser1); /* sabemos que el nombre del fichero es como sigue: csv */ /* obtenemos los campos que necesitamos realmente*/ fecha.nexttoken(); ano = Integer.parseInt(fecha.nextToken()); mes = Integer.parseInt(fecha.nextToken()); dia = Integer.parseInt(fecha.nextToken()); // 2. Contrastar si corresponde a la fecha del calario. // suponemos que el directorio está ordenado por fechas desde la más temprana a la más tardía // en caso de que no corresponda mostramos un mensaje de información por pantalla fecha_file.set(ano,mes,dia); if ((fecha_file.date!= fecha_ini.date) (fecha_file.month!= fecha_ini.month) (fecha_file.year!= fecha_ini.year)) System.out.println("El fichero correspondiente a la fecha "+fecha_ini.date+"-"+fecha_ini.month+"-"+fecha_ini.year+"no está en el directorio"); // aumentar la fecha de inicio del calario. fecha_ini.roll(fecha_ini.date, true); i++; ModificarFichero.java import java.io.file; import java.io.filewriter; import java.io.bufferedwriter; import java.io.filereader; import java.io.bufferedreader; import java.util.arraylist; import java.util.stringtokenizer; public class ModificarFichero { File fich_lectura; 18

19 File fich_escritura; String texto_leido; public String gettexto_leido(){ return texto_leido; String cadena_escrita; public String getcadena_escrita(){ return cadena_escrita; String[] lista_cadenas; final static String parametros = "Hora,Temperatura,Nivel de Rocio,Humedad,Presión,Visibilidad,Dirección del Viento,Velocidad del Viento,Ráfaga,Precipitación,Eventos,Condiciones"; final static String parser = "<BR>"; /** Creates a new instance of ModificarFichero */ public ModificarFichero(File fich_lect) { this.fich_lectura=fich_lect; fich_escritura = new File((fich_lect.getPath()).concat(".csv")); //fich_escritura = new File((fich_lect.getPath()).concat(".csv")); texto_leido= new String(); cadena_escrita= new String(); lista_cadenas = null; public void obtenertexto(){ try{ BufferedReader stdin = new BufferedReader(new FileReader(fich_lectura)); stdin.readline(); stdin.readline(); // Hemos comprobado que tan sólo necesitamos la tercera linea del fichero de lectura texto_leido=stdin.readline(); stdin.close(); catch(exception e){ System.out.println("Exception capturada"); public void parseartexto(){ // El texto leido se transforma en una array de longitud indeterminada y no fija de líneas // Para parsear el texto, detectaremos las líneas encontrando la cadena <BR>; lista_cadenas = (this.gettexto_leido()).split(parser); public void escribirfichero(){ try{ BufferedWriter stdout = new BufferedWriter(new FileWriter(fich_escritura)); stdout.write(parametros); stdout.newline(); // Parsear texto for (int x=0; x<lista_cadenas.length; x++){ stdout.write(lista_cadenas[x]); stdout.newline(); stdout.close(); catch(exception e){ System.out.println("Exception capturada"); 19

20 Automatizando el proceso de preprocesado prueba2.java import java.io.file; public class prueba_2 { /** Creates a new instance of prueba_2 */ public prueba_2() { public static void main(string[] args) { FileList f1 = new FileList("D:/prediccion_meteo/meteo/LEVS/"); File lista_f1[]=f1.getfich_list(); for (int i=0;i < lista_f1.length; i++) { FormatearFichero ff1 = new FormatearFichero(lista_f1[i]); ff1.leerficheroaformatear(); ff1.escribirficheroformateado(); System.out.println(i); System.out.println("Fin del directorio LEMD"); FormatearFichero.java import java.io.file; import java.io.filewriter; import java.io.bufferedwriter; import java.io.filereader; import java.io.bufferedreader; import java.util.arraylist; import java.util.stringtokenizer; import java.util.vector; public class FormatearFichero { static final int TOTAL_LINEAS = 48; static final String LINEA_VACIA = ",,,,,,,,,"; File fich_lectura; File fich_escritura; String file_name; String texto_leido; public String gettexto_leido(){ return texto_leido; String cadena_escrita; public String getcadena_escrita(){ return cadena_escrita; Vector lista_cadenas; final static String parametros = "Fecha,Hora,Temperatura,Nivel de Rocio,Humedad,Presión,Visibilidad,Dirección del Viento,Velocidad del Viento,Ráfaga,Precipitación,Eventos,Condiciones"; //final static String parser = "<BR>"; /** Creates a new instance of FormatearFichero */ public FormatearFichero(File fich_lect) { this.fich_lectura=fich_lect; file_name = fich_lect.getpath(); file_name = file_name.substring(0,file_name.lastindexof(".csv")); fich_escritura = new File(file_name.concat(".arff")); 20

21 //fich_escritura = new File((fich_lect.getPath()).concat(".csv")); texto_leido= new String(); cadena_escrita= new String(); lista_cadenas = new Vector(); lista_cadenas.add(parametros); public void escribirficheroformateado(){ try{ BufferedWriter stdout = new BufferedWriter(new FileWriter(fich_escritura)); int i=0; for (i=0;i<lista_cadenas.size();i++){ stdout.write((string) lista_cadenas.get(i)); stdout.newline(); stdout.close(); catch(exception e){ System.out.println("Exception capturada "+e); public void leerficheroaformatear(){ int linea_leida = 0; FormatLinea fline = new FormatLinea(); String lista[]=null; int j = 0; int indice = 0; FormatLinea.inicializarControlHorario(); try{ BufferedReader stdin = new BufferedReader(new FileReader(fich_lectura)); /* la primera linea del fichero es la linea de parameros, no nos interesa, vamos a trabajar con los datos que vienen definidios a partir de la segunda linea */ try{ texto_leido = stdin.readline(); while ( texto_leido!= null){ texto_leido = stdin.readline(); if (texto_leido!= null){ fline = new FormatLinea(texto_leido, this.obtenerfecha(),linea_leida); if (! texto_leido.startswith(linea_vacia)){ indice = fline.obtenerindice(); if (indice!= -1){ if (! FormatLinea.comprobarHoraActualizada(indice)){ if (fline.comprobarsinuevaslineas()){ lista=fline.crearlineas(); for (j=0;j<lista.length;j++){ lista_cadenas.add(lista[j]); linea_leida = linea_leida+lista.length; lista_cadenas.add(fline.formatearlinea()); linea_leida++; // Hemos llegado al final del fichero y el numero de lineas leidas no es 47,faltan horas por detrás... 21

22 if (linea_leida < TOTAL_LINEAS){ for (int l=linea_leida;l<total_lineas;l++){ lista_cadenas.add(fline.crearlineavacia(l)); linea_leida++; catch (Exception e){ System.out.println("Exception 1 capturada "+e); stdin.close(); catch(exception e){ System.out.println("Exception 2 capturada"); public String obtenerfecha(){ StringTokenizer s = new StringTokenizer(file_name,"-"); s.nexttoken(); String year = s.nexttoken(); String mes = s.nexttoken(); String dia = s.nexttoken(); String fecha = dia +"-"+mes+"-"+year; return fecha; FormatLinea.java import java.util.arraylist; import java.util.stringtokenizer; import java.util.hashtable; public class FormatLinea { final static String HORARIO_INICIAL[] = {"12:00 AM","12:30 AM","1:00 AM","1:30 AM","2:00 AM","2:30 AM","3:00 AM","3:30 AM","4:00 AM","4:30 AM","5:00 AM","5:30 AM","6:00 AM","6:30 AM","7:00 AM","7:30 AM","8:00 AM","8:30 AM","9:00 AM","9:30 AM","10:00 AM","10:30 AM","11:00 AM","11:30 AM","12:00 PM","12:30 PM","1:00 PM","1:30 PM","2:00 PM","2:30 PM","3:00 PM","3:30 PM","4:00 PM","4:30 PM","5:00 PM","5:30 PM","6:00 PM","6:30 PM","7:00 PM","7:30 PM","8:00 PM","8:30 PM","9:00 PM","9:30 PM","10:00 PM","10:30 PM","11:00 PM","11:30 PM"; final static String HORARIO_FINAL[] = {"0:00","0:30","1:00","1:30","2:00","2:30","3:00","3:30","4:00","4:30","5:00","5:30", "6:00","6:30","7:00","7:30","8:00","8:30","9:00","9:30","10:00","10:30","11:00","11:30","12:00", "12:30","13:00","13:30","14:00","14:30","15:00","15:30","16:00","16:30","17:00","17:30", "18:00","18:30","19:00","19:30","20:00","20:30","21:00","21:30","22:00","22:30","23:00","23:30"; final static int NUM_PARAMS = 13; final static int HORA_FIELD = 1; final static int PRESION_FIELD = 5; final static int FECHA_FIELD = 0; final static int EVENTOS_FIELD = 11; final static String DEFAULT = "?"; static Hashtable control_horario = new Hashtable(); ArrayList horas; /* utilizado para facilitar el proceso de busqueda */ ArrayList parametros; /* vector de parametros leido */ int puntero; int index; static void inicializarcontrolhorario(){ for (int i=0;i<horario_inicial.length;i++){ control_horario.put(horario_inicial[i],new Integer(0)); // indicar que todavía no se ha formateado dicha linea static void actualizarcontrolhorario(int hora_key){ 22

23 if (control_horario.containskey(horario_inicial[hora_key])){ control_horario.put(horario_inicial[hora_key],new Integer(1)); static boolean comprobarhoraactualizada(int hora_key){ // devolverá 1 cuando ya se haya leido la linea correspondiente a dicha hora if( control_horario.containskey(horario_inicial[hora_key])){ Integer ni = (Integer) control_horario.get(horario_inicial[hora_key]); if (ni.intvalue()==1) { return true; return false; static boolean comprobarhorarioincompleto(){ // comprobar si hay una linea que no se ha formateado o no está leida. return control_horario.containsvalue(new Integer(0)); /** Creates a new instance of FormatLinea */ public FormatLinea(String s,string fecha_fich,int linea_leida) { horas = new ArrayList(); for (int i = 0;i<HORARIO_INICIAL.length;i++){ horas.add(horario_inicial[i]); puntero = linea_leida; /* Vector de parametros */ /*fecha,hora,temperatura,rocio,humedad,presion,visibilidad,dir_viento,vel_viento,rafaga, precipitacion,eventos,condiciones;*/ String linea[] = s.split(","); parametros = new ArrayList(); parametros.add(fecha_fich); for (int x=0; x<linea.length; x++){ if (linea[x].equals("-")) linea[x] = DEFAULT; parametros.add(linea[x]); if ((parametros.size()<num_params)){ for (int b = parametros.size();b<num_params;b++){ parametros.add(default); index = 0; /* usado para comprobar si el dato leido corresponde a uno de los datos que queremos utilizar en el preprocesado*/ /* ver HORARIO_INICIAL, valores permitidos en el campo horas */ public int obtenerindice(){ index = horas.indexof(parametros.get(hora_field)); return index; public boolean comprobarsinuevaslineas(){ return (index!=puntero); // Solo se usará en el caso en el que comprobarsinuevaslineas es FALSE public String[] crearlineas(){ // 1.- Obtener el numero de lineas a crear int num_lineas = java.lang.math.abs(index-puntero); String nuevas_lineas[]= new String[num_lineas]; 23

24 for (int j=0;j<num_lineas;j++){ nuevas_lineas[j]=this.crearlineavacia(puntero+j); return nuevas_lineas; public String crearlineavacia(int index){ String linea_vacia = parametros.get(fecha_field)+","+horario_final[index]+","; for (int i=hora_field+1;i<num_params-1;i++){ linea_vacia=linea_vacia.concat(default+","); linea_vacia=linea_vacia.concat(default); return linea_vacia; public String formatearlinea(){ String linea_final = new String(); int i = 0; // 1.- Modificar el formato de las horas: 12:00 AM -> 0:00, y 11'30 PM -> 23:00 parametros.set(hora_field,horario_final[index]); if (parametros.get(8).equals("calm")){ parametros.set(8,"0.0"); // 3.-Crear la linea a devolver /* Cuando el campo eventos está vacio, al realizar la segmentación con StringTokenizer, no ha parece un Token *asociado a dicho campo. El tamaño del vector de parametros es menor a la longitud verdadera de dicho vector. Vamos a añadir el caracter - para indicar que está vacio */ for (i = 0;i<NUM_PARAMS;i++){ linea_final=linea_final.concat((string) parametros.get(i)); if (i<num_params-1) linea_final=linea_final.concat(","); // 4.- Reemplazar la cadena ",," por ",?," linea_final = linea_final.replaceall(",,", ",?,"); // 5.- Quitar el simbolo % linea_final = linea_final.replaceall("%", ""); // 2.- Comprobar si la humedad tiene como valor y en tal caso sustituir por - linea_final = linea_final.replaceall(" ", DEFAULT); linea_final = linea_final.replaceall("-9999", DEFAULT); // Sustituir N/A por el valor por defecto. linea_final = linea_final.replaceall("n/a", DEFAULT); // 5.- Actualizar control de lineas formateadas actualizarcontrolhorario(index); return linea_final; public FormatLinea(){ 24

25 Anexo II. Ficheros en MatLab utilizados para el preprocesado Mezclado e Interpolación filtro_mezclador.m num_lineas=48*3045+1; % n= num_lineas;; % convertir el fichero LEMD.arff a matriz [fecha_lemd,hora_lemd,temperatura_lemd,rocio_lemd,humedad_lemd,presion_lemd,visibilidad_lemd, dir_viento_lemd,vel_viento_lemd,rafaga_lemd,lluvia_lemd,eventos_lemd,condiciones_lemd] = textread('lemd.arff', '%s %s %s %s %s %s %s %s %s %s %s %s %s',num_lineas,'delimiter',','); matriz_lemd = [fecha_lemd hora_lemd temperatura_lemd rocio_lemd humedad_lemd presion_lemd visibilidad_lemd dir_viento_lemd vel_viento_lemd rafaga_lemd lluvia_lemd eventos_lemd condiciones_lemd]; [num_filas_lemd,num_columnas_lemd]=size(matriz_lemd); A=matriz_lemd(2:num_filas_lemd,:); [num_filas_lemd,num_columnas_lemd]=size(a); % convertir el fichero LEVS.arff a matriz [fecha_levs,hora_levs,temperatura_levs,rocio_levs,humedad_levs,presion_levs,visibilidad_levs, dir_viento_levs,vel_viento_levs,rafaga_levs,lluvia_levs,eventos_levs,condiciones_levs] = textread('lemd.arff', '%s %s %s %s %s %s %s %s %s %s %s %s %s',num_lineas,'delimiter',','); matriz_levs = [fecha_levs hora_levs temperatura_levs rocio_levs humedad_levs presion_levs visibilidad_levs dir_viento_levs vel_viento_levs rafaga_levs lluvia_levs eventos_levs condiciones_levs]; [num_filas_levs,num_columnas_levs]=size(matriz_levs); B=matriz_levs(2:num_filas_levs,:); [num_filas_levs,num_columnas_levs]=size(b); % Crear una matriz donde los elemntos no vacios si son numericos son la % media de ambos y si son alfanumericos un valor de ambos escogido % aleatoriamente. En caso de ausencia de un elemento, se usara el otro. Si % ambos elementos son elementos vacios, dicho elemento en la nueva matriz % tambien sera un elemento vacio % sabemos que ambas matrices tienen el mismo tamaño if (size(matriz_lemd)==size(matriz_levs)) C = cellstr(char(zeros(num_filas_lemd,num_columnas_lemd))); C(:,1:2)=A(:,1:2); for i=1:num_filas_lemd for j=3:num_columnas_lemd if (strcmp(a(i,j),'?')& strcmp(b(i,j),'?')) % Ambos elementos estan vacios C(i,j)=A(i,j); elseif ((strcmp(b(i,j),'?'))& (~ strcmp(a(i,j),'?'))) % Elemento B vacio C(i,j)=A(i,j); elseif ((strcmp(a(i,j),'?'))& (~ strcmp(b(i,j),'?'))) % Elemento A vacio C(i,j)=B(i,j); else % ambos elementos no vacios switch (j) case {3,4,7,9 % tomamos valores medios b = (str2num(char(a(i,j)))+str2num(char(b(i,j))))/2; C(i,j)=cellstr(num2str(b)); % FALTA case{5 b = (str2num(char(a(i,j)))+str2num(char(b(i,j))))/2; C(i,j)=cellstr(num2str(b)); % FALTA case{6 b = (str2num(char(a(i,j)))+str2num(char(b(i,j))))/2; C(i,j)=cellstr(num2str(b)); % FALTA case {8,13 25

26 % escogemos valor aleatorio if (mod(round(10*rand(1)),2)==1) C(i,j)=A(i,j); else C(i,j)=B(i,j); filtro_interpolador.m function [A] = filtro_interpolador(b) % num_lineas=48*3045+1; % % [a b c d e f g]=textread('lemd.arff','%s %s %s %s %s %s %s',5,'delimiter',',') % % fid = fopen('lemd.arff'); % [fecha,hora,temperatura,rocio,humedad,presion,visibilidad,dir_viento,vel_viento,rafaga,lluvia, eventos,condiciones] = textread('lemd.arff', '%s %s %s %s %s %s %s %s %s %s %s %s %s',num_lineas,'delimiter',','); % % fclose(fid); % interpolador = [fecha hora temperatura rocio humedad presion visibilidad dir_viento vel_viento rafaga lluvia eventos condiciones]; % [num_filas,num_columnas]=size(interpolador); % A=interpolador(2:num_filas,:); A = B; [num_filas,num_columnas]=size(a); for i=1:num_filas for j=3:num_columnas % comprobar si el parametro es una '?' en tal caso siempre que la % instancia anterior y la posterior (sin salirnos de los limites) % tengan valores, tomaremos el valor medio exceptuando para los % campos que son cadenas de texto: condiciones(13) y dir_viento(8) % donde tomaremos aleatoriamente uno de los dos resultados. % No interpolamos ni rafaga(10), ni lluvia(11) ni eventos(12) % porque disponemos de pocos datos y no los vamos a usar para % predecir. if ((i==1)&(strcmp(a(i,j),'?'))&(~ strcmp(a(i+1,j),'?'))&((j<10) (j==8) (j==13))) % primer elemento A(i,j)=A(i+1,j); elseif ((i==num_filas)&(strcmp(a(i,j),'?'))&(~strcmp(a(i- 1,j),'?'))&((j<10) (j==8) (j==13))) % ultimo elemento A(i,j)=A(i-1,j); else % resto de elementos if ((i~=1)&(i~=num_filas)&(strcmp(a(i,j),'?'))&(~ strcmp(a(i-1,j),'?'))&(~ strcmp(a(i+1,j),'?'))) % podemos modificar switch (j) case {3,4,7,9 % tomamos valores medios b = (str2num(char(a(i-1,j)))+str2num(char(a(i+1,j))))/2; A(i,j)=cellstr(num2str(b)); % FALTA case{5 b = (str2num(char(a(i-1,j)))+str2num(char(a(i+1,j))))/2; A(i,j)=cellstr(num2str(b)); % FALTA case{6 b = (str2num(char(a(i-1,j)))+str2num(char(a(i+1,j))))/2; A(i,j)=cellstr(num2str(b)); % FALTA case {8,13 % escogemos valor aleatorio if (mod(round(10*rand(1)),2)==1) A(i,j)=A(i+1,j); else A(i,j)=A(i-1,j); 26

27 Vector de Parámetros Mineria_temperatura_1h.m function [minero] = mineria_temperatura_1h(d) % % Creacion de la matriz de mineria para el fichero de training para predecir la temperatura con un % margen de precision de una hora. % % El vector de parametros que vamos a utilizar es el que sigue: % [temperatura,rocio,vel_viento,condiciones] = [3,4,9,13] de las muestras 3 % muestras anteriores, asi como la media de la temperatura y el rocio de % las 24 instancias anterirores segmentadas de 6 en 6. % Segmentaremos los datos por la fecha de estos... % Esto implica un vector de 42 parametros, posteriormente usaremos el % selector de parametros para obtener cuales son los parametros utiles. % En la matriz de mineria incluiremos tambien tres columnas mas % correspondientes al vector que queremos predecir: [fecha,hora,temperatura] W = 24; param = [ ]; [nrow,ncol]=size(d); % for i=1:nrow; % if(strcmp(d(i,1),' ')) % nrow_train=i-1 % break; % % minero = cell(nrow-w,18); [mr,mc]=size(minero); media1 = cellstr('?'); media2 = cellstr('?'); media3 = cellstr('?'); media4 = cellstr('?'); for i=1:mr if( (~strcmp(d(w+i-1,3),'?')) & (~strcmp(d(w+i-2,3),'?')) & (~strcmp(d(w+i- 3,3),'?')) & (~strcmp(d(w+i-4,3),'?')) & (~strcmp(d(w+i-5,3),'?')) & (~strcmp(d(w+i- 6,3),'?'))) media1 = mean([str2num(char(d(w+i-1,3))) str2num(char(d(w+i-2,3))) str2num(char(d(w+i-3,3))) str2num(char(d(w+i-4,3))) str2num(char(d(w+i-5,3))) str2num(char(d(w+i-6,3)))]); media1 = cellstr(num2str(media1)); if( (~strcmp(d(w+i-7,3),'?')) & (~strcmp(d(w+i-8,3),'?')) & (~strcmp(d(w+i- 9,3),'?')) & (~strcmp(d(w+i-10,3),'?')) & (~strcmp(d(w+i-11,3),'?')) & (~strcmp(d(w+i- 12,3),'?'))) media2 = mean([str2num(char(d(w+i-7,3))) str2num(char(d(w+i-8,3))) str2num(char(d(w+i-9,3))) str2num(char(d(w+i-10,3))) str2num(char(d(w+i-11,3))) str2num(char(d(w+i-12,3)))]); media2 = cellstr(num2str(media2)); if( (~strcmp(d(w+i-13,3),'?')) & (~strcmp(d(w+i-14,3),'?')) & (~strcmp(d(w+i- 15,3),'?')) & (~strcmp(d(w+i-16,3),'?')) & (~strcmp(d(w+i-17,3),'?')) & (~strcmp(d(w+i- 18,3),'?'))) media3 = mean([str2num(char(d(w+i-13,3))) str2num(char(d(w+i-14,3))) str2num(char(d(w+i-15,3))) str2num(char(d(w+i-16,3))) str2num(char(d(w+i-17,3))) str2num(char(d(w+i-18,3)))]); media3 = cellstr(num2str(media3)); 27

28 if( (~strcmp(d(w+i-19,3),'?')) & (~strcmp(d(w+i-20,3),'?')) & (~strcmp(d(w+i- 21,3),'?')) & (~strcmp(d(w+i-22,3),'?')) & (~strcmp(d(w+i-23,3),'?')) & (~strcmp(d(w+i- 24,3),'?'))) media4 = mean([str2num(char(d(w+i-19,3))) str2num(char(d(w+i-20,3))) str2num(char(d(w+i-21,3))) str2num(char(d(w+i-22,3))) str2num(char(d(w+i-23,3))) str2num(char(d(w+i-24,3)))]); media4 = cellstr(num2str(media4)); minero(i,:)=[d(i+w-1,param) D(i+W-2,param) D(i+W-3,param) media1 media2 media3 media4 D(i+W,[1 3])]; % _matrix(i,:)=[d(i-1,param) D(i-2,param) D(i-3,param) D(i-4,param) D(i-5,param) D(i-6,param) D(i,[1 2 3])]; % Segmentar en entrenamiento y evaluacion % [rowmin,colmin]=size(minero); Mineria_temperatura_24h.m function [minero] = mineria_temperatura_24h(d) % % Creacion de la matriz de mineria para el fichero de training para predecir la temperatura con un % margen de precision de 24 hora. % % El vector de parametros que vamos a utilizar es el que sigue: % [temperatura,rocio,vel_viento] = [3,4,9] de las muestras 5 % muestras anteriores, asi como la media de la temperatura y el rocio de la % media de las 72 horas anteriores: escogemos 12 muestras por dia. % Segmentaremos los datos por la fecha de estos... W = 72; param = [3 4 9]; [nrow,ncol]=size(d); % for i=1:nrow; % if(strcmp(d(i,1),' ')) % nrow_train=i-1 % break; % % minero = cell(nrow-w,20); [mr,mc]=size(minero); media1 = cellstr('?'); media2 = cellstr('?'); media3 = cellstr('?'); for i=1:mr if ((~strcmp(d(w+i-2,3),'?')) & (~strcmp(d(w+i-4,3),'?')) & (~strcmp(d(w+i- 6,3),'?')) & (~strcmp(d(w+i-8,3),'?')) & (~strcmp(d(w+i-10,3),'?')) & (~strcmp(d(w+i- 12,3),'?')) & (~strcmp(d(w+i-14,3),'?')) & (~strcmp(d(w+i-16,3),'?')) & (~strcmp(d(w+i- 18,3),'?')) & (~strcmp(d(w+i-20,3),'?')) & (~strcmp(d(w+i-22,3),'?')) & (~strcmp(d(w+i- 24,3),'?'))) media1 = mean([str2num(char(d(w+i-2,3))) str2num(char(d(w+i-4,3))) str2num(char(d(w+i-6,3))) str2num(char(d(w+i-8,3))) str2num(char(d(w+i-10,3))) str2num(char(d(w+i-12,3))) str2num(char(d(w+i-14,3))) str2num(char(d(w+i-16,3))) str2num(char(d(w+i-18,3))) str2num(char(d(w+i-20,3))) str2num(char(d(w+i-22,3))) str2num(char(d(w+i-24,3)))]); media1 = cellstr(num2str(media1)); if ((~strcmp(d(w+i-26,3),'?')) & (~strcmp(d(w+i-28,3),'?')) & (~strcmp(d(w+i- 30,3),'?')) & (~strcmp(d(w+i-32,3),'?')) & (~strcmp(d(w+i-34,3),'?')) & (~strcmp(d(w+i- 36,3),'?')) & (~strcmp(d(w+i-38,3),'?')) & (~strcmp(d(w+i-40,3),'?')) & (~strcmp(d(w+i- 42,3),'?')) & (~strcmp(d(w+i-44,3),'?')) & (~strcmp(d(w+i-46,3),'?')) & (~strcmp(d(w+i- 28

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

En cualquier caso, tampoco es demasiado importante el significado de la B, si es que lo tiene, lo interesante realmente es el algoritmo. Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa

Más detalles

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL OBJETIVO Mejorar el nivel de comprensión y el manejo de las destrezas del estudiante para utilizar formulas en Microsoft Excel 2010. 1) DEFINICIÓN Una fórmula de Excel es un código especial que introducimos

Más detalles

Lección 24: Lenguaje algebraico y sustituciones

Lección 24: Lenguaje algebraico y sustituciones LECCIÓN Lección : Lenguaje algebraico y sustituciones En lecciones anteriores usted ya trabajó con ecuaciones. Las ecuaciones expresan una igualdad entre ciertas relaciones numéricas en las que se desconoce

Más detalles

LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F)

LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F) APRENDERAPROGRAMAR.COM LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F) Sección: Cursos Categoría: Curso básico de programación en lenguaje C desde

Más detalles

Instrucción IrA (GoTo). Saltos no naturales en el flujo normal de un programa. Pseudocódigo y diagramas de flujo. (CU00182A)

Instrucción IrA (GoTo). Saltos no naturales en el flujo normal de un programa. Pseudocódigo y diagramas de flujo. (CU00182A) aprenderaprogramar.com Instrucción IrA (GoTo). Saltos no naturales en el flujo normal de un programa. Pseudocódigo y diagramas de flujo. (CU00182A) Sección: Cursos Categoría: Curso Bases de la programación

Más detalles

Modulo 1 El lenguaje Java

Modulo 1 El lenguaje Java Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto

Más detalles

Predicción de los ciclos de El Niño

Predicción de los ciclos de El Niño Predicción de los ciclos de El Niño Israel Cendrero Sánchez I.T.T.Telemática Universidad Carlos III de Madrid Leganes,Madrid,España 100055713@alumnos.uc3m.es Beatriz López Moreno I.T.T.Telemática Universidad

Más detalles

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES CASO PRÁCTICO DISTRIBUCIÓN DE COSTES Nuestra empresa tiene centros de distribución en tres ciudades europeas: Zaragoza, Milán y Burdeos. Hemos solicitado a los responsables de cada uno de los centros que

Más detalles

Conclusiones. Particionado Consciente de los Datos

Conclusiones. Particionado Consciente de los Datos Capítulo 6 Conclusiones Una de las principales conclusiones que se extraen de esta tesis es que para que un algoritmo de ordenación sea el más rápido para cualquier conjunto de datos a ordenar, debe ser

Más detalles

Aplicaciones Lineales

Aplicaciones Lineales Aplicaciones Lineales Ejercicio Dada la matriz A = 0 2 0 a) Escribir explícitamente la aplicación lineal f : 2 cuya matriz asociada con respecto a las bases canónicas es A. En primer lugar definimos las

Más detalles

Caso práctico de Cuadro de Mando con Tablas Dinámicas

Caso práctico de Cuadro de Mando con Tablas Dinámicas 1 Caso práctico de Cuadro de Mando con Tablas Dinámicas Luis Muñiz Socio Director de SisConGes & Estrategia Introducción Hay una frase célebre que nos permite decir que: Lo que no se mide no se puede controlar

Más detalles

Centro de Capacitación en Informática

Centro de Capacitación en Informática Fórmulas y Funciones Las fórmulas constituyen el núcleo de cualquier hoja de cálculo, y por tanto de Excel. Mediante fórmulas, se llevan a cabo todos los cálculos que se necesitan en una hoja de cálculo.

Más detalles

11. Algunas clases estándar de Java (II)

11. Algunas clases estándar de Java (II) 122 A. García-Beltrán y J.M. Arranz 11. Algunas clases estándar de Java (II) Objetivos: a) Presentar la clase predefinida en Java para trabajar con arrays b) Interpretar el código fuente de una aplicación

Más detalles

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C) APRENDERAPROGRAMAR.COM GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I

Más detalles

Región de Murcia Consejería de Educación, Ciencia e Investigación. Manual Usuario FCT

Región de Murcia Consejería de Educación, Ciencia e Investigación. Manual Usuario FCT . Manual Usuario FCT Murcia, 9 de Julio de 2007 Manual de Usuario FCT v1.0 pág. 2 de 73 ÍNDICE Manual Usuario FCT...1 1. Tipos de usuarios... 4 2. Modelo de navegación... 5 3. Servicios... 6 3.1. Convenios...

Más detalles

MODELOS DE RECUPERACION

MODELOS DE RECUPERACION RECUPERACIÓN Y ORGANIZACIÓN DE LA INFORMACIÓN INGENIERÍA INFORMÁTICA RECUPERACIÓN Y ACCESO A LA INFORMACIÓN MODELOS DE RECUPERACION AUTOR: Rubén García Broncano NIA 100065530 grupo 81 1 INDICE 1- INTRODUCCIÓN

Más detalles

Servicio de estadísticas de Alojamiento Fecha de revisión: 19/09/2005

Servicio de estadísticas de Alojamiento Fecha de revisión: 19/09/2005 Servicio de estadísticas de Alojamiento Fecha de revisión: 19/09/2005 1. Acerca de este documento Este documento describe el servicio de estadísticas del que actualmente disfrutan algunas de las páginas

Más detalles

Ejercicio 1. Desarrollar un pequeño juego para practicar mecanografía.

Ejercicio 1. Desarrollar un pequeño juego para practicar mecanografía. Examen Curso 2001-2002. Convocatoria de Febrero Página 1 Ejercicio 1. Desarrollar un pequeño juego para practicar mecanografía. Este ejercicio se divide en dos partes con el fin de que el alumno no intente

Más detalles

Figura 4.1 Clasificación de los lenguajes de bases de datos

Figura 4.1 Clasificación de los lenguajes de bases de datos 1 Colección de Tesis Digitales Universidad de las Américas Puebla Romero Martínez, Modesto Este capítulo describen los distintos lenguajes para bases de datos, la forma en que se puede escribir un lenguaje

Más detalles

Análisis y cuantificación del Riesgo

Análisis y cuantificación del Riesgo Análisis y cuantificación del Riesgo 1 Qué es el análisis del Riesgo? 2. Métodos M de Análisis de riesgos 3. Método M de Montecarlo 4. Modelo de Análisis de Riesgos 5. Qué pasos de deben seguir para el

Más detalles

Proyectos de Innovación Docente

Proyectos de Innovación Docente Proyectos de Innovación Docente Manual de Usuario Vicerrectorado de Docencia y Profesorado Contenido INTRODUCCIÓN... 3 DATOS PERSONALES... 6 Modificar email... 6 Modificar contraseña... 7 GESTIÓN PROYECTOS...

Más detalles

MATEMÁTICAS CON LA HOJA DE CÁLCULO

MATEMÁTICAS CON LA HOJA DE CÁLCULO MATEMÁTICAS CON LA HOJA DE CÁLCULO Podemos dar a esta aplicación un uso práctico en el aula de Matemáticas en varios sentidos: Como potente calculadora: sucesiones, límites, tablas estadísticas, parámetros

Más detalles

DIGITALIZACIÓN DE DOCUMENTOS: PROYECTO DIGISAN

DIGITALIZACIÓN DE DOCUMENTOS: PROYECTO DIGISAN DIGITALIZACIÓN DE DOCUMENTOS: PROYECTO DIGISAN Francisco Belmonte Díaz Diseño e implementación de Sistemas Informáticos. Coordinación de Tareas de Programación Servicio de Gestión Informática. Consejería

Más detalles

Solución al Reto Hacking v2.0 de Informática 64

Solución al Reto Hacking v2.0 de Informática 64 Febrero 2007 Introducción Este documento describe dos soluciones posibles al segundo Reto Hacking de Informática 64 que se publicó el 10 de febrero de 2007 en la siguiente dirección web: http://retohacking2.elladodelmal.com

Más detalles

9. Objetos y clases. 9.1. Clases

9. Objetos y clases. 9.1. Clases Programación orientada a objetos con Java 103 9. Objetos y clases Objetivos: a) Presentar el concepto de objeto, clase, atributo, método e instancia b) Interpretar el código fuente de una aplicación Java

Más detalles

1.1. Introducción y conceptos básicos

1.1. Introducción y conceptos básicos Tema 1 Variables estadísticas Contenido 1.1. Introducción y conceptos básicos.................. 1 1.2. Tipos de variables estadísticas................... 2 1.3. Distribuciones de frecuencias....................

Más detalles

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación Competencias IIC1103 Introducción a la Programación (I/2010) Interrogación 1 13 de Abril de 2010

Más detalles

Administración de Empresas. 11 Métodos dinámicos de evaluación de inversiones 11.1

Administración de Empresas. 11 Métodos dinámicos de evaluación de inversiones 11.1 Administración de Empresas. 11 Métodos dinámicos de evaluación de inversiones 11.1 TEMA 11: MÉTODOS DINÁMICOS DE SELECCIÓN DE INVERSIONES ESQUEMA DEL TEMA: 11.1. Valor actualizado neto. 11.2. Tasa interna

Más detalles

SIIT SISTEMA INFORMÁTICO DE INSPECCIONES DE TRABAJO. Modulo de Planificación Manual de Usuario

SIIT SISTEMA INFORMÁTICO DE INSPECCIONES DE TRABAJO. Modulo de Planificación Manual de Usuario SISTEMA INFORMÁTICO DE INSPECCIONES DE TRABAJO Modulo de Planificación Manual de Usuario Oficina General de Estadística e Informática Oficina de Informática Unidad de Análisis y Desarrollo MÓDULO DE PLANIFICACIÓN

Más detalles

Programa Presupuestos de Sevillana de Informática.

Programa Presupuestos de Sevillana de Informática. Programa Presupuestos de Sevillana de Informática. Introducción. En sus inicios, el programa Presupuestos estaba pensado únicamente para escribir e imprimir presupuestos, facilitando el trabajo con un

Más detalles

Capitulo V Administración de memoria

Capitulo V Administración de memoria Capitulo V Administración de memoria Introducción. Una de las tareas más importantes y complejas de un sistema operativo es la gestión de memoria. La gestión de memoria implica tratar la memoria principal

Más detalles

Introducción a la estadística y SPSS

Introducción a la estadística y SPSS Introducción a la estadística y SPSS Marcelo Rodríguez Ingeniero Estadístico - Magister en Estadística Universidad Católica del Maule Facultad de Ciencias Básicas Pedagogía en Matemática Estadística I

Más detalles

Una investigación australiana reveló que posiblemente la disminución

Una investigación australiana reveló que posiblemente la disminución CIENTÍFICOS TRABAJAN EN DETECCIÓN DE CÁNCER DE MAMA A TRAVÉS DE REDES NEURONALES ARTIFICIALES Constituye un apoyo para el médico y los radiólogos para evitar falsos diagnósticos Fernando Álvarez Una investigación

Más detalles

GOOGLE NOTICIAS Y ALERTAS

GOOGLE NOTICIAS Y ALERTAS GOOGLE NOTICIAS Y ALERTAS Curso de Noticias y Alertas por KZgunea se encuentra bajo licencia Creative Commons de Reconocimiento-NoComercial-CompartirIgual_3.0_ (CC-BY-NC-SA_3.0) Índice del curso 1. TEMA

Más detalles

La ventana de Microsoft Excel

La ventana de Microsoft Excel Actividad N 1 Conceptos básicos de Planilla de Cálculo La ventana del Microsoft Excel y sus partes. Movimiento del cursor. Tipos de datos. Metodología de trabajo con planillas. La ventana de Microsoft

Más detalles

Manual de ayuda para la utilización del Correo Interno en el Campus Virtual

Manual de ayuda para la utilización del Correo Interno en el Campus Virtual Manual de ayuda para la utilización del Correo Interno en el Campus Virtual Página 1 de 12 Contenido 1. INTRODUCCIÓN... 3 2. CONFIGURACIÓN DEL BLOQUE DE CORREO INTERNO... 3 3. GESTIÓN DEL CORREO... 4 4.

Más detalles

GE Power Management. 6S``O[WS\bORS1]\TWUc`OQWÕ\g. GE-FILES 7\ab`cQQW]\Sa 539$ &

GE Power Management. 6S``O[WS\bORS1]\TWUc`OQWÕ\g. GE-FILES 7\ab`cQQW]\Sa 539$ & ')) GE Power Management 6S``O[WS\bORS1]\TWUc`OQWÕ\g /\ãzwawars@suwab`]arszawabs[o GE-FILES 7\ab`cQQW]\Sa 539$ & *(Ã3RZHUÃ0DQDJHPHQW +D\DOJRTXHQRHQFXHQWUD" $OJRQRHVWiVXILFLHQWHPHQWHFODUR" 6,Ã 7,(1(Ã $/*Ô1Ã

Más detalles

EXTRACTO Descripción del uso y manejo de SIRAIS 1.2

EXTRACTO Descripción del uso y manejo de SIRAIS 1.2 Manual de usuario EXTRACTO Descripción del uso y manejo de ELABORADO POR Dr. Javier Rodríguez Suárez Director General de Difusión e Investigación Ing. José Joel Lucero Morales Jefe de Enseñanza de la Dirección

Más detalles

Manual de usuario de Solmicro BI. Página 1

Manual de usuario de Solmicro BI. Página 1 Manual de usuario de Solmicro BI Página 1 Índice 1. Estructura general del sistema, 2. Estructura de presentación de la información, 3. Acceso a Solmicro BI y los diferentes cuadros de mando, 4. Partes

Más detalles

Introducción a la Programación en MATLAB

Introducción a la Programación en MATLAB Introducción a la Programación en MATLAB La programación en MATLAB se realiza básicamente sobre archivos M, o M-Files. Se los denomina de esta forma debido a su extensión.m. Estos archivos son simple archivos

Más detalles

CAPÍTULO 10 Aplicaciones de la Derivada a Funciones Económicas

CAPÍTULO 10 Aplicaciones de la Derivada a Funciones Económicas CAPÍTULO 10 Aplicaciones de la Derivada a Funciones Económicas Introducción En la economía, la variación de alguna cantidad con respecto a otra puede ser descrita por un concepto promedio o por un concepto

Más detalles

GENERAR DOCUMENTOS HTML USANDO LENGUAJE PHP. EJERCICIO RESUELTO EJEMPLO SENCILLO. (CU00733B)

GENERAR DOCUMENTOS HTML USANDO LENGUAJE PHP. EJERCICIO RESUELTO EJEMPLO SENCILLO. (CU00733B) APRENDERAPROGRAMAR.COM GENERAR DOCUMENTOS HTML USANDO LENGUAJE PHP. EJERCICIO RESUELTO EJEMPLO SENCILLO. (CU00733B) Sección: Cursos Categoría: Tutorial básico del programador web: HTML desde cero Fecha

Más detalles

Descarga Automática. Manual de Usuario. Operador del Mercado Ibérico de Energía - Polo Español Alfonso XI, 6 28014 Madrid

Descarga Automática. Manual de Usuario. Operador del Mercado Ibérico de Energía - Polo Español Alfonso XI, 6 28014 Madrid Descarga Automática Manual de Usuario Operador del Mercado Ibérico de Energía - Polo Español Alfonso XI, 6 28014 Madrid Versión 5.2 Fecha: 2008-10-15 Ref : MU_DescargaAutomática.doc ÍNDICE 1 INTRODUCCIÓN...

Más detalles

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero. Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero. Uso de Ficheros Todas las estructuras de datos vistas hasta ahora utilizan la

Más detalles

La calidad de los datos ha mejorado, se ha avanzado en la construcción de reglas de integridad.

La calidad de los datos ha mejorado, se ha avanzado en la construcción de reglas de integridad. MINERIA DE DATOS PREPROCESAMIENTO: LIMPIEZA Y TRANSFORMACIÓN El éxito de un proceso de minería de datos depende no sólo de tener todos los datos necesarios (una buena recopilación) sino de que éstos estén

Más detalles

Revisión del Universo de empresas para la Estimación de los Datos Del Mercado Español de Investigación de Mercados y Opinión.

Revisión del Universo de empresas para la Estimación de los Datos Del Mercado Español de Investigación de Mercados y Opinión. Revisión del Universo de empresas para la Estimación de los Datos Del Mercado Español de Investigación de Mercados y Opinión. (Enrique Matesanz y Vicente Castellanos, Año 2011) Según la experiencia acumulada

Más detalles

TEMA 3: EN QUÉ CONSISTE?

TEMA 3: EN QUÉ CONSISTE? Módulo 7 Sesión 3 5/16 TEMA 3: EN QUÉ CONSISTE? La metodología seguida para aplicar correctamente la técnica de RGT se basa en cuatro fases (Figura 1). En la primera de ellas, se seleccionan los elementos

Más detalles

Lectura de datos. Marcelo Reyes Notas sobre gretl 1.8.6cvs

Lectura de datos. Marcelo Reyes Notas sobre gretl 1.8.6cvs Marcelo Reyes Notas sobre gretl 1.8.6cvs Lectura de datos gretl permite cargar datos desde diferentes muestras. Si lo que queremos es practicar se proporciona un generoso banco de datos accesible desde

Más detalles

Listados y Etiquetas personalizados de PrefGest WhitePaper Julio 2008

Listados y Etiquetas personalizados de PrefGest WhitePaper Julio 2008 Listados y Etiquetas personalizados de PrefGest WhitePaper Julio 2008 Contenidos 1. Propósito 3 2. Introducción 4 3. Listados personalizados 5 3.1. Ejemplos prácticos 7 3.2. Consideraciones adicionales

Más detalles

Evaluación de modelos para la predicción de la Bolsa

Evaluación de modelos para la predicción de la Bolsa Evaluación de modelos para la predicción de la Bolsa Humberto Hernandez Ansorena Departamento de Ingeniería Telemática Universidad Carlos III de Madrid Madrid, España 10003975@alumnos.uc3m.es Rico Hario

Más detalles

Práctica 3. Explorando datos con Statistix

Práctica 3. Explorando datos con Statistix Práctica 3. Explorando datos con Statistix En esta práctica aprenderemos a explorar un conjunto de datos utilizando el menú Statistics de nuestro programa. Un geyser es un nacimiento de agua hirviente

Más detalles

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro USAR MYSQL EN PHP PHP tiene una librería de funciones nativas para conectarse a las base de datos MySQL. Por un lado reconoce la librería mysql y por otro mysqli. Se recomienda el uso de mysqli dado que

Más detalles

MANEJANDO FICHEROS Y CARPETAS

MANEJANDO FICHEROS Y CARPETAS Tutorial 1 MANEJANDO FICHEROS Y CARPETAS 1.1.- Creando carpetas Para organizar la información que almacenamos en nuestros ordenadores, tenemos una elemento denominado carpeta. Vamos a ver cómo, usando

Más detalles

Pruebas de unidad con JUnit

Pruebas de unidad con JUnit Pruebas de unidad con JUnit Cuando se implementa software, resulta recomendable comprobar que el código que hemos escrito funciona correctamente. Para ello, implementamos pruebas que verifican que nuestro

Más detalles

INSTRUCTIVO DEL COMANDO MAKE

INSTRUCTIVO DEL COMANDO MAKE INSTRUCTIVO DEL COMANDO MAKE Introducción Un programa escrito en C está normalmente compuesto por varios archivos. Estos archivos se van modificando según se va completando o cambiando el programa. Cada

Más detalles

MANUAL DEL PROGRAMA DE ASESORAMIENTO (Asesores) Navegador y limpiar caché/cookies...2 Acceso al programa de Asesoramiento... 7

MANUAL DEL PROGRAMA DE ASESORAMIENTO (Asesores) Navegador y limpiar caché/cookies...2 Acceso al programa de Asesoramiento... 7 MANUAL DEL PROGRAMA DE ASESORAMIENTO (Asesores) Índice Pasos previos a la visualización del programa: Navegador y limpiar caché/cookies...2 Acceso al programa de Asesoramiento... 7 Conceptos e información

Más detalles

Aprendizaje Automatizado

Aprendizaje Automatizado Aprendizaje Automatizado Aprendizaje Automatizado Programas que mejoran su comportamiento con la experiencia. Dos formas de adquirir experiencia: A partir de ejemplos suministrados por un usuario (un conjunto

Más detalles

Manual de OpenOffice Impress

Manual de OpenOffice Impress Manual de OpenOffice Impress. Capítulo 4. Trabajando con gráficos, esquemas y plantillas 1 Manual de OpenOffice Impress Capítulo 4: Trabajando con gráficos, esquemas y plantillas Este material es una adaptación

Más detalles

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Unidad I Sistemas numéricos 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS.

Más detalles

Indicaciones específicas para los análisis estadísticos.

Indicaciones específicas para los análisis estadísticos. Tutorial básico de PSPP: Vídeo 1: Describe la interfaz del programa, explicando en qué consiste la vista de datos y la vista de variables. Vídeo 2: Muestra cómo crear una base de datos, comenzando por

Más detalles

Construcción de Escenarios

Construcción de Escenarios Construcción de Escenarios Consiste en observar los diferentes resultados de un modelo, cuando se introducen diferentes valores en las variables de entrada. Por ejemplo: Ventas, crecimiento de ventas,

Más detalles

Cuestionario sobre marketing 2.0

Cuestionario sobre marketing 2.0 Cuestionario sobre marketing 2.0 1 Tienen que utilizar las empresas las nuevas herramientas web foros, redes sociales, blogs, comunidades - para seguir en el mercado? Hay muchas empresas que ni siquiera

Más detalles

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA ARREGLOS EN JAVA I I N T R O D U C C I Ó N En las sesiones anteriores, los datos manejados en los programas han sido datos simples (carácter, entero, reales) En un gran número de problemas es necesario

Más detalles

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual Introducción Algunas de las personas que trabajan con SGBD relacionales parecen preguntarse porqué deberían preocuparse del diseño de las bases de datos que utilizan. Después de todo, la mayoría de los

Más detalles

2. Estructura de un programa en Java

2. Estructura de un programa en Java 24 A. García-Beltrán y J.M. Arranz 2. Estructura de un programa en Java Objetivos: a) Describir la estructura del código fuente de una aplicación Java b) Presentar los conceptos de comentario y de identificador

Más detalles

Los números racionales

Los números racionales Los números racionales Los números racionales Los números fraccionarios o fracciones permiten representar aquellas situaciones en las que se obtiene o se debe una parte de un objeto. Todas las fracciones

Más detalles

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: 93.410.92.92 Fax.: 93.419.86.49 e-mail:atcliente@websie.

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: 93.410.92.92 Fax.: 93.419.86.49 e-mail:atcliente@websie. Adaptación al NPGC Introducción Nexus 620, ya recoge el Nuevo Plan General Contable, que entrará en vigor el 1 de Enero de 2008. Este documento mostrará que debemos hacer a partir de esa fecha, según nuestra

Más detalles

Centro de Capacitación en Informática

Centro de Capacitación en Informática Combinación de funciones y fórmulas =SI(Y(...)...) o =Si(O(...)...) En secciones anteriores vimos que la función SI() debía cumplir una condición, como por ejemplo, controlar si en una celda determinada

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS

PROGRAMACIÓN ORIENTADA A OBJETOS PROGRAMACIÓN ORIENTADA A OBJETOS Clase 1. Introducción Profesor: Diego Sánchez Gómez Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases

Más detalles

Para crear formularios se utiliza la barra de herramientas Formulario, que se activa a través del comando Ver barra de herramientas.

Para crear formularios se utiliza la barra de herramientas Formulario, que se activa a través del comando Ver barra de herramientas. Formularios TEMA: FORMULARIOS. 1. INTRODUCCIÓN. 2. CREACIÓN DE FORMULARIOS. 3. INTRODUCIR DATOS EN UN FORMULARIO. 4. MODIFICAR UN FORMULARIO 5. MANERAS DE GUARDAR UN FORMULARIO. 6. IMPRIMIR FORMULARIOS.

Más detalles

Funciones en Excel (II)

Funciones en Excel (II) Funciones en Excel (II) Las Funciones de Texto Jose Ignacio González Gómez Departamento de Economía Financiera y Contabilidad - Universidad de La Laguna www.jggomez.eu INDICE 1 Para qué las funciones de

Más detalles

CAPITULO DE BIENES AFECTOS O DE INVERSIÓN

CAPITULO DE BIENES AFECTOS O DE INVERSIÓN CAPITULO DE BIENES AFECTOS O DE INVERSIÓN INDICE: A ACCESO POR PRIMERA VEZ - PANTALLA DE REGISTRO DE UN NUEVO BIEN:... 3 1 - DATOS GENERALES:... 4 A. ALTA:... 4 B. BAJA:... 8 C. MEJORA DE BIEN... 9 D.

Más detalles

Fuentes de información y plataformas de almacenamiento de información P08/93150/01582

Fuentes de información y plataformas de almacenamiento de información P08/93150/01582 Fuentes de información y plataformas de almacenamiento de información P08/93150/01582 FUOC P06/M1003/01067 2 Fuentes de información y plataformas de almacenamiento de información FUOC P08/93150/01582 Fuentes

Más detalles

Contraseñas seguras: Cómo crearlas y utilizarlas

Contraseñas seguras: Cómo crearlas y utilizarlas Contraseñas seguras: Cómo crearlas y utilizarlas Contraseñas seguras y seguridad de las contraseñas Las contraseñas son las claves que utiliza para obtener acceso a información personal que ha almacenado

Más detalles

VECTORES. Módulo, dirección y sentido de un vector fijo En un vector fijo se llama módulo del mismo a la longitud del segmento que lo define.

VECTORES. Módulo, dirección y sentido de un vector fijo En un vector fijo se llama módulo del mismo a la longitud del segmento que lo define. VECTORES El estudio de los vectores es uno de tantos conocimientos de las matemáticas que provienen de la física. En esta ciencia se distingue entre magnitudes escalares y magnitudes vectoriales. Se llaman

Más detalles

Programación Orientada a Objetos en JAVA

Programación Orientada a Objetos en JAVA Programación Orientada a Objetos en JAVA Jorge Pérez Introducción a la Computación Jorge Pérez Programación Orientada a Objetos en JAVA 1 / 36 Orientación a Objetos OO es un paradigma de modelación y programación

Más detalles

Reservas - Rooming List

Reservas - Rooming List Reservas - Rooming List Desde esta pantalla obtendremos la rooming list del día o periodo solicitados. 1. Criterios para obtener la Rooming List En la parte derecha de la pantalla se nos ofrecen todas

Más detalles

INFORME DE LA PRODUCTIVIDAD ESPAÑOLA EN FÍSICA SOLAR Y HELIOSFÉRICA EN EL PERIODO 1999-2008

INFORME DE LA PRODUCTIVIDAD ESPAÑOLA EN FÍSICA SOLAR Y HELIOSFÉRICA EN EL PERIODO 1999-2008 INFORME DE LA PRODUCTIVIDAD ESPAÑOLA EN FÍSICA SOLAR Y HELIOSFÉRICA EN EL PERIODO 1999-2008 M. Gómez y M. Collados Instituto de Astrofísica de Canarias 27 de Junio de 2012 RED DE INFRAESTRUCTURAS DE ASTRONOMÍA

Más detalles

El proyecto Eratóstenes. Guía para el estudiante.

El proyecto Eratóstenes. Guía para el estudiante. El proyecto Eratóstenes. Guía para el estudiante. En esta actividad vas a trabajar en colaboración con estudiantes de otra escuela para medir el radio de la Tierra. Vas a usar los mismos métodos y principios

Más detalles

Plataforma Helvia. Manual de Administración. Bitácora. Versión 6.06.04

Plataforma Helvia. Manual de Administración. Bitácora. Versión 6.06.04 Plataforma Helvia Manual de Administración Bitácora Versión 6.06.04 ÍNDICE Acceso a la administración de la Bitácora... 3 Interfaz Gráfica... 3 Publicaciones... 4 Cómo Agregar una Publicación... 4 Cómo

Más detalles

Práctica 2: Simón dice

Práctica 2: Simón dice Práctica 2: Simón dice Fecha de entrega: 31 de enero de 2016 0.- Descripción del juego (Wikipedia.org) Simon dice es un juego electrónico, creado por Ralph Baer, que consiste en reproducir una secuencia

Más detalles

Práctica 10. Redes Neuronales

Práctica 10. Redes Neuronales Práctica 10 Redes Neuronales En esta práctica trabajaremos con un sistema de aprendizaje basado en ejemplos que ya hemos visto con anterioridad (k-vecinos) y una implementación de las redes neuronales.

Más detalles

CAPÍTULO 4: ALGORITMOS DE APRENDIZAJE

CAPÍTULO 4: ALGORITMOS DE APRENDIZAJE Capítulo 4 Algoritmos de Aprendizaje 26 CAPÍTULO 4: ALGORITMOS DE APRENDIZAJE En este capítulo se proporcionan las descripciones matemáticas de los principales algoritmos de aprendizaje para redes neuronales:

Más detalles

Capitulo VII. Editor de Mapa de Tareas. Como hemos hablado en los capítulos anteriores, sabemos que parte del éxito

Capitulo VII. Editor de Mapa de Tareas. Como hemos hablado en los capítulos anteriores, sabemos que parte del éxito Capitulo VII Editor de Mapa de Tareas. Como hemos hablado en los capítulos anteriores, sabemos que parte del éxito que puede tener un ambiente de aprendizaje, consiste en el impacto que de primera instancia

Más detalles

8.1. Introducción... 1. 8.2. Dependencia/independencia estadística... 2. 8.3. Representación gráfica: diagrama de dispersión... 3. 8.4. Regresión...

8.1. Introducción... 1. 8.2. Dependencia/independencia estadística... 2. 8.3. Representación gráfica: diagrama de dispersión... 3. 8.4. Regresión... Tema 8 Análisis de dos variables: dependencia estadística y regresión Contenido 8.1. Introducción............................. 1 8.2. Dependencia/independencia estadística.............. 2 8.3. Representación

Más detalles

Programación I: Funciones y módulos

Programación I: Funciones y módulos Programación I: Funciones y módulos Esteban De La Fuente Rubio 2 de abril de 23 Índice. Funciones.. Definición y llamado de funciones............................................. 2.2. Parámetros por omisión..................................................

Más detalles

Análisis de los datos

Análisis de los datos Universidad Complutense de Madrid CURSOS DE FORMACIÓN EN INFORMÁTICA Análisis de los datos Hojas de cálculo Tema 6 Análisis de los datos Una de las capacidades más interesantes de Excel es la actualización

Más detalles

HERRAMIENTAS DE ACCESS ACCESS 2010. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

HERRAMIENTAS DE ACCESS ACCESS 2010. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE HERRAMIENTAS DE ACCESS ACCESS 2010 Manual de Referencia para usuarios Salomón Ccance CCANCE WEBSITE HERRAMIENTAS DE ACCESS En esta unidad veremos algunas de las herramientas incorporadas de Access que

Más detalles

Unidad: Representación gráfica del movimiento

Unidad: Representación gráfica del movimiento Unidad: Representación gráfica del movimiento Aplicando y repasando el concepto de rapidez Esta primera actividad repasa el concepto de rapidez definido anteriormente. Posición Esta actividad introduce

Más detalles

PARA COMERCIANTES Y AUTÓNOMOS. INFORMACIÓN SOBRE TARJETAS DE CRÉDITO.

PARA COMERCIANTES Y AUTÓNOMOS. INFORMACIÓN SOBRE TARJETAS DE CRÉDITO. PARA COMERCIANTES Y AUTÓNOMOS. INFORMACIÓN SOBRE TARJETAS DE CRÉDITO. QUÉ DEBES SABER CUANDO ACEPTAS UNA TARJETA COMO FORMA DE PAGO EN TU ESTABLECIMIENTO? Hace ya muchos años que la mayoría de las microempresas

Más detalles

El reto de la Gestión Documental

El reto de la Gestión Documental El reto de la Gestión Documental Introducción Quizá la pregunta más habitual que nos hacemos al considerar soluciones de Gestión Documental sea cómo puedo digitalizar la enorme cantidad de documentos que

Más detalles

ANALISIS MULTIVARIANTE

ANALISIS MULTIVARIANTE ANALISIS MULTIVARIANTE Es un conjunto de técnicas que se utilizan cuando se trabaja sobre colecciones de datos en las cuáles hay muchas variables implicadas. Los principales problemas, en este contexto,

Más detalles

Matrices Invertibles y Elementos de Álgebra Matricial

Matrices Invertibles y Elementos de Álgebra Matricial Matrices Invertibles y Elementos de Álgebra Matricial Departamento de Matemáticas, CCIR/ITESM 12 de enero de 2011 Índice 91 Introducción 1 92 Transpuesta 1 93 Propiedades de la transpuesta 2 94 Matrices

Más detalles

3º Grado Educación Infantil Bilingüe Números. Método Singapur y F. Bravo E R

3º Grado Educación Infantil Bilingüe Números. Método Singapur y F. Bravo E R MATEMÁTICAS PARA EDUCACIÓN INFANTIL N Enseñamos y aprendemos llos números:: Método Siingapur y Fernández Bravo,, Porr Clarra Garrcí ía,, Marrtta Gonzzál lezz y Crri isstti ina Lattorrrre.. Ú M E R O S

Más detalles

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL Índice 1 Introducción... 5 1.1 Perfil de la aplicación... 5 1.2 Requisitos técnicos... 5 2 Manual de usuario... 7 2.1 Instalación del certificado...

Más detalles

Módulo II - PowerPoint

Módulo II - PowerPoint Módulo II - PowerPoint Índice Copiando diapositivas Menú Edición... 2 Copiando diapositivas utilizando la barra de herramientas... 3 Copiando diapositivas utilizando el menú contextual... 3 Copiando diapositivas

Más detalles

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS. GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS. 1 Direcciones o Ubicaciones, Carpetas y Archivos Botones de navegación. El botón Atrás permite volver a carpetas que hemos examinado anteriormente. El botón Arriba

Más detalles

Teclado sobre una PDA para Personas con Parálisis Cerebral

Teclado sobre una PDA para Personas con Parálisis Cerebral Manual de Usuario - 1 - - 2 - Teclado sobre una PDA para Personas con Parálisis Cerebral Capítulo 1. MANUAL DE USUARIO 12.1 Descripción de la aplicación Este programa le permitirá llevar a cabo las siguientes

Más detalles

Estructuras de Datos y Algoritmos

Estructuras de Datos y Algoritmos Estructuras de Datos y Algoritmos Año 205 Deducción de algunos esfuerzos para una Distribución pseudo-aleatoria de datos Introducción Vamos a desarrollar algunos de los esfuerzos para estructuras que utilizan

Más detalles

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse.

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse. TABLA DE DECISION La tabla de decisión es una herramienta que sintetiza procesos en los cuales se dan un conjunto de condiciones y un conjunto de acciones a tomar según el valor que toman las condiciones.

Más detalles