[en] This Bachelor Thesis aims to perform a study about the efficiency of automatic learning algorithms prediction in long-distance races. The goal is to predict the result of real runners in future long-distance races, using real data in a database. Automatic learning algorithms will substitute traditional methods to make time predictions (such as VO2MAX or VAM), as they approximate better to real times, because they make use of a greater number of variables and parameters. To do so, we have at our disposal a database that records information about trainings and goal races of real anonymous runners, as well as some additional data such as physical build, age, slope of the route, total race length, length of intervals, time marks when training, etc. Due to the reliability of the data, algorithms should predict more efficiently the results of the runners in a goal race. Before using data it has been necessary to transform them to a format we could manage. By using some python scripts, we have processed the files (in csv format) and then populated the database (SQLite3). Also automated learning algorithms have been implemented in python, using scikit learn library, which is very accurate for our purpose. Several algorithms have been considered and we have studied their efficiency, attaching data and graphical representations of the results. Additionally, to let the interested users be able to enhance their marks using our service, we have implemented a web server based on a RESTful architecture using the Python framework Django. Before choosing this one we have compared some of them to see which one fits better. REST API allows us to interact easily with the system through the web, as well as generate a prediction from a trained learning model.

[es] Este Trabajo Fin de Grado ha consistido en la realización de un estudio sobre la predicción de tiempos en carreras de fondo. El objetivo es la predicción del resultado que se obtendría en una prueba de distancia maratón, basándose en datos reales de corredores. Para ello, en lugar de utilizar métodos tradicionales de predicción de marcas (como VO2MAX o VAM), se ha hecho uso de algoritmos de aprendizaje automático que ofrecen una mejor aproximación al resultado real, ya que tienen en cuenta un mayor número de factores y variables. Para ello se dispone de una base de datos que contiene información sobre entrenamientos y carreras reales de corredores anónimos, así como datos sobre su complexión física, su edad, el desnivel del recorrido, la distancia total de la carrera, la distancia de los intervalos del recorrido, datos de tiempos en los entrenamientos, etc. Debido a que estos datos son reales, fiables y contrastados, los algoritmos de aprendizaje automático deberían predecir de una forma más exacta los resultados de los usuarios en la carrera objetivo. Antes de poder usar los datos de los que disponemos, ha sido necesaria una transformación de los mismos a un formato con el cual pudiéramos trabajar. Primero se han realizado varios scripts para procesar los ficheros de datos (en formato CSV) y poblar la base de datos (en SQLite3). Los algoritmos utilizados se han implementado en Python, debido a la existencia de librerías de aprendizaje automático de gran calidad, como scikit learn. Se han tenido en cuenta diversos algoritmos y se ha realizado un estudio sobre la eficacia de los mismos, aportando datos estadísticos y representaciones gráficas de los resultados. Adicionalmente, con el objetivo de ofrecer un servicio de predicción para corredores interesados en mejorar sus marcas y utilizar esta información como referencia en sus entrenamientos, se ha implementado un servicio web basado en una arquitectura RESTful. El servidor se ha construido sobre un framework en Python, Django. Antes de realizar esta elección, se ha realizado un pequeño estudio previo sobre qué plataforma utilizar para la implementación del servicio. La API REST, que se ha implementado y probado posteriormente a través de scripts y pruebas manuales, nos permite interactuar con la base de datos de forma fácil a través de la web, así como generar las predicciones a partir de un modelo de aprendizaje.