Capítulo 1. Dar a los ordenadores el poder de aprender de los datos
Crear máquinas inteligentes para transformar datos en conocimiento
Los tres tipos de aprendizaje automático
Hacer predicciones sobre el futuro con el aprendizaje supervisado
Clasifi cación para predecir etiquetas de clase
Regresión para predecir resultados continuos
Resolver problemas interactivos con aprendizaje reforzado
Descubrir estructuras ocultas con el aprendizaje sin supervisión
Encontrar subgrupos con el agrupamiento
Reducción de dimensionalidad para comprimir datos
Introducción a la terminología básica y las notaciones
Una hoja de ruta para crear sistemas de aprendizaje automático
Preprocesamiento: Dar forma a los datos
Entrenar y seleccionar un modelo predictivo
Evaluar modelos y predecir instancias de datos no vistos
Utilizar Python para el aprendizaje automático
Instalar Python y sus paquetes desde Python Package Index
Utilizar la distribución y el gestor de paquetes Anaconda de Python
Paquetes para cálculo científi co, ciencia de datos
y aprendizaje automático
Capítulo 2. Entrenar algoritmos simples de aprendizaje
automático para clasifi cación
Neuronas artifi ciales: un vistazo a los inicios del aprendizaje
automático
La defi nición formal de una neurona artifi cial
La regla de aprendizaje del perceptrón
Implementar un algoritmo de aprendizaje de perceptrón en Python
Una API perceptrón orientada a objetos
Entrenar un modelo de perceptrón en el conjunto de datos Iris
Neuronas lineales adaptativas y la convergencia del aprendizaje
Minimizar funciones de coste con el descenso de gradiente
Implementar Adaline en Python
Mejorar el descenso de gradiente mediante el escalado
de características
Índice
Aprendizaje automático a gran escala y descenso
de gradiente estocástico
Capítulo 3. Un recorrido por los clasifi cadores
de aprendizaje automático con scikit-learn
Elegir un algoritmo de clasifi cación
Primeros pasos con scikit-learn: entrenar un perceptrón
Modelar probabilidades de clase mediante regresión logística
Intuición en regresión logística y probabilidades condicionales
Aprender los pesos de la función de coste logística
Convertir una implementación Adaline en un algoritmo
para regresión logística
Entrenar un modelo de regresión logística con scikit-learn
Abordar el sobreajuste con la regularización
Margen de clasifi cación máximo con máquinas
de vectores de soporte
Margen máximo de intuición
Tratar un caso separable no lineal con variables fl exibles
Implementaciones alternativas en scikit-learn
Resolver problemas no lineales con una SVM kernelizada
Métodos kernel para datos inseparables lineales
El truco de kernel para encontrar hiperplanos separados
en un espacio de mayor dimensionalidad
Aprendizaje basado en árboles de decisión
Maximizar la ganancia de información: sacar el mayor partido
de tu inversión
Crear un árbol de decisión
Combinar árboles de decisión múltiples mediante bosques aleatorios
K-vecinos más cercanos: un algoritmo de aprendizaje vago
Capítulo 4. Generar buenos modelos de entrenamiento:
preprocesamiento de datos
Tratar con datos ausentes
Identifi car datos ausentes en datos tabulares
Eliminar muestras o características con valores ausentes
Imputar valores ausentes
Entender la API de estimador de scikit-learn
Trabajar con datos categóricos
Características nominales y ordinales
Índice
Crear un conjunto de datos de ejemplo
Mapear características ordinales
Codifi car etiquetas de clase
Realizar una codifi cación en caliente sobre características
nominales
Dividir un conjunto de datos en conjuntos de prueba
y de entrenamiento individuales
Ajustar las características a la misma escala
Seleccionar características signifi cativas
Regularización L1 y L2 como penalizaciones contra
la complejidad del modelo
Una interpretación geométrica de la regularización L2
Soluciones dispersas con la regularización L1
Algoritmos de selección de características secuenciales
Evaluar la importancia de las características
con bosques aleatorios
Resumen
Capítulo 5. Comprimir datos mediante la reducción
de dimensionalidad
Reducción de dimensionalidad sin supervisión mediante
el análisis de componentes principales
Los pasos esenciales que se esconden detrás del análisis
de componentes principales
Extraer los componentes principales paso a paso
Varianza total y explicada
Transformación de características
Análisis de componentes principales en scikit-learn
Compresión de datos supervisada mediante análisis
discriminante lineal
Análisis de componentes principales frente a análisis
discriminante lineal
Cómo funciona interiormente el análisis discriminante lineal
Calcular las matrices de dispersión
Seleccionar discriminantes lineales para el nuevo subespacio
de características
Proyectar muestras en el nuevo espacio de características
ADL con scikit-learn
Utilizar el análisis de componentes principales con kernels
para mapeos no lineales
Índice
Funciones kernel y el truco del kernel
Implementar un análisis de componentes principales
con kernels en Python
Ejemplo 1: separar formas de media luna
Ejemplo 2: separar círculos concéntricos
Proyectar nuevos puntos de datos
Análisis de componentes principales con kernel en scikit-learn
Resumen
Capítulo 6. Aprender las buenas prácticas para la evaluación
de modelos y el ajuste de hiperparámetros
Simplifi car fl ujos de trabajo con pipelines
Cargar el conjunto de datos Cancer Wisconsin
Combinar transformadores y estimadores en un pipeline
Utilizar la validación cruzada de K iteraciones para evaluar
el rendimiento de un modelo
El método de retención
Validación cruzada de k iteraciones
Depurar algoritmos con curvas de validación y aprendizaje
Diagnosticar problemas de sesgo y varianza con curvas
de aprendizaje
Resolver el sobreajuste y el subajuste con curvas de validación
Ajustar los modelos de aprendizaje automático con la
búsqueda de cuadrículas
Ajustar hiperparámetros con la búsqueda de cuadrículas
Selección de algoritmos con validación cruzada anidada
Observar diferentes métricas de evaluación de rendimiento
Leer una matriz de confusión
Optimizar la exactitud y la exhaustividad de un modelo
de clasifi cación
Representar una característica operativa del receptor
Métricas de califi cación para clasifi caciones multiclase
Tratar con el desequilibrio de clases
Resumen
Capítulo 7. Combinar diferentes modelos para
el aprendizaje conjunto
Aprender con conjuntos
Combinar clasifi cadores mediante el voto mayoritario
Implementar un sencillo clasifi cador de voto mayoritario
Utilizar el principio de voto mayoritario para hacer predicciones
Índice
Evaluar y ajustar el clasifi cador conjunto
Bagging: construir un conjunto de clasifi cadores
a partir de muestras bootstrap
El bagging resumido
Aplicar el bagging para clasifi car muestras en el conjunto
de datos Wine
Potenciar los clasifi cadores débiles con el boosting adaptado
Cómo trabaja el boosting
Aplicar AdaBoost con scikit-learn
Resumen
Capítulo 8. Aplicar el aprendizaje automático para
el análisis de sentimiento
Preparar los datos de críticas de cine de IMDb para
el procesamiento de texto
Obtener el conjunto de datos de críticas de cine
Preprocesar el conjunto de datos de películas en un
formato adecuado
Introducir el modelo «bolsa de palabras»
Transformar palabras en vectores de características
Relevancia de las palabras mediante frecuencia
de término–frecuencia inversa de documento
Limpiar datos textuales
Procesar documentos en componentes léxicos
Entrenar un modelo de regresión logística para clasifi cación
de documentos
Trabajar con datos más grandes: algoritmos online
y aprendizaje out-of-core
Modelado de temas con Latent Dirichlet Allocation
Descomponer documentos de textos con LDA
LDA con scikit-learn
Capítulo 9. Incrustar un modelo de aprendizaje automático
en una aplicación web
Serializar estimadores de scikit-learn ajustados
Confi gurar una base de datos SQLite para el almacenamiento
de datos
Desarrollar una aplicación web con Flask
Nuestra primera aplicación web con Flask
Índice
Validación y renderizado de formularios
Confi gurar la estructura del directorio
Implementar una macro mediante el motor de plantillas Jinja2
Añadir estilos con CSS
Crear la página resultante
Convertir el clasifi cador de críticas de cine en una aplicación web
Archivos y carpetas: observar el árbol de directorios
Implementar la aplicación principal como app.py
Preparar el formulario de críticas
Crear una plantilla de página de resultados
Desplegar la aplicación web en un servidor público
Crear una cuenta de PythonAnywhere
Cargar la aplicación del clasifi cador de películas
Actualizar el clasifi cador de películas
Resumen
Capítulo 10. Predicción de variables de destino continuas
con análisis de regresión
Introducción a la regresión lineal
Regresión lineal simple
Regresión lineal múltiple
Explorar el conjunto de datos Housing
Cargar el conjunto Housing en un marco de datos
Visualizar las características importantes de un conjunto de datos
Observar las relaciones mediante una matriz de correlación
Implementar un modelo de regresión lineal de mínimos
cuadrados ordinarios
Resolver la regresión para parámetros de regresión con
el descenso del gradiente
Estimar el coefi ciente de un modelo de regresión con scikit-learn
Ajustar un modelo de regresión robusto con RANSAC 347
Evaluar el rendimiento de los modelos de regresión lineal
Utilizar métodos regularizados para regresión
Convertir un modelo de regresión lineal en una curva:
la regresión polinomial
Añadir términos polinomiales con scikit-learn
Modelar relaciones no lineales en el conjunto de datos Housing
Tratar con relaciones no lineales mediante bosques aleatorios
Regresión de árbol de decisión
Regresión con bosques aleatorios
Resumen
Índice
Capítulo 11. Trabajar con datos sin etiquetar:
análisis de grupos
Agrupar objetos por semejanza con k-means
Agrupamiento k-means con scikit-learn
Una manera más inteligente de colocar los centroides
de los grupos iniciales con k-means++
Agrupamiento pesado frente a no pesado
Utilizar el método elbow para encontrar el número óptimo de grupos
Cuantifi car la calidad del agrupamiento mediante gráfi cos de silueta
Organizar agrupamientos como un árbol jerárquico
Agrupar los grupos de manera ascendente
Realizar agrupamientos jerárquicos en una matriz de distancias
Adjuntar dendrogramas a un mapa de calor
Aplicar un agrupamiento aglomerativo con scikit-learn
Ubicar regiones de alta densidad con DBSCAN
Resumen
Capítulo 12. Implementar una red neuronal artifi cial
multicapa desde cero
Modelar funciones complejas con redes neuronales artifi ciales
Resumen de una red neuronal de una capa
La arquitectura de red neuronal multicapa
Activar una red neuronal mediante la propagación hacia delante
Clasifi car dígitos manuscritos
Obtener el conjunto de datos MNIST
Implementar un perceptrón multicapa
Entrenar una red neuronal artifi cial
Calcular la función de coste logística
Desarrollar tu intuición para la propagación hacia atrás
Entrenar redes neuronales mediante la propagación hacia atrás
Sobre la convergencia en redes neuronales
Unas últimas palabras sobre la implementación
de redes neuronales
Resumen
Capítulo 13. Paralelización de entrenamiento de redes
neuronales con TensorFlow
TensorFlow y rendimiento de entrenamiento
¿Qué es TensorFlow?
Cómo aprenderemos TensorFlow
Primeros pasos con TensorFlow
Índice
Trabajar con estructuras de matriz
Desarrollar un modelo simple con la API de bajo nivel de TensorFlow
Entrenar redes neuronales efi cazmente con las API de alto
nivel de TensorFlow
Crear redes neuronales multicapa mediante el API Layers
de TensorFlow
Desarrollar una red neuronal multicapa con Keras
Elegir funciones de activación para redes multicapa
Resumen de la función logística
Estimar probabilidades de clase en clasifi caciones multiclase
con softmax
Ampliar el espectro de salida con una tangente hiperbólica
Activación de la unidad lineal rectifi cada
Resumen
Capítulo 14. Ir más lejos: la mecánica de TensorFlow
Características clave de TensorFlow
Rango y tensores de TensorFlow
Cómo obtener la dimensión y la forma de un tensor
Entender los grafos computacionales de TensorFlow
Marcadores de posición en TensorFlow
Defi nir marcadores de posición
Alimentar marcadores de posición con datos
Defi nir marcadores de posición para matrices de datos con
diferentes tamaños de lote
Variables en TensorFlow
Defi nir variables
Inicializar variable
Alcance de la variable
Reutilizar variables
Crear un modelo de regresión
Ejecutar objetos en un grafo de TensorFlow mediante
sus nombres
Almacenar y restablecer un modelo en TensorFlow
Transformar tensores como matrices de datos
multidimensionales
Utilizar la mecánica de control de fl ujo para crear grafos
Visualizar el grafo con TensorBoard
Ampliar tu experiencia en TensorBoard
Resumen
Índice
Capítulo 15. Clasificar imágenes con redes neuronales
convolucionales profundas
Bloques de construcción de redes neuronales convolucionales
Entender las CNN y conocer las jerarquías de características
Realizar convoluciones discretas
Realizar una convolución discreta en una dimensión
El efecto del relleno de ceros en una convolución
Determinar el tamaño de la salida de convolución
Realizar una convolución discreta en 2D
Submuestreo
Juntarlo todo para crear una CNN
Trabajar con entradas múltiples o canales de color
Regularizar una red neuronal con la eliminación
Implementar una red neuronal convolucional profunda
con TensorFlow
La arquitectura de una CNN multicapa
Cargar y preprocesar los datos
Implementar una CNN en el API de TensorFlow de bajo nivel
Implementar una CNN en la API Layers de TensorFlow
Resumen
Capítulo 16. Modelado de datos secuenciales mediante
redes neuronales recurrentes
Introducir datos secuenciales
Modelar datos secuenciales: el orden sí importa
Representar secuencias
Las diferentes categorías del modelado de secuencias
RNN para modelar secuencias
Entender la estructura y el flujo de una RNN
Calcular activaciones en una RNN
Los retos del aprendizaje de interacciones de largo alcance
Unidades de LSTM
Implementar una RNN multicapa para modelar secuencias
en TensorFlow
Proyecto uno: crear un análisis de sentimiento de las críticas
de películas IMDb con RNN multicapa
Preparar los datos
Embedding
Construir un modelo de RNN
El constructor de la clase SentimentRNN
El método build
Paso 1: defi nir celdas RNN multicapa
Paso 2: defi nir los estados iniciales para las celdas RNN
Paso 3: crear la RNN utilizando las celdas RNN y sus estados
El método train
El método predict
Instanciar la clase SentimentRNN
Entrenar y optimizar el análisis de sentimiento de un modelo RNN
Proyecto dos: implementar una RNN para el modelado
de lenguaje a nivel de carácter en TensorFlow
Preparar los datos
Construir un modelo RNN a nivel de carácter
El constructor
El método build
El método train
El método sample
Crear y defi nir el modelo CharRNN
El modelo CharRNN en el modo de muestreo
Resumen del capítulo y del libro
Índice analítico