LUCA ADM LUCA Talk: Comunicación inteligente y Big Data en el punto de venta: Loterías y Apuestas del Estado FORMATO: Charla de 30 minutos + Q&A de 10 minutosCUÁNDO: 10 de febrero, 16:00 h (CET)CÓMO: Inscripción gratuita en eventbrite SOBRE QUÉ: El conocimiento de los clientes y su comportamiento de...
Paloma Recuero de los Santos Las 5 tendencias que impulsan el IoT En los post anteriores de nuestra serie IoT4All, hemos hablado de las distintas formas de definir “internet de las cosas”, y sobre cómo se conectan y comunican los dispositivos....
Paloma Recuero de los Santos Phyton para todos: 5 formas de detectar “missing values” En este nuevo post de la serie Phyton para todos, vamos a ver un ejemplo práctico sobre cómo detectar “missing values”, o campos vacíos en nuestros datos de trabajo....
Paloma Recuero de los Santos Video Post #8: Inteligencia Artificial vs Inteligencia Cognitiva ¿Conoces la diferencia? En los últimos años el término “Inteligencia Artificial” parece estar perdiendo terreno a favor de otros como “Inteligencia Cognitiva”, “Tecnologías smart” etc. Pero, ¿tienen realmente el mismo significado?. En...
LUCA Una solución para adaptar la flota de vehículos frente a la COVID-19 y la tormenta Filomena La movilidad es un aspecto clave tanto en el día a día de las ciudades como en las situaciones excepcionales que hemos experimentado en el último año por la...
LUCA Caso de éxito: Departamento de Transporte de UK El Departamento de Transporte es el organismo gubernamental responsable de la mayor parte de la red de transporte del Reino Unido. Nuestro cliente necesitaba entender rápidamente los patrones de...
LUCA Conociendo a los clientes del Centro Comercial La Vaguada con LUCA Store Conocer el perfil de los clientes, sus necesidades y deseos es indispensable para cualquier marca. Aquellas compañías que sepan lo que quiere su público objetivo conseguirán llegar a sus...
LUCA Quito, la primera ciudad inteligente de America Latina ¿Cuántas personas cogen el metro al día? ¿En que paradas se bajan? ¿Cuánto tiempo tardan en llegar a su destino? Todas estas preguntas podrán ser respondidas gracias a la alianza...
LUCA ADM LUCA Talk: Comunicación inteligente y Big Data en el punto de venta: Loterías y Apuestas del Estado FORMATO: Charla de 30 minutos + Q&A de 10 minutosCUÁNDO: 10 de febrero, 16:00 h (CET)CÓMO: Inscripción gratuita en eventbrite SOBRE QUÉ: El conocimiento de los clientes y su comportamiento de...
LUCA LUCA Talk: Cómo detectar patologías médicas con Deep Learning La Inteligencia Artificial se está adentrando cada vez en más sectores y disciplinas, también y de forma muy beneficiosa en el mundo de la salud, lo que llamaríamos eHealth...
LUCA ADM LUCA Talk: Comunicación inteligente y Big Data en el punto de venta: Loterías y Apuestas del Estado FORMATO: Charla de 30 minutos + Q&A de 10 minutosCUÁNDO: 10 de febrero, 16:00 h (CET)CÓMO: Inscripción gratuita en eventbrite SOBRE QUÉ: El conocimiento de los clientes y su comportamiento de...
LUCA LUCA Talk: Blockchain para garantizar la trazabilidad de vacunas FORMATO: Charla de 30 minutos + Q&A de 10 minutosCUÁNDO: 20 de enero, 16:00 h (CET)CÓMO: Inscripción gratuita en eventbrite Trazabilidad es una de las características que vienen a nuestra...
Python para todos (5): Termina tu primer experimento de Machine Learning con PythonPaloma Recuero de los Santos 17 abril, 2018 Llegamos por fin a la última parte del experimento de Machine Learning con Python para todos los públicos. Hemos ido paso a paso, a lo largo de 5 post, aclarando dudas, aprendiendo sobre la marcha, sin prisa, pero sin pausa. En este último post seleccionamos los algoritmos, construimos el modelo, y lo ponemos a prueba con el dataset de validación. Hemos construido un buen modelo, y lo mejor de todo, le hemos perdido miedo a Python. Así que…¡ a seguir aprendiendo! Los pasos que vamos a dar a partir de ahora son los siguientes: Carga de los datos y módulos/librerías necesarias para este ejemplo.Exploración de los datos .Evaluación de diferentes algoritmos para seleccionar el modelos más adecuado a este caso.Aplicación del modelo para hacer predicciones a partir de lo “aprendido”. Para que no sea demasiado largo, en este 4º post realizaremos los dos primeros pasos y, en el siguiente y último (¡todo llega!), el tercero y el cuarto. 3. Selección del algoritmos. Ha llegado el momento de crear modelos a partir de los datos conocidos y estimar su precisión sobre datos nuevos. Para ello vamos a dar los siguientes pasos.: Separaremos una parte de los datos para crear un dataset de validaciónUsaremos validación cruzada de 10 interacciones para estimar la precisiónConstruiremos 5 modelos diferentes para predecir, a partir de las medidas de las flores recogidas en el dataset, a qué especie pertenece una flor nuevaSeleccionaremos el mejor modelo 3.1 Creación del conjunto de datos de validación. ¿Cómo sabemos si nuestro modelo es bueno?. Para conocer qué tipo de métricas podemos usar para evaluar la “bondad” de un modelo basado en Machine Learning, os recomendamos leer este post que publicamos recientemente sobre la Matriz de Confusión. Usaremos métodos estadísticos para estimar la precisión de los modelos, pero también tendremos que evaluarlos sobre datos “nuevos”. Para ello, tal y como hicimos en un experimento anterior de Machine Learning, esta vez en Azure Machine Learning Studio, reservaremos un 20% de los datos del dataset original. Así, aplicándolo a este conjunto de validación, podremos comprobar cómo funciona el modelo que hemos generado entrenando, el algoritmo que elijamos en este caso, con el 80% restante. Este procedimiento es lo que se conoce como método de retención (holdout method). Con el siguiente código, que, como hemos hecho hasta ahora podemos teclear o copiar y pegar en nuestro Jupyter Notebook, separamos los datos en los conjuntos de entrenamiento X_train, Y_train, y los de validación X_validation, Y_validation. Este método resulta práctico porque es muy rápido a la hora de computar. Sin embargo, no es muy preciso, ya que los resultados varían mucho si elegimos datos de entrenamiento diferentes. Debido a estas carencias surgió el concepto de validación cruzada. 3.2 Validación cruzada El objetivo de la validación cruzada o cross-validation es garantizar que los resultados que obtengamos sean independientes de la partición entre datos de entrenamiento y datos de validación, y por eso se usa mucho en para validar modelos generados en proyectos de IA. Consiste en repetir y calcular la media aritmética de las medidas de evaluación que obtenemos sobre diferentes particiones. En este caso, vamos a utilizar un proceso de validación cruzada con 10 interacciones. Eso significa que nuestro conjunto de datos de entrenamiento, se divide en 10 partes, entrena en 9, valida en 1 y repite el proceso 10 veces. En la imagen podemos ver un ejemplo muy visual de cómo sería el proceso con 4 interacciones. Figura 1: Validación Cruzada, (By Joan.domenech91 CC BY-SA 3.0) Para evaluar el modelo, elegimos para la variable de estimación scoring la métrica accuracy (precisión), que representa el ratio entre el número de instancias que el modelo ha predicho correctamente, frente al número total de instancias del dataset, multiplicado por 100 para dar un resultado porcentual. Para ello, añadimos el siguiente código: 3.3 Construcción de los modelos Como a priori no sabemos qué algoritmos pueden funcionar mejor para este problema, vamos a probar con 6 diferentes, tanto lineales (LR, LDA), como no lineales (KNN, CART, NB y SVM). Las gráficas iniciales ya indican que podemor ir por buen camino, porque que se aprecia que algunas clases van a ser linealmente separables en alguna dimensión. Vamos a evaluar los siguientes algoritmos: Regresión logística (LR)Análisis del Discriminante lineal (LDA)K- Vecinos más cercanos (KNN)Árboles de clasificación y regresión (CART)Gaussiana Naive Bayes (NB)Máquinas de vectores de soporte (SVM) Antes de cada ejecución resetearemos el valor inicial (seed) para asegurarnos que la evaluación de cada algoritmo se realiza usando el mismo conjunto de datos (data split), para asegurarnos de que los resultados sean directamente comparables. Añadimos, por tanto, el siguiente código: 3.4 Elegimos el modelo que funciona mejor Si ejecutamos las celdas (Cell/Run Cells) podemos observar los estimadores para cada modelo. De esta forma, los podemos comparar y elegir el mejor. Si observamos los resultados obtenidos, podemos ver que el modelo que da un mayor valor de precisión es KNN (98%) Figura 2: Resultados de precisión de los distintos algoritmos. También podemos hacer una gráfica con los resultados de evaluación de los modelos y comparar su distribución y la precisión media para cada modelo (ya que se cada algoritmo se evalúa en 10 interacciones por el tipo de validación cruzada que hemos elegido). Para ello, añadimos el siguiente código: Obtenemos como resultado: Figura 3: Box and Whisker plots de comparación de algoritmos. En el diagrama de caja y bigotes se aprecia claramente cómo la precisión para muchas de las muestras en los modelos KNN, NB y SVM llega a ser del 100%, mientras que el modelo que ofrece menor precisión es la regresión lineal LR. 4. Aplicamos el modelo para hacer predicciones. Ha llegado el momento de poner a prueba el modelo creado a partir de los datos de entrenamiento. Para ello, lo que hacemos es aplicarlo a esa parte del dataset original que separamos al principio como dataset de validación. Como tenemos los valores correctos de clasificación, y no se han usado en el entrenamiento del modelo, si comparamos los valores reales con predichos por el modelo sabremos si el modelo es bueno o no. Para ello, aplicamos el modelo elegido (el que nos haya dado mayor precisión en el paso anterior) directamente a éste dataset, y resumimos los resultados con un valor de precisión final (final validation score), una matriz de confusión y un informe de clasificación. Para aplicar el modelo basado en el algoritmo SVM, no tenemos más que ejecutar el siguiente código: Obtenemos algo similar a esto: Figura 4: Evaluación del algoritmo sobre el dataset de validación. Como vemos, la precisión es 0.93, un 93%, un dato muy bueno. La matriz de confusión, por su parte, nos indica el número de puntos para los cuales la predicción del modelo ha sido correcta (valores en la diagonal: 7+10+11=28), y los elementos fuera la diagonal son los errores de predicción (2). Por tanto, podemos concluir que es un buen modelo que podemos aplicar con tranquilidad a un nuevo dataset. Hemos basado el modelo en el algoritmo SVM, pero los valores de precisión para KNN también son muy buenos. ¿Os animáis a hacer éste último paso aplicando este otro algoritmo? Con este paso, podríamos dar por terminado nuestro primer experimento de Machine Learning con Python. Nuestra recomendación: vuelve a hacer todo el experimento, toma nota de las dudas que te surjan, intenta buscar respuestas por tu cuenta, prueba a hacer pequeños cambios en el código, como el último que hemos propuesto y…. En plataformas como Coursera, edX, DataCamp, o CodeAcademy puedes encontrar cursos gratuitos para seguir avanzando. ¡No dejes de aprender!. Todos los post de este tutorial, aquí: Introducción: Machine Learning con Python para todos los públicos.Python para todos (1): Instalación del entorno Anaconda.Python para todos (2): ¿Qué son los Jupiter Notebook?. Creamos nuestro primer notebook y practicamos algunos comandos fáciles.Python para todos (3): ¿Qué son las librerías?. Preparamos el entorno.Python para todos (4): Empezamos el experimento propiamente. Carga de datos, análisis exploratorio (dimensiones del dataset, estadísticas, visualización etc)Python para todos (5) Final: Creación de los modelos y estimación de su precisión Agradecimientos a Jason Brownie, autor de experimento original en el que se basa esta serie. No te pierdas ninguno de nuestros post. Suscríbete a LUCA Data Speaks. También puedes seguirnos en nuestras redes sociales: @Telefonica, @LUCA_D3, @ElevenPaths Esta semana en el blog de LUCA: (9 al 15 de Abril)Deep Learning vs Atari: entrena tu IA para dominar videojuegos clásicos (Parte I)
Pilar Estrella Palomares Cómo transformar una compañía (XIII): Metodología Agile de ejecución de proyectos Hoy en día, cuando gestionas proyectos tan disruptivos como los que desarrollamos en IoT & Big Data Tech que te permiten transformar una compañía, el plantearse trabajar al margen...
LUCA ADM LUCA Talk: Comunicación inteligente y Big Data en el punto de venta: Loterías y Apuestas del Estado FORMATO: Charla de 30 minutos + Q&A de 10 minutosCUÁNDO: 10 de febrero, 16:00 h (CET)CÓMO: Inscripción gratuita en eventbrite SOBRE QUÉ: El conocimiento de los clientes y su comportamiento de...
Fran Ramírez Las matemáticas del Machine Learning: Números aleatorios y dónde encontrarlos (Parte I) ¿Cuántas veces a la hora de repartir algo con los amigos/as hemos dicho: “piensa en un número del 1 al 10”? ¿La respuesta es realmente aleatoria? Si utilizamos una...
LUCA Una solución para adaptar la flota de vehículos frente a la COVID-19 y la tormenta Filomena La movilidad es un aspecto clave tanto en el día a día de las ciudades como en las situaciones excepcionales que hemos experimentado en el último año por la...
Francisco Javier Viñas Plaza El gobierno del almacenamiento como palanca de la innovación La Oficina de Dato es un agente de cambio e innovación en una organización. Convierte el gobierno del almacenamiento en una auténtica palanca de la innovación. Veamos el por...
Paloma Recuero de los Santos ENIA, la nueva Estrategia Nacional sobre IA Desde el pasado 2 de diciembre, España cuenta con una nueva Estrategia Nacional de Inteligencia Artificial, ENIA, dotada con un presupuesto de 600 millones de euros para medidas relacionadas...
Es un curso muy bueno, me está sirviendo para dar mis primeros pasos en este mundillo. por cierto, en la parte del código donde se hace el split de os datos, falta importar la función model_selection.train_test_split porque no se ha hecho previamente Responder
hola pablo me ocurrio lo mismo que vos, son metodos que forman parte de la libreria de skylearn. Pudiste solucionar? Responder
agrega en la primera celda donde para importar la libreria: from sklearn.model_selection import train_test_split Responder
(respondo de nuevo porque creo que algo hice mal la primera vez que contesté). Si, encontré el problema, además, gracias a eso tuve que buscar por ahí la solución y he encontrado otros recursos my interesantes por la Web. Responder
Buenas para que funcione es necesario inluir en las importaciones iniciales: from sklearn import model_selection from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier from sklearn.neighbors import KNeighborsClassifier from sklearn.discriminant_analysis import LinearDiscriminantAnalysis from sklearn.naive_bayes import GaussianNB from sklearn.svm import SVC from sklearn.metrics import accuracy_score from sklearn.metrics import confusion_matrix from sklearn.metrics import classification_report Responder