El aprendizaje automático está invadiendo el mundo del software. Si quieres entender y trabajar la vanguardia del aprendizaje automático, las redes neuronales y el aprendizaje prof...
El aprendizaje automático está invadiendo el mundo del software. Si quieres entender y trabajar la vanguardia del aprendizaje automático, las redes neuronales y el aprendizaje profundo, esta segunda edición del bestseller Python Machine Learning, es tu libro. Modernizado y ampliado para incluir las tecnologías de código abierto más recientes, como scikit-learn, Keras y TensorFlow, este manual proporciona el conocimiento práctico y las técnicas necesarias para crear eficaces aplicaciones de aprendizaje automático y aprendizaje profundo en Python. El conocimiento y la experiencia únicos de Sebastian Raschka y Vahid Mirjalili presentan los algoritmos de aprendizaje automático y aprendizaje profundo, antes de continuar con temas avanzados en análisis de datos. Combinan los principios teóricos del aprendizaje automático con un enfoque práctico de codificación para una comprensión completa de la teoría del aprendizaje automático y la implementación con Python. Aprenderás a: Explorar y entender los frameworks clave para la ciencia de datos, el aprendizaje automático y el aprendizaje profundo Formular nuevas preguntas sobre datos con modelos de aprendizaje automático y redes neuronales Aprovechar el poder de las últimas librerías de código abierto de Python para aprendizaje automático Dominar la implementación de redes neuronales profundas con la librería de TensorFlow Incrustar modelos de aprendizaje automáticos en aplicacions web accesibles Predecir resultados objetivos continuos con análisis de regresión Descubrir patrones ocultos y estructuras en datos con agrupamientos Analizar imágenes mediante técnicas de aprendizaje profundo Profundizar en datos de medios sociales y textuales con el análisis de sentimientos
Índice
Introducción xvii
Capítulo 1. Dar a los ordenadores el poder de aprender de los datos 23
Crear máquinas inteligentes para transformar datos en conocimiento 24
Los tres tipos de aprendizaje automático 24
Hacer predicciones sobre el futuro con el aprendizaje supervisado 25
Clasifi cación para predecir etiquetas de clase 25
Regresión para predecir resultados continuos 27
Resolver problemas interactivos con aprendizaje reforzado 28
Descubrir estructuras ocultas con el aprendizaje sin supervisión 29
Encontrar subgrupos con el agrupamiento 29
Reducción de dimensionalidad para comprimir datos 30
Introducción a la terminología básica y las notaciones 30
Una hoja de ruta para crear sistemas de aprendizaje automático 33
Preprocesamiento: Dar forma a los datos 34
Entrenar y seleccionar un modelo predictivo 34
Evaluar modelos y predecir instancias de datos no vistos 35
Utilizar Python para el aprendizaje automático 36
Instalar Python y sus paquetes desde Python Package Index 36
Utilizar la distribución y el gestor de paquetes Anaconda de Python 37
Paquetes para cálculo científi co, ciencia de datos
y aprendizaje automático 37
Resumen 38
Capítulo 2. Entrenar algoritmos simples de aprendizaje
automático para clasifi cación 39
Neuronas artifi ciales: un vistazo a los inicios del aprendizaje
automático 40
La defi nición formal de una neurona artifi cial 41
La regla de aprendizaje del perceptrón 43
Implementar un algoritmo de aprendizaje de perceptrón en Python 46
Una API perceptrón orientada a objetos 46
Entrenar un modelo de perceptrón en el conjunto de datos Iris 50
Neuronas lineales adaptativas y la convergencia del aprendizaje 56
Minimizar funciones de coste con el descenso de gradiente 57
Implementar Adaline en Python 60
Mejorar el descenso de gradiente mediante el escalado
de características 64
Aprendizaje automático a gran escala y descenso
de gradiente estocástico 66
Resumen 72
Capítulo 3. Un recorrido por los clasifi cadores
de aprendizaje automático con scikit-learn 73
Elegir un algoritmo de clasifi cación 74
Primeros pasos con scikit-learn: entrenar un perceptrón 74
Modelar probabilidades de clase mediante regresión logística 81
Intuición en regresión logística y probabilidades condicionales 81
Aprender los pesos de la función de coste logística 85
Convertir una implementación Adaline en un algoritmo
para regresión logística 88
Entrenar un modelo de regresión logística con scikit-learn 93
Abordar el sobreajuste con la regularización 95
Margen de clasifi cación máximo con máquinas
de vectores de soporte 98
Margen máximo de intuición 99
Tratar un caso separable no lineal con variables fl exibles 101
Implementaciones alternativas en scikit-learn 103
Resolver problemas no lineales con una SVM kernelizada 104
Métodos kernel para datos inseparables lineales 104
El truco de kernel para encontrar hiperplanos separados
en un espacio de mayor dimensionalidad 106
Aprendizaje basado en árboles de decisión 110
Maximizar la ganancia de información: sacar el mayor partido
de tu inversión 112
Crear un árbol de decisión 117
Combinar árboles de decisión múltiples mediante bosques aleatorios 120
K-vecinos más cercanos: un algoritmo de aprendizaje vago 123
Resumen 127
Capítulo 4. Generar buenos modelos de entrenamiento:
preprocesamiento de datos 129
Tratar con datos ausentes 129
Identifi car datos ausentes en datos tabulares 130
Eliminar muestras o características con valores ausentes 131
Imputar valores ausentes 132
Entender la API de estimador de scikit-learn 133
Trabajar con datos categóricos 134
Características nominales y ordinales 134
Crear un conjunto de datos de ejemplo 135
Mapear características ordinales 135
Codifi car etiquetas de clase 136
Realizar una codifi cación en caliente sobre características
nominales 138
Dividir un conjunto de datos en conjuntos de prueba
y de entrenamiento individuales 140
Ajustar las características a la misma escala 142
Seleccionar características signifi cativas 145
Regularización L1 y L2 como penalizaciones contra
la complejidad del modelo 146
Una interpretación geométrica de la regularización L2 146
Soluciones dispersas con la regularización L1 148
Algoritmos de selección de características secuenciales 152
Evaluar la importancia de las características
con bosques aleatorios 158
Resumen 161
Capítulo 5. Comprimir datos mediante la reducción
de dimensionalidad 163
Reducción de dimensionalidad sin supervisión mediante
el análisis de componentes principales 164
Los pasos esenciales que se esconden detrás del análisis
de componentes principales 164
Extraer los componentes principales paso a paso 166
Varianza total y explicada 169
Transformación de características 170
Análisis de componentes principales en scikit-learn 173
Compresión de datos supervisada mediante análisis
discriminante lineal 177
Análisis de componentes principales frente a análisis
discriminante lineal 177
Cómo funciona interiormente el análisis discriminante lineal 178
Calcular las matrices de dispersión 179
Seleccionar discriminantes lineales para el nuevo subespacio
de características 182
Proyectar muestras en el nuevo espacio de características 184
ADL con scikit-learn 185
Utilizar el análisis de componentes principales con kernels
para mapeos no lineales 187
Funciones kernel y el truco del kernel 188
Implementar un análisis de componentes principales
con kernels en Python 194
Ejemplo 1: separar formas de media luna 195
Ejemplo 2: separar círculos concéntricos 198
Proyectar nuevos puntos de datos 201
Análisis de componentes principales con kernel en scikit-learn 205
Resumen 206
Capítulo 6. Aprender las buenas prácticas para la evaluación
de modelos y el ajuste de hiperparámetros 207
Simplifi car fl ujos de trabajo con pipelines 207
Cargar el conjunto de datos Cancer Wisconsin 208
Combinar transformadores y estimadores en un pipeline 209
Utilizar la validación cruzada de K iteraciones para evaluar
el rendimiento de un modelo 211
El método de retención 212
Validación cruzada de k iteraciones 213
Depurar algoritmos con curvas de validación y aprendizaje 217
Diagnosticar problemas de sesgo y varianza con curvas
de aprendizaje 218
Resolver el sobreajuste y el subajuste con curvas de validación 221
Ajustar los modelos de aprendizaje automático con la
búsqueda de cuadrículas 223
Ajustar hiperparámetros con la búsqueda de cuadrículas 223
Selección de algoritmos con validación cruzada anidada 225
Observar diferentes métricas de evaluación de rendimiento 227
Leer una matriz de confusión 228
Optimizar la exactitud y la exhaustividad de un modelo
de clasifi cación 229
Representar una característica operativa del receptor 232
Métricas de califi cación para clasifi caciones multiclase 235
Tratar con el desequilibrio de clases 236
Resumen 239
Capítulo 7. Combinar diferentes modelos para
el aprendizaje conjunto 241
Aprender con conjuntos 241
Combinar clasifi cadores mediante el voto mayoritario 246
Implementar un sencillo clasifi cador de voto mayoritario 246
Utilizar el principio de voto mayoritario para hacer predicciones 253
Evaluar y ajustar el clasifi cador conjunto 256
Bagging: construir un conjunto de clasifi cadores
a partir de muestras bootstrap 262
El bagging resumido 262
Aplicar el bagging para clasifi car muestras en el conjunto
de datos Wine 264
Potenciar los clasifi cadores débiles con el boosting adaptado 268
Cómo trabaja el boosting 268
Aplicar AdaBoost con scikit-learn 273
Resumen 276
Capítulo 8. Aplicar el aprendizaje automático para
el análisis de sentimiento 277
Preparar los datos de críticas de cine de IMDb para
el procesamiento de texto 278
Obtener el conjunto de datos de críticas de cine 278
Preprocesar el conjunto de datos de películas en un
formato adecuado 279
Introducir el modelo «bolsa de palabras» 281
Transformar palabras en vectores de características 281
Relevancia de las palabras mediante frecuencia
de términofrecuencia inversa de documento 283
Limpiar datos textuales 286
Procesar documentos en componentes léxicos 288
Entrenar un modelo de regresión logística para clasifi cación
de documentos 290
Trabajar con datos más grandes: algoritmos online
y aprendizaje out-of-core 292
Modelado de temas con Latent Dirichlet Allocation 296
Descomponer documentos de textos con LDA 297
LDA con scikit-learn 297
Resumen 301
Capítulo 9. Incrustar un modelo de aprendizaje automático
en una aplicación web 303
Serializar estimadores de scikit-learn ajustados 304
Confi gurar una base de datos SQLite para el almacenamiento
de datos 307
Desarrollar una aplicación web con Flask 309
Nuestra primera aplicación web con Flask 310
Validación y renderizado de formularios 312
Confi gurar la estructura del directorio 313
Implementar una macro mediante el motor de plantillas Jinja2 314
Añadir estilos con CSS 315
Crear la página resultante 316
Convertir el clasifi cador de críticas de cine en una aplicación web 316
Archivos y carpetas: observar el árbol de directorios 318
Implementar la aplicación principal como app.py 320
Preparar el formulario de críticas 322
Crear una plantilla de página de resultados 324
Desplegar la aplicación web en un servidor público 326
Crear una cuenta de PythonAnywhere 326
Cargar la aplicación del clasifi cador de películas 327
Actualizar el clasifi cador de películas 328
Resumen 330
Capítulo 10. Predicción de variables de destino continuas
con análisis de regresión 331
Introducción a la regresión lineal 332
Regresión lineal simple 332
Regresión lineal múltiple 333
Explorar el conjunto de datos Housing 334
Cargar el conjunto Housing en un marco de datos 335
Visualizar las características importantes de un conjunto de datos 336
Observar las relaciones mediante una matriz de correlación 338
Implementar un modelo de regresión lineal de mínimos
cuadrados ordinarios 341
Resolver la regresión para parámetros de regresión con
el descenso del gradiente 341
Estimar el coefi ciente de un modelo de regresión con scikit-learn 346
Ajustar un modelo de regresión robusto con RANSAC 347
Evaluar el rendimiento de los modelos de regresión lineal 350
Utilizar métodos regularizados para regresión 354
Convertir un modelo de regresión lineal en una curva:
la regresión polinomial 356
Añadir términos polinomiales con scikit-learn 356
Modelar relaciones no lineales en el conjunto de datos Housing 358
Tratar con relaciones no lineales mediante bosques aleatorios 361
Regresión de árbol de decisión 362
Regresión con bosques aleatorios 364
Resumen 367
Capítulo 11. Trabajar con datos sin etiquetar:
análisis de grupos 369
Agrupar objetos por semejanza con k-means 370
Agrupamiento k-means con scikit-learn 370
Una manera más inteligente de colocar los centroides
de los grupos iniciales con k-means++ 375
Agrupamiento pesado frente a no pesado 376
Utilizar el método elbow para encontrar el número óptimo de grupos 379
Cuantifi car la calidad del agrupamiento mediante gráfi cos de silueta 380
Organizar agrupamientos como un árbol jerárquico 385
Agrupar los grupos de manera ascendente 386
Realizar agrupamientos jerárquicos en una matriz de distancias 387
Adjuntar dendrogramas a un mapa de calor 391
Aplicar un agrupamiento aglomerativo con scikit-learn 393
Ubicar regiones de alta densidad con DBSCAN 394
Resumen 400
Capítulo 12. Implementar una red neuronal artifi cial
multicapa desde cero 401
Modelar funciones complejas con redes neuronales artifi ciales 402
Resumen de una red neuronal de una capa 404
La arquitectura de red neuronal multicapa 406
Activar una red neuronal mediante la propagación hacia delante 409
Clasifi car dígitos manuscritos 411
Obtener el conjunto de datos MNIST 412
Implementar un perceptrón multicapa 418
Entrenar una red neuronal artifi cial 429
Calcular la función de coste logística 430
Desarrollar tu intuición para la propagación hacia atrás 433
Entrenar redes neuronales mediante la propagación hacia atrás 434
Sobre la convergencia en redes neuronales 439
Unas últimas palabras sobre la implementación
de redes neuronales 440
Resumen 441
Capítulo 13. Paralelización de entrenamiento de redes
neuronales con TensorFlow 443
TensorFlow y rendimiento de entrenamiento 444
¿Qué es TensorFlow? 445
Cómo aprenderemos TensorFlow 446
Primeros pasos con TensorFlow 446
Trabajar con estructuras de matriz 449
Desarrollar un modelo simple con la API de bajo nivel de TensorFlow 450
Entrenar redes neuronales efi cazmente con las API de alto
nivel de TensorFlow 455
Crear redes neuronales multicapa mediante el API Layers
de TensorFlow 456
Desarrollar una red neuronal multicapa con Keras 460
Elegir funciones de activación para redes multicapa 465
Resumen de la función logística 466
Estimar probabilidades de clase en clasifi caciones multiclase
con softmax 468
Ampliar el espectro de salida con una tangente hiperbólica 469
Activación de la unidad lineal rectifi cada 471
Resumen 473
Capítulo 14. Ir más lejos: la mecánica de TensorFlow 475
Características clave de TensorFlow 476
Rango y tensores de TensorFlow 476
Cómo obtener la dimensión y la forma de un tensor 477
Entender los grafos computacionales de TensorFlow 478
Marcadores de posición en TensorFlow 481
Defi nir marcadores de posición 481
Alimentar marcadores de posición con datos 482
Defi nir marcadores de posición para matrices de datos con
diferentes tamaños de lote 483
Variables en TensorFlow 484
Defi nir variables 485
Inicializar variable 487
Alcance de la variable 488
Reutilizar variables 490
Crear un modelo de regresión 493
Ejecutar objetos en un grafo de TensorFlow mediante
sus nombres 497
Almacenar y restablecer un modelo en TensorFlow 498
Transformar tensores como matrices de datos
multidimensionales 501
Utilizar la mecánica de control de fl ujo para crear grafos 505
Visualizar el grafo con TensorBoard 509
Ampliar tu experiencia en TensorBoard 512
Resumen 513
Capítulo 15. Clasifi car imágenes con redes neuronales
convolucionales profundas 515
Bloques de construcción de redes neuronales convolucionales 516
Entender las CNN y conocer las jerarquías de características 516
Realizar convoluciones discretas 518
Realizar una convolución discreta en una dimensión 518
El efecto del relleno de ceros en una convolución 521
Determinar el tamaño de la salida de convolución 523
Realizar una convolución discreta en 2D 524
Submuestreo 528
Juntarlo todo para crear una CNN 530
Trabajar con entradas múltiples o canales de color 530
Regularizar una red neuronal con la eliminación 534
Implementar una red neuronal convolucional profunda
con TensorFlow 536
La arquitectura de una CNN multicapa 536
Cargar y preprocesar los datos 538
Implementar una CNN en el API de TensorFlow de bajo nivel 539
Implementar una CNN en la API Layers de TensorFlow 552
Resumen 558
Capítulo 16. Modelado de datos secuenciales mediante
redes neuronales recurrentes 559
Introducir datos secuenciales 560
Modelar datos secuenciales: el orden sí importa 560
Representar secuencias 561
Las diferentes categorías del modelado de secuencias 562
RNN para modelar secuencias 563
Entender la estructura y el fl ujo de una RNN 563
Calcular activaciones en una RNN 565
Los retos del aprendizaje de interacciones de largo alcance 568
Unidades de LSTM 570
Implementar una RNN multicapa para modelar secuencias
en TensorFlow 572
Proyecto uno: crear un análisis de sentimiento de las críticas
de películas IMDb con RNN multicapa 573
Preparar los datos 574
Embedding 578
Construir un modelo de RNN 580
El constructor de la clase SentimentRNN 581
El método build 582
Paso 1: defi nir celdas RNN multicapa 584
Paso 2: defi nir los estados iniciales para las celdas RNN 584
Paso 3: crear la RNN utilizando las celdas RNN y sus estados 585
El método train 585
El método predict 587
Instanciar la clase SentimentRNN 587
Entrenar y optimizar el análisis de sentimiento de un modelo RNN 588
Proyecto dos: implementar una RNN para el modelado
de lenguaje a nivel de carácter en TensorFlow 589
Preparar los datos 590
Construir un modelo RNN a nivel de carácter 594
El constructor 595
El método build 596
El método train 598
El método sample 600
Crear y defi nir el modelo CharRNN 601
El modelo CharRNN en el modo de muestreo 602
Resumen del capítulo y del libro 602
Índice analítico 605