Repositorio de códigos de libros de Python Machine Learning
NOTA IMPORTANTE (21/09/2017):
Este repositorio de GitHub contiene los ejemplos de código de la primera edición del libro Python Machine Learning. Si está buscando ejemplos de código de la segunda edición , consulte este repositorio.
Lo que puede esperar son 400 páginas ricas en material útil, casi todo lo que necesita saber para comenzar con el aprendizaje automático... ¡desde la teoría hasta el código real que puede poner directamente en acción! Este no es simplemente otro libro sobre "así es como funciona scikit-learn". Mi objetivo es explicar todos los conceptos subyacentes, decirle todo lo que necesita saber en términos de mejores prácticas y advertencias, y pondremos esos conceptos en práctica utilizando principalmente NumPy, scikit-learn y Theano.
¿No estás seguro de si este libro es para ti? Consulte los extractos del Prólogo y el Prefacio, o consulte la sección de preguntas frecuentes para obtener más información.
1.ª edición, publicada el 23 de septiembre de 2015.
Tapa blanda: 454 páginas.
Editorial: Packt Publishing
Idioma: Inglés
ISBN-10: 1783555130
ISBN-13: 978-1783555130
ASIN de Kindle: B00YSILNL0
ISBN-13 alemán: 978-3958454224
ISBN-13 japonés: 978-4844380603
Italiano ISBN-13: 978-8850333974
Chino (tradicional) ISBN-13: 978-9864341405
Chino (continental) ISBN-13: 978-7111558804
ISBN-13 coreano: 979-1187497035
ISBN-13 ruso: 978-5970604090
Tabla de contenidos y cuadernos de códigos
Simplemente haga clic en los enlaces de ipynb
/ nbviewer
junto a los titulares de los capítulos para ver los ejemplos de código (actualmente, los enlaces de los documentos internos solo son compatibles con la versión de NbViewer). Tenga en cuenta que estos son sólo los ejemplos de código que acompañan al libro, que subí para su comodidad; Tenga en cuenta que estos cuadernos pueden no ser útiles sin las fórmulas y el texto descriptivo.
- Extractos del prólogo y del prefacio
- Instrucciones para configurar Python y Jupiter Notebook
- Aprendizaje automático: brindar a las computadoras la capacidad de aprender de los datos [dir] [ipynb] [nbviewer]
- Entrenamiento de algoritmos de aprendizaje automático para clasificación [dir] [ipynb] [nbviewer]
- Un recorrido por los clasificadores de aprendizaje automático que utilizan Scikit-Learn [dir] [ipynb] [nbviewer]
- Creación de buenos conjuntos de formación: preprocesamiento de datos [dir] [ipynb] [nbviewer]
- Compresión de datos mediante reducción de dimensionalidad [dir] [ipynb] [nbviewer]
- Aprendizaje de las mejores prácticas para la evaluación de modelos y la optimización de hiperparámetros [dir] [ipynb] [nbviewer]
- Combinando diferentes modelos para el aprendizaje conjunto [dir] [ipynb] [nbviewer]
- Aplicación del aprendizaje automático al análisis de sentimientos [dir] [ipynb] [nbviewer]
- Incrustar un modelo de aprendizaje automático en una aplicación web [dir] [ipynb] [nbviewer]
- Predicción de variables objetivo continuas con análisis de regresión [dir] [ipynb] [nbviewer]
- Trabajar con datos sin etiquetar: análisis de agrupación [dir] [ipynb] [nbviewer]
- Entrenamiento de redes neuronales artificiales para el reconocimiento de imágenes [dir] [ipynb] [nbviewer]
- Paralelización del entrenamiento de redes neuronales a través de Theano [dir] [ipynb] [nbviewer]
Referencia de ecuación
[PDF] [TEXTO]
Diapositivas para la enseñanza
Muchas gracias a Dmitriy Dligach por compartir las diapositivas de su curso de aprendizaje automático que se ofrece actualmente en la Universidad Loyola de Chicago.
- https://github.com/dmitriydligach/PyMLSlides
Recursos adicionales de matemáticas y números
Algunos lectores preguntaban sobre las cartillas de Math y NumPy, ya que no se incluyeron debido a limitaciones de longitud. Sin embargo, recientemente reuní dichos recursos para otro libro, pero puse estos capítulos a disposición gratuita en línea con la esperanza de que también sirvan como material de referencia útil para este libro:
Conceptos básicos de álgebra [PDF] [EPUB]
Introducción al cálculo y la diferenciación [PDF] [EPUB]
Introducción a NumPy [PDF] [EPUB] [Cuaderno de códigos]
Citando este libro
Le invitamos a reutilizar los fragmentos de código u otros contenidos de este libro en publicaciones científicas y otros trabajos; en este caso agradecería citas de la fuente original:
BibTeX :
@Book{raschka2015python,
author = {Raschka, Sebastian},
title = {Python Machine Learning},
publisher = {Packt Publishing},
year = {2015},
address = {Birmingham, UK},
isbn = {1783555130}
}
MLA :
Raschka, Sebastián. Aprendizaje automático de Python . Birmingham, Reino Unido: Packt Publishing, 2015. Imprimir.
Comentarios y reseñas
Breves fragmentos de reseña
Se acaba de publicar el nuevo libro de Sebastian Raschka, Python Machine Learning. Tuve la oportunidad de leer una copia de reseña y es tal como esperaba: ¡realmente genial! Está bien organizado, es muy fácil de seguir y no solo ofrece una buena base para los no expertos inteligentes, sino que los profesionales también obtendrán algunas ideas y aprenderán nuevos trucos.
– Lon Riesberg en Data Elixir
¡Excelente trabajo! Hasta ahora, para mí parece haber alcanzado el equilibrio adecuado entre teoría y práctica... ¡matemáticas y código!
-Brian Thomas
He leído (prácticamente) todos los títulos de aprendizaje automático basados en Scikit-learn y este es sin duda el mejor que existe.
– Jason Wolosonovich
El mejor libro que he visto publicado por PACKT Publishing. Esta es una introducción muy bien escrita al aprendizaje automático con Python. Como han señalado otros, una combinación perfecta de teoría y aplicación.
-Josh D.
Un libro con una mezcla de cualidades difíciles de conseguir: combina las matemáticas necesarias para controlar la teoría con la codificación aplicada en Python. También es genial ver que no desperdicia papel al dar una introducción a Python como lo hacen muchos otros libros solo para atraer a una audiencia mayor. Se puede decir que ha sido escrito por escritores expertos y no solo por fanáticos del bricolaje.
– Cliente de Amazon
Sebastian Raschka creó un increíble tutorial de aprendizaje automático que combina teoría con práctica. El libro explica el aprendizaje automático desde una perspectiva teórica y tiene toneladas de ejemplos codificados para mostrar cómo se utilizaría realmente la técnica de aprendizaje automático. Puede ser leído por un programador principiante o avanzado.
- William P. Ross, 7 libros imprescindibles sobre Python
Revisiones más largas
Si necesita ayuda para decidir si este libro es para usted, consulte algunas de las reseñas "más largas" vinculadas a continuación. (Si escribió una reseña, hágamelo saber y estaré encantado de agregarla a la lista).
- Revisión del aprendizaje automático de Python realizada por Patrick Hill en el Chartered Institute for IT
- Reseña del libro: Python Machine Learning de Sebastian Raschka por Alex Turner en WhatPixel
Campo de golf
- libros electrónicos y de bolsillo en Amazon.com, Amazon.co.uk, Amazon.de
- Libro electrónico y edición de bolsillo de Packt (el editor)
- en otras librerías: Google Books, O'Reilly, Safari, Barnes & Noble, Apple iBooks, ...
- plataformas sociales: Goodreads
Traducciones
- Traducción al italiano vía "Apogeo"
- Traducción al alemán a través de "mitp Verlag"
- Traducción al japonés a través de "Impress Top Gear"
- Traducción al chino (chino tradicional)
- Traducción al chino (chino simple)
- Traducción coreana a través de "Kyobo"
- Traducción al polaco a través de "Helion"
Referencias bibliográficas y recursos de lectura adicionales
Erratas
Cuadernos de bonificación (no en el libro)
- Implementación de regresión logística [dir] [ipynb] [nbviewer]
- Una configuración básica de búsqueda de canalización y cuadrícula [dir] [ipynb] [nbviewer]
- Un ejemplo de validación cruzada anidada extendida [dir] [ipynb] [nbviewer]
- Una plantilla de aplicación web Simple Barebones Flask [ver directorio] [descargar como archivo zip]
- Lectura de dígitos escritos a mano de MNIST en matrices NumPy [GitHub ipynb] [nbviewer]
- Persistencia del modelo Scikit-learn usando JSON [GitHub ipynb] [nbviewer]
- Regresión logística multinomial/regresión softmax [GitHub ipynb] [nbviewer]
"Contenido relacionado" (no en el libro)
- Evaluación de modelos, selección de modelos y selección de algoritmos en aprendizaje automático - Parte I
- Evaluación de modelos, selección de modelos y selección de algoritmos en aprendizaje automático - Parte II
- Evaluación de modelos, selección de modelos y selección de algoritmos en aprendizaje automático - Parte III
Ciencia ficción 2016
¡Nos lo pasamos genial en SciPy 2016 en Austin! Fue un verdadero placer conocer y charlar con tantos lectores de mi libro. ¡Muchas gracias por todas las lindas palabras y comentarios! Y en caso de que te lo hayas perdido, Andreas Mueller y yo dimos una Introducción al aprendizaje automático con Scikit-learn ; Si está interesado, ¡las grabaciones de vídeo de la Parte I y la Parte II ya están en línea!
PyData Chicago 2016
Intenté la tarea bastante desafiante de presentar scikit-learn y el aprendizaje automático en solo 90 minutos en PyData Chicago 2016. Las diapositivas y el material del tutorial están disponibles en "Learning scikit-learn - Introducción al aprendizaje automático en Python".
Nota
He creado una biblioteca independiente, mlxtend
, que contiene implementaciones adicionales de algoritmos de aprendizaje automático (y "ciencia de datos" en general). También agregué implementaciones de este libro (por ejemplo, el gráfico de la región de decisión, la red neuronal artificial y algoritmos de selección de características secuenciales) con funcionalidad adicional.
Traducciones
Queridos lectores ,
Primero que nada, ¡quiero agradecerles a todos por el gran apoyo! Estoy muy feliz por todos los excelentes comentarios que me han enviado hasta ahora y me alegro de que el libro haya sido tan útil para una amplia audiencia.
Durante los últimos meses, recibí cientos de correos electrónicos e intenté responder tantos como fuera posible en el tiempo disponible que tenía. Para que también sean útiles para otros lectores, recopilé muchas de mis respuestas en la sección de preguntas frecuentes (a continuación).
Además, algunos de ustedes me preguntaron acerca de una plataforma para que los lectores discutan el contenido del libro. Espero que esto le brinde la oportunidad de discutir y compartir sus conocimientos con otros lectores:
Foro de discusión de Grupos de Google
(¡Y haré todo lo posible para responder las preguntas yo mismo si el tiempo lo permite! :))
Lo único que se puede hacer con un buen consejo es transmitirlo. Nunca es de ninguna utilidad para uno mismo.
- Óscar Wilde
Ejemplos y aplicaciones de los lectores
Una vez más, tengo que decir (¡muchas!) GRACIAS por todos los buenos comentarios sobre el libro. He recibido muchos correos electrónicos de lectores que trasladan los conceptos y ejemplos de este libro al mundo real y los utilizan bien en sus proyectos. En esta sección, estoy empezando a recopilar algunas de estas fantásticas aplicaciones y estaría más que feliz de agregar tu proyecto a esta lista. ¡Solo envíame un correo rápido!
- 40 guiones sobre reconocimiento óptico de caracteres por Richard Lyman
- Experimentos de código de Jeremy Nation
- Lo que aprendí al implementar un clasificador desde cero en Python por Jean-Nicholas Hould
Preguntas frecuentes
Preguntas generales
- ¿Qué son el aprendizaje automático y la ciencia de datos?
- ¿Por qué usted y otras personas a veces implementan algoritmos de aprendizaje automático desde cero?
- ¿En qué ruta de aprendizaje/disciplina en ciencia de datos debería centrarme?
- ¿En qué momento deberíamos empezar a contribuir al código abierto?
- ¿Qué importancia crees que tiene tener un mentor para el proceso de aprendizaje?
- ¿Dónde están las mejores comunidades en línea centradas en ciencia de datos/aprendizaje automático o Python?
- ¿Cómo le explicarías el aprendizaje automático a un ingeniero de software?
- ¿Cómo sería su plan de estudios para un principiante en aprendizaje automático?
- ¿Cuál es la definición de ciencia de datos?
- ¿Cómo realizan los científicos de datos la selección de modelos? ¿Es diferente de Kaggle?
Preguntas sobre el campo del aprendizaje automático
- ¿Cómo se relacionan la Inteligencia Artificial y el Machine Learning?
- ¿Cuáles son algunos ejemplos del mundo real de aplicaciones del aprendizaje automático en este campo?
- ¿Cuáles son los diferentes campos de estudio en minería de datos?
- ¿Cuáles son las diferencias en la naturaleza de la investigación entre los dos campos: aprendizaje automático y minería de datos?
- ¿Cómo sé si el problema se puede resolver mediante el aprendizaje automático?
- ¿Cuáles son los orígenes del aprendizaje automático?
- ¿Cómo se desarrolló la clasificación como máquina de aprendizaje?
- ¿Qué algoritmos de aprendizaje automático pueden considerarse entre los mejores?
- ¿Cuáles son las categorías generales de clasificadores?
- ¿Cuál es la diferencia entre un clasificador y un modelo?
- ¿Cuál es la diferencia entre un algoritmo de aprendizaje paramétrico y un algoritmo de aprendizaje no paramétrico?
- ¿Cuál es la diferencia entre una función de costo y una función de pérdida en el aprendizaje automático?
Preguntas sobre conceptos y estadísticas de ML
Funciones de costos y optimización
- Ajuste de un modelo mediante ecuaciones de forma cerrada frente a descenso de gradiente frente a descenso de gradiente estocástico frente a aprendizaje por mini lotes: ¿cuál es la diferencia?
- ¿Cómo se deriva la regla de descenso de gradiente para la regresión lineal y Adaline?
Análisis de regresión
- ¿Cuál es la diferencia entre Pearson R y la regresión lineal simple?
Modelos de árboles
- ¿Cómo funciona el modelo de bosque aleatorio? ¿En qué se diferencia de embolsar y realzar los modelos de conjunto?
- ¿Cuáles son las desventajas de utilizar el algoritmo clásico de árbol de decisión para un gran conjunto de datos?
- ¿Por qué las implementaciones de algoritmos de árboles de decisión suelen ser binarias y cuáles son las ventajas de las diferentes métricas de impurezas?
- ¿Por qué estamos cultivando árboles de decisión mediante la entropía en lugar del error de clasificación?
- ¿Cuándo puede un bosque aleatorio tener un rendimiento terrible?
Evaluación del modelo
- ¿Qué es el sobreajuste?
- ¿Cómo puedo evitar el sobreajuste?
- ¿Siempre es mejor tener el mayor número posible de pliegues al realizar la validación cruzada?
- Al entrenar un clasificador SVM, ¿es mejor tener una cantidad grande o pequeña de vectores de soporte?
- ¿Cómo evalúo un modelo?
- ¿Cuál es la mejor métrica de validación para la clasificación de clases múltiples?
- ¿Qué factores debo considerar al elegir una técnica de modelo predictivo?
- ¿Cuáles son los mejores conjuntos de datos de juguetes para ayudar a visualizar y comprender el comportamiento de los clasificadores?
- ¿Cómo selecciono los núcleos SVM?
- Interludio: Comparación y cálculo de métricas de rendimiento en validación cruzada: problemas de clases desequilibradas y tres formas diferentes de calcular la puntuación F1
Regresión logística
- ¿Qué es la regresión Softmax y cómo se relaciona con la regresión logística?
- ¿Por qué la regresión logística se considera un modelo lineal?
- ¿Cuál es la interpretación probabilística de la regresión logística regularizada?
- ¿La regularización en la regresión logística siempre da como resultado un mejor ajuste y una mejor generalización?
- ¿Cuál es la principal diferencia entre el ingenuo Bayes y la regresión logística?
- ¿Qué es exactamente el "softmax y la pérdida logística multinomial" en el contexto del aprendizaje automático?
- ¿Cuál es la relación entre la regresión logística y las redes neuronales y cuándo usar cuál?
- Regresión logística: ¿por qué la función sigmoidea?
- ¿Existe una solución analítica para la regresión logística similar a la ecuación normal de la regresión lineal?
Redes neuronales y aprendizaje profundo
- ¿Cuál es la diferencia entre el aprendizaje profundo y el aprendizaje automático habitual?
- ¿Puede dar una explicación visual del algoritmo de retropropagación para redes neuronales?
- ¿Por qué tardaron tanto en inventarse las redes profundas?
- ¿Cuáles son algunos buenos libros/artículos para aprender aprendizaje profundo?
- ¿Por qué hay tantas bibliotecas de aprendizaje profundo?
- ¿Por qué algunas personas odian las redes neuronales/el aprendizaje profundo?
- ¿Cómo puedo saber si el aprendizaje profundo funciona mejor para un problema específico que SVM o un bosque aleatorio?
- ¿Qué pasa cuando aumenta el error de mi red neuronal?
- ¿Cómo depuro un algoritmo de red neuronal artificial?
- ¿Cuál es la diferencia entre un modelo Perceptron, Adaline y red neuronal?
- ¿Cuál es la idea básica detrás de la técnica del abandono?
Otros algoritmos para el aprendizaje supervisado
- ¿Por qué el vecino más cercano es un algoritmo perezoso?
Aprendizaje no supervisado
- ¿Cuáles son algunos de los problemas con la agrupación?
Aprendizaje semisupervisado
- ¿Cuáles son las ventajas del aprendizaje semisupervisado sobre el aprendizaje supervisado y no supervisado?
Métodos de conjunto
- ¿Es mejor combinar clasificadores con apilamiento que seleccionar el mejor?
Preprocesamiento, selección y extracción de características
- ¿Por qué necesitamos reutilizar los parámetros de entrenamiento para transformar los datos de prueba?
- ¿Cuáles son los diferentes métodos de reducción de dimensionalidad en el aprendizaje automático?
- ¿Cuál es la diferencia entre LDA y PCA para la reducción de dimensionalidad?
- ¿Cuándo debo aplicar la normalización/estandarización de datos?
- ¿El centrado medio o el escalado de características afectan el análisis de componentes principales?
- ¿Cómo se ataca un problema de aprendizaje automático con una gran cantidad de funciones?
- ¿Cuáles son algunos enfoques comunes para tratar los datos faltantes?
- ¿Cuál es la diferencia entre los métodos de filtro, contenedor e integrados para la selección de funciones?
- ¿Debería considerarse el paso de preparación/preprocesamiento de datos como parte de la ingeniería de funciones? ¿Por qué o por qué no?
- ¿Se considera una representación de características de una bolsa de palabras para la clasificación de texto como una matriz dispersa?
Bayes ingenuo
- ¿Por qué el clasificador Naive Bayes es ingenuo?
- ¿Cuál es el límite de decisión para Naive Bayes?
- ¿Puedo utilizar clasificadores Naive Bayes para tipos de variables mixtas?
- ¿Es posible mezclar diferentes tipos de variables en Naive Bayes, por ejemplo, características binarias y continuas?
Otro
- ¿Qué es la distancia euclidiana en términos de aprendizaje automático?
- ¿Cuándo se debe utilizar la mediana, en lugar de la media o el promedio?
Lenguajes de programación y bibliotecas para ciencia de datos y aprendizaje automático
- ¿Se utiliza R ampliamente hoy en día en la ciencia de datos?
- ¿Cuál es la principal diferencia entre TensorFlow y scikit-learn?
Preguntas sobre el libro
- ¿Puedo utilizar párrafos e imágenes del libro en presentaciones o en mi blog?
- ¿En qué se diferencia de otros libros sobre aprendizaje automático?
- ¿Qué versión de Python se utilizó en los ejemplos de código?
- ¿Qué tecnologías y bibliotecas se están utilizando?
- ¿Qué versión/formato de libro recomendarías?
- ¿Por qué elegiste Python para el aprendizaje automático?
- ¿Por qué utiliza tantos guiones bajos iniciales y finales en los ejemplos de código?
- ¿Cuál es el propósito de los modismos
return self
en sus ejemplos de código? - ¿Existen requisitos previos y lecturas previas recomendadas?
- ¿Cómo puedo aplicar SVM a datos categóricos?
Contacto
¡Estoy feliz de responder preguntas! Simplemente escríbame un correo electrónico o considere hacer la pregunta en la lista de correo electrónico de Grupos de Google.
Si está interesado en mantenerse en contacto, tengo una transmisión de Twitter bastante animada (@rasbt) sobre ciencia de datos y aprendizaje automático. También mantengo un blog donde publico todas las cosas que me entusiasman especialmente.