Dépôt de code du livre Python Machine Learning
REMARQUE IMPORTANTE (21/09/2017) :
Ce référentiel GitHub contient les exemples de code de la 1ère édition du livre Python Machine Learning. Si vous recherchez les exemples de code de la 2e édition , veuillez plutôt vous référer à ce référentiel.
Ce à quoi vous pouvez vous attendre, ce sont 400 pages riches en matériel utile à peu près tout ce que vous devez savoir pour démarrer avec l'apprentissage automatique... de la théorie au code réel que vous pouvez directement mettre en action ! Il ne s’agit pas encore d’un autre livre « Voici comment fonctionne scikit-learn ». Mon objectif est d'expliquer tous les concepts sous-jacents, de vous dire tout ce que vous devez savoir en termes de bonnes pratiques et de mises en garde, et nous mettrons ces concepts en pratique principalement en utilisant NumPy, scikit-learn et Theano.
Vous ne savez pas si ce livre est fait pour vous ? Veuillez consulter les extraits de l'avant-propos et de la préface, ou consulter la section FAQ pour plus d'informations.
1ère édition, publiée le 23 septembre 2015
Broché : 454 pages
Éditeur: Packt Publishing
Langue : Anglais
ISBN-10 : 1783555130
ISBN-13 : 978-1783555130
ASIN Kindle : B00YSILNL0
Allemand ISBN-13 : 978-3958454224
Japonais ISBN-13 : 978-4844380603
Italien ISBN-13 : 978-8850333974
Chinois (traditionnel) ISBN-13 : 978-9864341405
Chinois (continent) ISBN-13 : 978-7111558804
Coréen ISBN-13 : 979-1187497035
Russe ISBN-13 : 978-5970604090
Table des matières et blocs-notes de code
Cliquez simplement sur les liens ipynb
/ nbviewer
à côté des titres de chapitre pour afficher les exemples de code (actuellement, les liens vers les documents internes ne sont pris en charge que par la version NbViewer). Veuillez noter qu'il ne s'agit que des exemples de code accompagnant le livre, que j'ai téléchargé pour votre commodité ; sachez que ces cahiers peuvent ne pas être utiles sans les formules et le texte descriptif.
- Extraits de l'avant-propos et de la préface
- Instructions pour configurer Python et Jupiter Notebook
- Machine Learning – Donner aux ordinateurs la capacité d'apprendre à partir des données [dir] [ipynb] [nbviewer]
- Formation d'algorithmes d'apprentissage automatique pour la classification [dir] [ipynb] [nbviewer]
- Une visite guidée des classificateurs d'apprentissage automatique utilisant Scikit-Learn [dir] [ipynb] [nbviewer]
- Construire de bons ensembles de formation – Pré-traitement des données [dir] [ipynb] [nbviewer]
- Compression des données via la réduction de dimensionnalité [dir] [ipynb] [nbviewer]
- Apprentissage des meilleures pratiques pour l'évaluation de modèles et l'optimisation des hyperparamètres [dir] [ipynb] [nbviewer]
- Combiner différents modèles pour l'apprentissage d'ensemble [dir] [ipynb] [nbviewer]
- Application de l'apprentissage automatique à l'analyse des sentiments [dir] [ipynb] [nbviewer]
- Intégration d'un modèle d'apprentissage automatique dans une application Web [dir] [ipynb] [nbviewer]
- Prédiction des variables cibles continues avec l'analyse de régression [dir] [ipynb] [nbviewer]
- Travailler avec des données non étiquetées – Analyse de clustering [dir] [ipynb] [nbviewer]
- Formation de réseaux de neurones artificiels pour la reconnaissance d'images [dir] [ipynb] [nbviewer]
- Parallélisation de la formation sur les réseaux neuronaux via Theano [dir] [ipynb] [nbviewer]
Référence d'équation
[PDF] [TEX]
Diapositives pour l'enseignement
Un grand merci à Dmitriy Dligach pour avoir partagé ses diapositives de son cours d'apprentissage automatique actuellement proposé à l'Université Loyola de Chicago.
- https://github.com/dmitriydligach/PyMLSlides
Ressources mathématiques et NumPy supplémentaires
Certains lecteurs posaient des questions sur les amorces Math et NumPy, car elles n'étaient pas incluses en raison de limitations de longueur. Cependant, j'ai récemment rassemblé de telles ressources pour un autre livre, mais j'ai rendu ces chapitres disponibles gratuitement en ligne dans l'espoir qu'ils serviront également de documentation de base utile pour ce livre :
Bases de l'algèbre [PDF] [EPUB]
Introduction au calcul et à la différenciation [PDF] [EPUB]
Introduction à NumPy [PDF] [EPUB] [Code Notebook]
Citer ce livre
Vous êtes invités à réutiliser les extraits de code ou d'autres contenus de ce livre dans des publications scientifiques et d'autres ouvrages ; dans ce cas, j'apprécierais les citations de la source originale :
BibTeX :
@Book{raschka2015python,
author = {Raschka, Sebastian},
title = {Python Machine Learning},
publisher = {Packt Publishing},
year = {2015},
address = {Birmingham, UK},
isbn = {1783555130}
}
Député :
Raschka, Sébastien. Apprentissage automatique Python . Birmingham, Royaume-Uni : Packt Publishing, 2015. Imprimé.
Commentaires et avis
Courts extraits de critiques
Le nouveau livre de Sebastian Raschka, Python Machine Learning, vient de sortir. J'ai eu la chance de lire une critique et c'est exactement comme je m'y attendais – vraiment génial ! Il est bien organisé, très facile à suivre et offre non seulement une bonne base aux non-experts intelligents, mais les praticiens y trouveront également des idées et apprendront de nouvelles astuces.
– Lon Riesberg chez Data Elixir
Superbe travail ! Jusqu’à présent, pour moi, cela semble avoir atteint le bon équilibre entre théorie et pratique… mathématiques et code !
– Brian Thomas
J'ai lu (presque) tous les titres d'apprentissage automatique basés sur Scikit-learn et celui-ci est sans conteste le meilleur du marché.
– Jason Wolosonovitch
Le meilleur livre que j’ai vu sortir de PACKT Publishing. Il s'agit d'une introduction très bien écrite à l'apprentissage automatique avec Python. Comme d’autres l’ont noté, un mélange parfait de théorie et d’application.
– Josh D.
Un livre avec un mélange de qualités difficiles à trouver : combine les mathématiques nécessaires pour contrôler la théorie avec le codage appliqué en Python. C'est également formidable de voir qu'il ne gaspille pas de papier en donnant une introduction à Python, comme le font de nombreux autres livres simplement pour plaire au plus grand public. Vous pouvez dire qu'il a été écrit par des écrivains expérimentés et pas seulement par des geeks bricoleurs.
– Client Amazon
Sebastian Raschka a créé un étonnant didacticiel d'apprentissage automatique qui combine théorie et pratique. Le livre explique l'apprentissage automatique d'un point de vue théorique et contient des tonnes d'exemples codés pour montrer comment vous utiliseriez réellement la technique d'apprentissage automatique. Il peut être lu par un programmeur débutant ou avancé.
- William P. Ross, 7 livres Python à lire absolument
Commentaires plus longs
Si vous avez besoin d'aide pour décider si ce livre est fait pour vous, consultez certaines des critiques « plus longues » liées ci-dessous. (Si vous avez écrit une critique, faites-le-moi savoir et je serai heureux de l'ajouter à la liste).
- Python Machine Learning Review par Patrick Hill au Chartered Institute for IT
- Critique de livre : Python Machine Learning par Sebastian Raschka par Alex Turner sur WhatPixel
Links
- ebook et livre de poche sur Amazon.com, Amazon.co.uk, Amazon.de
- ebook et livre de poche de Packt (l'éditeur)
- dans d'autres librairies : Google Books, O'Reilly, Safari, Barnes & Noble, Apple iBooks, ...
- plateformes sociales : Goodreads
Traductions
- Traduction italienne via "Apogeo"
- Traduction allemande via "mitp Verlag"
- Traduction japonaise via "Impress Top Gear"
- Traduction chinoise (chinois traditionnel)
- Traduction chinoise (chinois simple)
- Traduction coréenne via "Kyobo"
- Traduction polonaise via "Helion"
Références documentaires et ressources de lecture supplémentaires
Errata
Carnets bonus (pas dans le livre)
- Implémentation de la régression logistique [dir] [ipynb] [nbviewer]
- Une configuration de base de recherche de pipeline et de grille [dir] [ipynb] [nbviewer]
- Un exemple de validation croisée imbriquée étendue [dir] [ipynb] [nbviewer]
- Un modèle d'application Web Flask Barebones simple [afficher le répertoire] [télécharger sous forme de fichier zip]
- Lecture de chiffres manuscrits de MNIST dans des tableaux NumPy [GitHub ipynb] [nbviewer]
- Persistance du modèle Scikit-learn à l'aide de JSON [GitHub ipynb] [nbviewer]
- Régression logistique multinomiale / régression softmax [GitHub ipynb] [nbviewer]
"Contenu associé" (pas dans le livre)
- Évaluation de modèles, sélection de modèles et sélection d'algorithmes dans l'apprentissage automatique - Partie I
- Évaluation de modèles, sélection de modèles et sélection d'algorithmes dans l'apprentissage automatique - Partie II
- Évaluation de modèles, sélection de modèles et sélection d'algorithmes dans l'apprentissage automatique - Partie III
SciPy 2016
Nous avons passé un très bon moment à SciPy 2016 à Austin ! Ce fut un réel plaisir de rencontrer et de discuter avec autant de lecteurs de mon livre. Merci beaucoup pour tous les gentils mots et commentaires ! Et au cas où vous l'auriez manqué, Andreas Mueller et moi avons donné une introduction à l'apprentissage automatique avec Scikit-learn ; si vous êtes intéressé, les enregistrements vidéo de la Partie I et de la Partie II sont désormais en ligne !
PyData Chicago 2016
J'ai tenté la tâche plutôt difficile d'introduire scikit-learn et l'apprentissage automatique en seulement 90 minutes lors de PyData Chicago 2016. Les diapositives et le matériel didacticiel sont disponibles sur « Learning scikit-learn -- An Introduction to Machine Learning in Python ».
Note
J'ai mis en place une bibliothèque distincte, mlxtend
, contenant des implémentations supplémentaires d'algorithmes d'apprentissage automatique (et de « science des données ») générales. J'ai également ajouté des implémentations de ce livre (par exemple, le tracé de la région de décision, le réseau neuronal artificiel et les algorithmes de sélection séquentielle de fonctionnalités) avec des fonctionnalités supplémentaires.
Traductions
Chers lecteurs ,
tout d’abord, je tiens à vous remercier tous pour votre grand soutien ! Je suis vraiment heureux de tous les excellents commentaires que vous m'avez envoyés jusqu'à présent, et je suis heureux que le livre ait été si utile à un large public.
Au cours des derniers mois, j'ai reçu des centaines de courriels et j'ai essayé d'y répondre autant que possible dans le temps dont je disposais. Pour les rendre également utiles aux autres lecteurs, j'ai rassemblé plusieurs de mes réponses dans la section FAQ (ci-dessous).
De plus, certains d’entre vous m’ont interrogé sur une plateforme permettant aux lecteurs de discuter du contenu du livre. J'espère que cela vous donnera l'occasion de discuter et de partager vos connaissances avec d'autres lecteurs :
Forum de discussion des groupes Google
(Et je ferai de mon mieux pour répondre moi-même aux questions si le temps le permet ! :))
La seule chose à faire avec un bon conseil, c'est de le transmettre. Cela ne sert jamais à rien pour soi-même.
-Oscar Wilde
Exemples et applications par les lecteurs
Encore une fois, je dois dire (un grand !) MERCI pour tous les bons retours sur le livre. J'ai reçu de nombreux e-mails de lecteurs, qui mettent les concepts et les exemples de ce livre dans le monde réel et les utilisent à bon escient dans leurs projets. Dans cette section, je commence à rassembler certaines de ces excellentes applications, et je serais plus qu'heureux d'ajouter votre projet à cette liste - envoyez-moi simplement un petit e-mail !
- 40 scripts sur la reconnaissance optique de caractères par Richard Lyman
- Expériences de code par Jeremy Nation
- Ce que j'ai appris en implémentant un classificateur à partir de zéro en Python par Jean-Nicholas Hould
FAQ
Questions générales
- Que sont l’apprentissage automatique et la science des données ?
- Pourquoi vous et d’autres personnes implémentez-vous parfois des algorithmes d’apprentissage automatique à partir de zéro ?
- Sur quel parcours d'apprentissage/discipline en science des données devrais-je me concentrer ?
- À quel moment faut-il commencer à contribuer à l’open source ?
- Selon vous, quelle est l’importance d’avoir un mentor dans le processus d’apprentissage ?
- Où se trouvent les meilleures communautés en ligne centrées sur la science des données/l'apprentissage automatique ou Python ?
- Comment expliqueriez-vous l’apprentissage automatique à un ingénieur logiciel ?
- À quoi ressemblerait votre programme pour un débutant en apprentissage automatique ?
- Quelle est la définition de la science des données ?
- Comment les Data Scientists sélectionnent-ils les modèles ? Est-ce différent de Kaggle ?
Questions sur le domaine de l'apprentissage automatique
- Quel est le lien entre l’intelligence artificielle et l’apprentissage automatique ?
- Quels sont quelques exemples concrets d’applications de l’apprentissage automatique sur le terrain ?
- Quels sont les différents domaines d’études en data mining ?
- Quelles sont les différences dans la nature de la recherche entre les deux domaines : l'apprentissage automatique et l'exploration de données ?
- Comment savoir si le problème peut être résolu grâce à l’apprentissage automatique ?
- Quelles sont les origines du machine learning ?
- Comment la classification, en tant que machine d’apprentissage, a-t-elle été développée ?
- Quels algorithmes d’apprentissage automatique peuvent être considérés comme parmi les meilleurs ?
- Quelles sont les grandes catégories de classificateurs ?
- Quelle est la différence entre un classificateur et un modèle ?
- Quelle est la différence entre un algorithme d’apprentissage paramétrique et un algorithme d’apprentissage non paramétrique ?
- Quelle est la différence entre une fonction de coût et une fonction de perte en apprentissage automatique ?
Questions sur les concepts et les statistiques du ML
Fonctions de coûts et optimisation
- Ajustement d'un modèle via des équations fermées, descente de gradient, descente de gradient stochastique ou apprentissage par mini-lots : quelle est la différence ?
- Comment dérivez-vous la règle de descente de gradient pour la régression linéaire et Adaline ?
Analyse de régression
- Quelle est la différence entre Pearson R et la régression linéaire simple ?
Modèles d'arbres
- Comment fonctionne le modèle de forêt aléatoire ? En quoi est-ce différent du bagging et du boosting dans les modèles d’ensemble ?
- Quels sont les inconvénients de l’utilisation d’un algorithme d’arbre de décision classique pour un grand ensemble de données ?
- Pourquoi les implémentations d’algorithmes d’arbre de décision sont-elles généralement binaires, et quels sont les avantages des différentes métriques d’impuretés ?
- Pourquoi développons-nous des arbres de décision via l'entropie au lieu de l'erreur de classification ?
- Quand une forêt aléatoire peut-elle être très performante ?
Évaluation du modèle
- Qu’est-ce que le surapprentissage ?
- Comment puis-je éviter le surapprentissage ?
- Est-il toujours préférable d'avoir le plus grand nombre de plis possible lors d'une validation croisée ?
- Lors de la formation d'un classificateur SVM, est-il préférable d'avoir un grand ou un petit nombre de vecteurs de support ?
- Comment évaluer un modèle ?
- Quelle est la meilleure métrique de validation pour la classification multi-classes ?
- Quels facteurs dois-je prendre en compte lors du choix d’une technique de modèle prédictif ?
- Quels sont les meilleurs ensembles de données sur les jouets pour aider à visualiser et à comprendre le comportement du classificateur ?
- Comment sélectionner les noyaux SVM ?
- Interlude : Comparaison et calcul des mesures de performance en validation croisée – Problèmes de classe déséquilibrée et 3 façons différentes de calculer le score F1
Régression logistique
- Qu'est-ce que la régression Softmax et quel est son lien avec la régression logistique ?
- Pourquoi la régression logistique est-elle considérée comme un modèle linéaire ?
- Quelle est l’interprétation probabiliste de la régression logistique régularisée ?
- La régularisation dans la régression logistique entraîne-t-elle toujours un meilleur ajustement et une meilleure généralisation ?
- Quelle est la principale différence entre un Bayes naïf et une régression logistique ?
- Qu'est-ce que le « softmax et la perte logistique multinomiale » dans le contexte de l'apprentissage automatique ?
- Quelle est la relation entre la régression logistique et les réseaux de neurones et quand utiliser lesquels ?
- Régression Logistique : Pourquoi la fonction sigmoïde ?
- Existe-t-il une solution analytique à la régression logistique similaire à l'équation normale pour la régression linéaire ?
Réseaux de neurones et apprentissage profond
- Quelle est la différence entre le deep learning et le machine learning habituel ?
- Pouvez-vous donner une explication visuelle de l'algorithme de rétro-propagation pour les réseaux de neurones ?
- Pourquoi a-t-il fallu si longtemps pour inventer les réseaux profonds ?
- Quels sont les bons livres/articles pour apprendre le deep learning ?
- Pourquoi y a-t-il tant de bibliothèques de deep learning ?
- Pourquoi certaines personnes détestent-elles les réseaux de neurones/le deep learning ?
- Comment puis-je savoir si le Deep Learning fonctionne mieux pour un problème spécifique que SVM ou une forêt aléatoire ?
- Qu'est-ce qui ne va pas lorsque l'erreur de mon réseau neuronal augmente ?
- Comment déboguer un algorithme de réseau neuronal artificiel ?
- Quelle est la différence entre un modèle Perceptron, Adaline et un modèle de réseau neuronal ?
- Quelle est l’idée de base derrière la technique du dropout ?
Autres algorithmes pour l'apprentissage supervisé
- Pourquoi le voisin le plus proche est-il un algorithme paresseux ?
Apprentissage non supervisé
- Quels sont certains des problèmes liés au clustering ?
Apprentissage semi-supervisé
- Quels sont les avantages de l’apprentissage semi-supervisé par rapport à l’apprentissage supervisé et non supervisé ?
Méthodes d'ensemble
- Est-il préférable de combiner des classificateurs avec l’empilement plutôt que de sélectionner le meilleur ?
Prétraitement, sélection de fonctionnalités et extraction
- Pourquoi devons-nous réutiliser les paramètres d’entraînement pour transformer les données de test ?
- Quelles sont les différentes méthodes de réduction de dimensionnalité en apprentissage automatique ?
- Quelle est la différence entre LDA et PCA pour la réduction de dimensionnalité ?
- Quand dois-je appliquer la normalisation/standardisation des données ?
- Le centrage moyen ou la mise à l'échelle des caractéristiques affectent-ils une analyse en composantes principales ?
- Comment s’attaquer à un problème de machine learning avec un grand nombre de fonctionnalités ?
- Quelles sont les approches courantes pour gérer les données manquantes ?
- Quelle est la différence entre les méthodes de filtre, de wrapper et intégrées pour la sélection de fonctionnalités ?
- L'étape de préparation/prétraitement des données doit-elle être considérée comme une partie de l'ingénierie des fonctionnalités ? Pourquoi ou pourquoi pas ?
- Un sac de mots présente-t-il une représentation pour la classification de texte comme une matrice clairsemée ?
Bayes naïf
- Pourquoi le classificateur Naive Bayes est-il naïf ?
- Quelle est la limite de décision pour Naive Bayes ?
- Puis-je utiliser les classificateurs Naive Bayes pour les types de variables mixtes ?
- Est-il possible de mélanger différents types de variables dans Naive Bayes, par exemple des fonctionnalités binaires et continues ?
Autre
- Qu’est-ce que la distance euclidienne en termes d’apprentissage automatique ?
- Quand faut-il utiliser la médiane, par opposition à la moyenne ?
Langages et bibliothèques de programmation pour la science des données et l'apprentissage automatique
- R est-il largement utilisé aujourd’hui en science des données ?
- Quelle est la principale différence entre TensorFlow et scikit-learn ?
Questions sur le livre
- Puis-je utiliser des paragraphes et des images du livre dans des présentations ou sur mon blog ?
- En quoi est-ce différent des autres livres sur l’apprentissage automatique ?
- Quelle version de Python a été utilisée dans les exemples de code ?
- Quelles technologies et bibliothèques sont utilisées ?
- Quelle version/format de livre recommanderiez-vous ?
- Pourquoi avez-vous choisi Python pour l’apprentissage automatique ?
- Pourquoi utilisez-vous autant de traits de soulignement de début et de fin dans les exemples de code ?
- Quel est le but des expressions
return self
dans vos exemples de code ? - Y a-t-il des prérequis et des pré-lectures recommandées ?
- Comment puis-je appliquer SVM aux données catégorielles ?
Contact
Je suis heureux de répondre aux questions! Écrivez-moi simplement un e-mail ou envisagez de poser la question sur la liste de diffusion des groupes Google.
Si vous souhaitez rester en contact, j'ai un flux Twitter assez animé (@rasbt) consacré à la science des données et à l'apprentissage automatique. Je tiens également un blog sur lequel je publie toutes les choses qui me passionnent particulièrement.