
Thoughtful Machine Learning with Python
Matthew Kirk
- Editorial
- O'Reilly
- Año
- 2017
- Páginas
- ~216
- Nivel
- Intermedio
De qué trata
Obra de Matthew Kirk centrada en fusionar la ingeniería de software profesional con el aprendizaje automático, aplicando la disciplina del desarrollo guiado por pruebas (Test-Driven Development o TDD) a la creación y verificación de modelos en Python 3. Está dirigida a desarrolladores de software e ingenieros de datos de nivel intermedio que ya conocen los fundamentos de la programación orientada a objetos en Python y desean adentrarse en el machine learning con rigor metodológico, evitando tratar a los algoritmos como cajas negras imposibles de depurar.
El autor parte del marco teórico del aprendizaje probablemente aproximadamente correcto (PAC learning) y la formulación de hipótesis científicas comprobables antes de escribir código. Detalla la implementación y testeo de algoritmos fundamentales como K-Nearest Neighbors (KNN), clasificación bayesiana ingenua (Naive Bayes), árboles de decisión, Random Forests, cadenas y Modelos Ocultos de Markov (HMM), máquinas de vectores de soporte (SVM), redes neuronales artificiales feed-forward y algoritmos de clustering como K-Means y Expectation-Maximization. Para ello se apoya principalmente en el módulo estándar unittest de Python, complementado con NumPy, SciPy, Pandas y Scikit-learn.
En la práctica, cada capítulo guía al lector en la escritura de pruebas unitarias y pruebas de costura (seam testing) para validar componentes concretos: clasificadores de spam, etiquetadores gramaticales con el corpus Brown, análisis de sentimientos de texto y segmentación de datos. Su mayor contribución es demostrar cómo diseñar código de aprendizaje automático modular, mantenible y protegido contra sobreajuste o regresiones mediante pruebas automatizadas. Deja fuera arquitecturas profundas modernas (deep learning) y librerías como PyTorch o TensorFlow, enfocándose en la solidez de los algoritmos clásicos. Es recomendable contar con nociones básicas de álgebra lineal y familiaridad previa con pruebas unitarias.
- Test-Driven Development
- Python 3
- unittest
- Scikit-learn
- NumPy
- Naive Bayes
- Support Vector Machines
- Hidden Markov Models
- Random Forest
- Clustering K-Means
¿Cómo enseña?
Teoría + práctica
- ✓ Incluye ejercicios
- ✓ Incluye proyectos
Proyectos
Filtro clasificador de spam con Naive Bayes
Implementación guiada por TDD de un clasificador probabilístico de correo no deseado con pruebas unitarias que validan la tokenización, el cálculo de probabilidades y la gestión de términos no vistos.
Etiquetador gramatical con Modelos Ocultos de Markov
Construcción y verificación mediante tests del algoritmo de Viterbi aplicado al corpus lingüístico Brown para asignar categorías morfosintácticas a palabras dentro de secuencias de texto.
Analizador de sentimientos con Support Vector Machines
Desarrollo de un modelo SVM con funciones de núcleo (kernels) para clasificar la polaridad de reseñas y textos, comprobando rigurosamente las fronteras de decisión con suites de pruebas.

