Repositório de código do livro Python Machine Learning
NOTA IMPORTANTE (21/09/2017):
Este repositório GitHub contém os exemplos de código da 1ª edição do livro Python Machine Learning. Se você estiver procurando exemplos de código da 2ª edição , consulte este repositório.
O que você pode esperar são 400 páginas ricas em material útil sobre tudo que você precisa saber para começar com o aprendizado de máquina... da teoria ao código real que você pode colocar diretamente em ação! Este não é apenas mais um livro do tipo "é assim que funciona o scikit-learn". Meu objetivo é explicar todos os conceitos subjacentes, contar tudo o que você precisa saber em termos de melhores práticas e advertências, e colocaremos esses conceitos em ação principalmente usando NumPy, scikit-learn e Theano.
Você não tem certeza se este livro é para você? Confira os trechos do Prefácio e do Prefácio ou dê uma olhada na seção de perguntas frequentes para obter mais informações.
1ª edição, publicada em 23 de setembro de 2015
Brochura: 454 páginas
Editora: Publicação Packt
Idioma: Inglês
ISBN-10: 1783555130
ISBN-13: 978-1783555130
Kindle ASIN: B00YSILNL0
ISBN-13 alemão: 978-3958454224
ISBN-13 japonês: 978-4844380603
ISBN-13 italiano: 978-8850333974
Chinês (tradicional) ISBN-13: 978-9864341405
Chinês (continente) ISBN-13: 978-7111558804
ISBN-13 coreano: 979-1187497035
ISBN-13 russo: 978-5970604090
Índice e cadernos de código
Basta clicar nos links ipynb
/ nbviewer
próximos aos títulos dos capítulos para visualizar os exemplos de código (atualmente, os links de documentos internos são suportados apenas pela versão NbViewer). Observe que estes são apenas os exemplos de código que acompanham o livro, que carreguei para sua conveniência; esteja ciente de que esses cadernos podem não ser úteis sem as fórmulas e o texto descritivo.
- Trechos do Prefácio e Prefácio
- Instruções para configurar o Python e o Jupiter Notebook
- Aprendizado de máquina - Dando aos computadores a capacidade de aprender com os dados [dir] [ipynb] [nbviewer]
- Treinamento de algoritmos de aprendizado de máquina para classificação [dir] [ipynb] [nbviewer]
- Um tour pelos classificadores de aprendizado de máquina usando Scikit-Learn [dir] [ipynb] [nbviewer]
- Construindo bons conjuntos de treinamento – pré-processamento de dados [dir] [ipynb] [nbviewer]
- Compactação de dados por meio de redução de dimensionalidade [dir] [ipynb] [nbviewer]
- Aprendendo as melhores práticas para avaliação de modelo e otimização de hiperparâmetros [dir] [ipynb] [nbviewer]
- Combinando diferentes modelos para aprendizagem em conjunto [dir] [ipynb] [nbviewer]
- Aplicando aprendizado de máquina à análise de sentimento [dir] [ipynb] [nbviewer]
- Incorporando um modelo de aprendizado de máquina em um aplicativo da Web [dir] [ipynb] [nbviewer]
- Previsão de variáveis alvo contínuas com análise de regressão [dir] [ipynb] [nbviewer]
- Trabalhando com dados não rotulados – Análise de cluster [dir] [ipynb] [nbviewer]
- Treinamento de redes neurais artificiais para reconhecimento de imagens [dir] [ipynb] [nbviewer]
- Paralelizando o treinamento de rede neural via Theano [dir] [ipynb] [nbviewer]
Referência de equação
[PDF] [TEXTO]
Slides para ensino
Um grande obrigado a Dmitriy Dligach por compartilhar seus slides de seu curso de aprendizado de máquina que é oferecido atualmente na Loyola University Chicago.
- https://github.com/dmitriydligach/PyMLSlides
Recursos adicionais de matemática e NumPy
Alguns leitores estavam perguntando sobre as cartilhas Math e NumPy, uma vez que não foram incluídas devido a limitações de comprimento. No entanto, recentemente juntei esses recursos para outro livro, mas disponibilizei gratuitamente estes capítulos online na esperança de que também sirvam como material de base útil para este livro:
Noções básicas de álgebra [PDF] [EPUB]
Uma cartilha de cálculo e diferenciação [PDF] [EPUB]
Introdução ao NumPy [PDF] [EPUB] [Caderno de códigos]
Citando este livro
Você está convidado a reutilizar os trechos de código ou outros conteúdos deste livro em publicações científicas e outros trabalhos; neste caso, eu apreciaria citações da fonte original:
BibTeX :
@Book{raschka2015python,
author = {Raschka, Sebastian},
title = {Python Machine Learning},
publisher = {Packt Publishing},
year = {2015},
address = {Birmingham, UK},
isbn = {1783555130}
}
MLA :
Raschka, Sebastian. Aprendizado de máquina Python . Birmingham, Reino Unido: Packt Publishing, 2015. Imprimir.
Comentários e avaliações
Pequenos trechos de revisão
O novo livro de Sebastian Raschka, Python Machine Learning, acaba de ser lançado. Tive a oportunidade de ler uma cópia da resenha e é exatamente como eu esperava - realmente ótimo! É bem organizado, super fácil de seguir e não só oferece uma boa base para pessoas inteligentes e não especialistas, mas também para profissionais que terão algumas ideias e aprenderão novos truques aqui.
– Lon Riesberg em Data Elixir
Excelente trabalho! Até agora, para mim parece ter atingido o equilíbrio certo entre teoria e prática... matemática e código!
–Brian Thomas
Eu li (virtualmente) todos os títulos de aprendizado de máquina baseados no Scikit-learn e este é sem dúvida o melhor que existe.
–Jason Wolosonovich
O melhor livro que já vi da PACKT Publishing. Esta é uma introdução muito bem escrita ao aprendizado de máquina com Python. Como outros observaram, uma mistura perfeita de teoria e aplicação.
–José D.
Um livro com uma mistura de qualidades difíceis de encontrar: combina a matemática necessária para controlar a teoria com a codificação aplicada em Python. Também é bom ver que não é um desperdício de papel fornecer uma introdução sobre Python, como muitos outros livros fazem apenas para atrair um público maior. Você pode dizer que foi escrito por escritores experientes e não apenas por geeks DIY.
– Cliente Amazon
Sebastian Raschka criou um incrível tutorial de aprendizado de máquina que combina teoria com prática. O livro explica o aprendizado de máquina de uma perspectiva teórica e tem vários exemplos codificados para mostrar como você realmente usaria a técnica de aprendizado de máquina. Pode ser lido por um programador iniciante ou avançado.
- William P. Ross, 7 livros obrigatórios sobre Python
Avaliações mais longas
Se precisar de ajuda para decidir se este livro é para você, verifique algumas das análises “mais longas” nos links abaixo. (Se você escreveu um comentário, por favor me avise e ficarei feliz em adicioná-lo à lista).
- Revisão de aprendizado de máquina Python por Patrick Hill no Chartered Institute for IT
- Resenha de livro: Python Machine Learning por Sebastian Raschka por Alex Turner em WhatPixel
Ligações
- e-book e brochura em Amazon.com, Amazon.co.uk, Amazon.de
- e-book e brochura da Packt (a editora)
- em outras livrarias: Google Books, O'Reilly, Safari, Barnes & Noble, Apple iBooks, ...
- plataformas sociais: Goodreads
Traduções
- Tradução italiana via "Apogeo"
- Tradução alemã via "mitp Verlag"
- Tradução japonesa via "Impress Top Gear"
- Tradução chinesa (chinês tradicional)
- Tradução chinesa (chinês simples)
- Tradução coreana via "Kyobo"
- Tradução polonesa via "Helion"
Referências de literatura e recursos de leitura adicional
Errata
Cadernos bônus (não no livro)
- Implementação de regressão logística [dir] [ipynb] [nbviewer]
- Uma configuração básica de pipeline e pesquisa de grade [dir] [ipynb] [nbviewer]
- Um exemplo de validação cruzada aninhada estendida [dir] [ipynb] [nbviewer]
- Um modelo simples de Webapp Barebones Flask [ver diretório] [baixar como arquivo zip]
- Lendo dígitos manuscritos de MNIST em matrizes NumPy [GitHub ipynb] [nbviewer]
- Persistência do modelo Scikit-learn usando JSON [GitHub ipynb] [nbviewer]
- Regressão logística multinomial / regressão softmax [GitHub ipynb] [nbviewer]
"Conteúdo relacionado" (não no livro)
- Avaliação de modelos, seleção de modelos e seleção de algoritmos em aprendizado de máquina - Parte I
- Avaliação de modelos, seleção de modelos e seleção de algoritmos em aprendizado de máquina - Parte II
- Avaliação de modelos, seleção de modelos e seleção de algoritmos em aprendizado de máquina - Parte III
SciPy 2016
Nós nos divertimos muito no SciPy 2016 em Austin! Foi um verdadeiro prazer conhecer e conversar com tantos leitores do meu livro. Muito obrigado por todas as belas palavras e comentários! E caso você tenha perdido, Andreas Mueller e eu demos uma introdução ao aprendizado de máquina com Scikit-learn ; se você estiver interessado, as gravações de vídeo da Parte I e da Parte II já estão online!
PyData Chicago 2016
Tentei a tarefa bastante desafiadora de apresentar o scikit-learn e o aprendizado de máquina em apenas 90 minutos no PyData Chicago 2016. Os slides e o material tutorial estão disponíveis em "Learning scikit-learn - Uma introdução ao aprendizado de máquina em Python".
Observação
Eu configurei uma biblioteca separada, mlxtend
, contendo implementações adicionais de algoritmos de aprendizado de máquina (e "ciência de dados" em geral). Também adicionei implementações deste livro (por exemplo, o gráfico da região de decisão, a rede neural artificial e algoritmos de seleção sequencial de recursos) com funcionalidades adicionais.
Traduções
Caros leitores ,
em primeiro lugar, quero agradecer a todos vocês pelo grande apoio! Estou muito feliz com todos os ótimos comentários que você me enviou até agora e feliz que o livro tenha sido tão útil para um público amplo.
Nos últimos meses, recebi centenas de e-mails e tentei responder o máximo possível no tempo disponível. Para torná-los úteis também para outros leitores, coletei muitas das minhas respostas na seção FAQ (abaixo).
Além disso, alguns de vocês me perguntaram sobre uma plataforma para os leitores discutirem o conteúdo do livro. Espero que isso proporcione uma oportunidade para você discutir e compartilhar seu conhecimento com outros leitores:
Fórum de discussão dos Grupos do Google
(E tentarei o meu melhor para responder às perguntas se o tempo permitir! :))
A única coisa a fazer com um bom conselho é transmiti-lo. Nunca é útil para si mesmo.
- Oscar Wilde
Exemplos e aplicações de leitores
Mais uma vez, devo dizer (muito!) OBRIGADO por todos os bons comentários sobre o livro. Recebi muitos e-mails de leitores que colocam os conceitos e exemplos deste livro no mundo real e fazem bom uso deles em seus projetos. Nesta seção, estou começando a reunir alguns desses ótimos aplicativos e ficaria mais do que feliz em adicionar seu projeto a esta lista - basta me enviar um e-mail rápido!
- 40 scripts sobre reconhecimento óptico de caracteres por Richard Lyman
- Experimentos de código por Jeremy Nation
- O que aprendi implementando um classificador do zero em Python por Jean-Nicholas Hould
Perguntas frequentes
Perguntas Gerais
- O que são aprendizado de máquina e ciência de dados?
- Por que você e outras pessoas às vezes implementam algoritmos de aprendizado de máquina do zero?
- Em qual caminho/disciplina de aprendizagem em ciência de dados devo me concentrar?
- Em que ponto alguém deve começar a contribuir para o código aberto?
- Quão importante você acha que ter um mentor é para o processo de aprendizagem?
- Onde estão as melhores comunidades online centradas em ciência de dados/aprendizado de máquina ou python?
- Como você explicaria o aprendizado de máquina para um engenheiro de software?
- Como seria seu currículo para um iniciante em aprendizado de máquina?
- Qual é a definição de ciência de dados?
- Como os cientistas de dados realizam a seleção de modelos? É diferente do Kaggle?
Perguntas sobre o campo de aprendizado de máquina
- Como a Inteligência Artificial e o Aprendizado de Máquina estão relacionados?
- Quais são alguns exemplos reais de aplicações de aprendizado de máquina na área?
- Quais são os diferentes campos de estudo em mineração de dados?
- Quais são as diferenças na natureza da pesquisa entre os dois campos: aprendizado de máquina e mineração de dados?
- Como posso saber se o problema pode ser resolvido por meio de aprendizado de máquina?
- Quais são as origens do aprendizado de máquina?
- Como foi desenvolvida a classificação, como máquina de aprendizagem?
- Quais algoritmos de aprendizado de máquina podem ser considerados entre os melhores?
- Quais são as amplas categorias de classificadores?
- Qual é a diferença entre um classificador e um modelo?
- Qual é a diferença entre um algoritmo de aprendizagem paramétrico e um algoritmo de aprendizagem não paramétrico?
- Qual é a diferença entre uma função de custo e uma função de perda no aprendizado de máquina?
Perguntas sobre conceitos e estatísticas de ML
Funções de Custo e Otimização
- Ajustar um modelo por meio de equações de formato fechado vs. Gradient Descent vs Stochastic Gradient Descent vs Mini-Batch Learning - qual é a diferença?
- Como você deriva a regra Gradient Descent para Regressão Linear e Adaline?
Análise de regressão
- Qual é a diferença entre Pearson R e regressão linear simples?
Modelos de árvore
- Como funciona o modelo de floresta aleatória? Qual a diferença entre ensacamento e reforço em modelos de conjunto?
- Quais são as desvantagens de usar o algoritmo clássico de árvore de decisão para um grande conjunto de dados?
- Por que as implementações de algoritmos de árvore de decisão são geralmente binárias e quais são as vantagens das diferentes métricas de impureza?
- Por que estamos crescendo árvores de decisão por meio da entropia em vez do erro de classificação?
- Quando uma floresta aleatória pode ter um desempenho terrível?
Avaliação do modelo
- O que é sobreajuste?
- Como posso evitar o overfitting?
- É sempre melhor ter o maior número possível de dobras ao realizar a validação cruzada?
- Ao treinar um classificador SVM, é melhor ter um número grande ou pequeno de vetores de suporte?
- Como avaliar um modelo?
- Qual é a melhor métrica de validação para classificação multiclasse?
- Que fatores devo considerar ao escolher uma técnica de modelo preditivo?
- Quais são os melhores conjuntos de dados de brinquedos para ajudar a visualizar e compreender o comportamento do classificador?
- Como seleciono kernels SVM?
- Interlúdio: Comparando e calculando métricas de desempenho em validação cruzada - problemas de classe desequilibrados e três maneiras diferentes de calcular a pontuação F1
Regressão Logística
- O que é regressão Softmax e como ela está relacionada à regressão logística?
- Por que a regressão logística é considerada um modelo linear?
- Qual é a interpretação probabilística da regressão logística regularizada?
- A regularização na regressão logística sempre resulta em melhor ajuste e melhor generalização?
- Qual é a principal diferença entre Bayes ingênuo e regressão logística?
- O que exatamente é o “softmax e a perda logística multinomial” no contexto do aprendizado de máquina?
- Qual é a relação entre Regressão Logística e Redes Neurais e quando usar quais?
- Regressão Logística: Por que função sigmóide?
- Existe uma solução analítica para a regressão logística semelhante à equação normal para a regressão linear?
Redes Neurais e Aprendizado Profundo
- Qual é a diferença entre aprendizado profundo e aprendizado de máquina normal?
- Você pode dar uma explicação visual para o algoritmo de retropropagação para redes neurais?
- Por que demorou tanto para que as redes profundas fossem inventadas?
- Quais são alguns bons livros/artigos para aprender aprendizagem profunda?
- Por que existem tantas bibliotecas de aprendizagem profunda?
- Por que algumas pessoas odeiam redes neurais/aprendizado profundo?
- Como posso saber se o Deep Learning funciona melhor para um problema específico do que o SVM ou a floresta aleatória?
- O que há de errado quando o erro da minha rede neural aumenta?
- Como faço para depurar um algoritmo de rede neural artificial?
- Qual é a diferença entre um modelo Perceptron, Adaline e uma rede neural?
- Qual é a ideia básica por trás da técnica de abandono?
Outros algoritmos para aprendizagem supervisionada
- Por que o vizinho mais próximo é um algoritmo preguiçoso?
Aprendizagem não supervisionada
- Quais são alguns dos problemas com clustering?
Aprendizagem Semi-Supervisionada
- Quais são as vantagens da aprendizagem semissupervisionada em relação à aprendizagem supervisionada e não supervisionada?
Métodos de conjunto
- Combinar classificadores com empilhamento é melhor do que selecionar o melhor?
Pré-processamento, seleção de recursos e extração
- Por que precisamos reutilizar parâmetros de treinamento para transformar dados de teste?
- Quais são os diferentes métodos de redução de dimensionalidade no aprendizado de máquina?
- Qual é a diferença entre LDA e PCA para redução de dimensionalidade?
- Quando devo aplicar a normalização/padronização de dados?
- A centralização média ou o dimensionamento de recursos afetam uma análise de componentes principais?
- Como você ataca um problema de aprendizado de máquina com um grande número de recursos?
- Quais são algumas abordagens comuns para lidar com dados ausentes?
- Qual é a diferença entre métodos de filtro, wrapper e incorporados para seleção de recursos?
- A etapa de preparação/pré-processamento de dados deve ser considerada uma parte da engenharia de recursos? Por que ou por que não?
- A representação de recursos de um saco de palavras para classificação de texto é considerada uma matriz esparsa?
Ingênuo Bayes
- Por que o Classificador Naive Bayes é ingênuo?
- Qual é o limite de decisão para Naive Bayes?
- Posso usar classificadores Naive Bayes para tipos de variáveis mistas?
- É possível misturar diferentes tipos de variáveis em Naive Bayes, por exemplo, recursos binários e contínuos?
Outro
- O que é distância euclidiana em termos de aprendizado de máquina?
- Quando se deve usar a mediana, em vez da média ou da média?
Linguagens de programação e bibliotecas para ciência de dados e aprendizado de máquina
- O R é amplamente utilizado hoje em dia na ciência de dados?
- Qual é a principal diferença entre o TensorFlow e o scikit-learn?
Perguntas sobre o livro
- Posso usar parágrafos e imagens do livro em apresentações ou no meu blog?
- Como isso difere de outros livros sobre aprendizado de máquina?
- Qual versão do Python foi usada nos exemplos de código?
- Quais tecnologias e bibliotecas estão sendo usadas?
- Qual versão/formato do livro você recomendaria?
- Por que você escolheu Python para aprendizado de máquina?
- Por que você usa tantos sublinhados iniciais e finais nos exemplos de código?
- Qual é o propósito dos idiomas
return self
em seus exemplos de código? - Existem pré-requisitos e pré-leituras recomendadas?
- Como posso aplicar SVM a dados categóricos?
Contato
Fico feliz em responder perguntas! Basta me escrever um e-mail ou considerar fazer a pergunta na lista de e-mail dos Grupos do Google.
Se você estiver interessado em manter contato, tenho um stream bastante animado no Twitter (@rasbt) sobre ciência de dados e aprendizado de máquina. Também mantenho um blog onde posto todas as coisas que me entusiasmam particularmente.