Seu primeiro Projeto de Machine Learning em Python (Passo a Passo)

Aqui você irá montar seu primeiro projeto de Machine Learning (Aprendizado de máquina) usando a linguagem Python.

O que veremos:

  1. Baixar e instalar o Python SciPy e obter o pacote mais útil para aprendizado de máquina em Python.
  2. Carregar um conjunto de dados e entender sua estrutura usando resumos estatísticos e visualização de dados.
  3. Criar 6 modelos de aprendizado de máquina e escolher o melhor.

Se você é um iniciante em aprendizado de máquina e quer finalmente começar a usar o Python, este tutorial foi pensado em sua necessidade, vamos lá!

Como você inicia o aprendizado de máquina em Python?

A melhor maneira de aprender aprendizado de máquina é projetar e concluir pequenos projetos.

Python pode lhe intimidar no começo

Python é uma linguagem interpretada popular e poderosa. Ao contrário do R, o Python é uma linguagem e plataforma completas que você pode usar para pesquisa e desenvolvimento e desenvolvimento de sistemas de produção.

Há também muitos módulos e bibliotecas para escolher, oferecendo várias maneiras de executar cada tarefa. Pode parecer esmagadora.

A melhor maneira de começar a usar o Python para aprendizado de máquina é concluir um projeto.

  • Isso forçará você a instalar e iniciar o interpretador Python (no mínimo).
  • Ele lhe dará uma visão panorâmica de como percorrer um pequeno projeto.
  • Isso lhe dará confiança, talvez para continuar com seus próprios pequenos projetos.

Iniciantes precisam de um projeto pequeno de ponta a ponta

Livros e cursos são frustrantes. Eles te dão muitas receitas e trechos, mas você nunca consegue ver como eles se encaixam.

Quando você está aplicando o aprendizado de máquina aos seus próprios conjuntos de dados, está trabalhando em um projeto.

Um projeto de aprendizado de máquina pode não ser linear, mas tem várias etapas bem conhecidas:

  1. Definir problema.
  2. Prepare dados.
  3. Avaliar algoritmos.
  4. Melhore os resultados.
  5. Apresentar resultados.

A melhor maneira de realmente chegar a um acordo com uma nova plataforma ou ferramenta é trabalhar com um projeto de aprendizado de máquina de ponta a ponta e cobrir os principais passos. Ou seja, a partir do carregamento de dados, resumindo dados, avaliando algoritmos e fazendo algumas previsões.

Hello World em Machine Learning

O melhor projeto pequeno para começar em uma nova ferramenta é a classificação das flores da íris (por exemplo, o conjunto de dados da íris ).

Este é um bom projeto porque é bem compreendido na literatura.

  • Atributos são numéricos, então você tem que descobrir como carregar e manipular dados.
  • É um problema de classificação, permitindo que você pratique com talvez um tipo mais fácil de algoritmo de aprendizado supervisionado.
  • É um problema de classificação de múltiplas classes (multi-nominal) que pode requerer algum manuseio especializado.
  • Ele tem apenas 4 atributos e 150 linhas, o que significa que é pequeno e cabe facilmente na memória (e uma tela ou página A4).
  • Todos os atributos numéricos estão nas mesmas unidades e na mesma escala, não requerendo nenhum dimensionamento especial ou transformações para começar.

Vamos começar com seu projeto de aprendizado de máquina hello world em Python.

Aprendizado de Máquina em Python: Tutorial Passo a Passo (comece aqui)

Nesta seção, vamos trabalhar com um pequeno projeto de aprendizado de máquina de ponta a ponta.

Aqui está uma visão geral do que vamos cobrir:

  1. Instalando a plataforma Python e SciPy.
  2. Carregando o conjunto de dados.
  3. Resumindo o conjunto de dados.
  4. Visualizando o conjunto de dados.
  5. Avaliando alguns algoritmos.
  6. Fazendo algumas previsões.

Não tenha pressa. Trabalhe em cada etapa.

Digite os comandos você mesmo, assim vai se familiarizando com a linguagem.

1. Baixando, Instalando e Iniciando o Python SciPy

Obtenha a plataforma Python e SciPy instalada em seu sistema, se ainda não estiver.

Eu não quero cobrir isso em grande detalhe, porque os outros já têm. Isso já é bastante simples, especialmente se você é um desenvolvedor. Se você precisar de ajuda, faça uma pergunta nos comentários.

1.1 Instalar bibliotecas SciPy

Este tutorial pressupõe a versão 2.7 ou 3.5+ do Python (Download aqui).

Existem 5 bibliotecas chave que você precisará instalar. Abaixo está uma lista das bibliotecas do Python SciPy necessárias para este tutorial:

Existem várias maneiras de instalar essas bibliotecas. Meu melhor conselho é escolher um método e ser consistente na instalação de cada biblioteca.

página de instalação do scipy fornece instruções excelentes para instalar as bibliotecas acima em várias plataformas diferentes, como Linux, Mac OS X e Windows. Se você tiver dúvidas ou perguntas, consulte este guia, que foi seguido por milhares de pessoas.

  • No Mac OS X, você pode usar macports para instalar o Python 2.7 e essas bibliotecas. Para mais informações sobre macports, consulte a página inicial .
  • No Linux você pode usar seu gerenciador de pacotes, como o yum no Fedora para instalar RPMs.

Se você está no Windows ou não está confiante, eu recomendaria instalar a versão gratuita do Anaconda, que inclui tudo que você precisa.

Nota : Este tutorial pressupõe que você tenha o scikit-learn versão 0.18 ou superior instalado.

Precisa de mais ajuda? Veja um destes tutoriais:

1.2 Iniciar o Python e verificar versões

É uma boa ideia certificar-se de que seu ambiente Python foi instalado com êxito e está funcionando conforme o esperado.

O script abaixo ajudará você a testar seu ambiente. Ele importa cada biblioteca requerida neste tutorial e imprime a versão.

Abra uma linha de comando e inicie o interpretador python:

python

# Check the versions of libraries

# Python version
import sys
print(‘Python: {}’.format(sys.version))
# scipy
import scipy
print(‘scipy: {}’.format(scipy.__version__))
# numpy
import numpy
print(‘numpy: {}’.format(numpy.__version__))
# matplotlib
import matplotlib
print(‘matplotlib: {}’.format(matplotlib.__version__))
# pandas
import pandas
print(‘pandas: {}’.format(pandas.__version__))
# scikit-learn
import sklearn
print(‘sklearn: {}’.format(sklearn.__version__))

Aqui está a saída que recebo na minha estação de trabalho do OS X:

Compare a saída acima com às suas versões.

Idealmente, suas versões devem corresponder ou ser mais recentes. As APIs não mudam rapidamente, portanto, não fique muito preocupado se você tiver algumas versões anteriores. Tudo neste tutorial provavelmente ainda funcionará para você.

Se você receber um erro, pare. Agora é a hora de consertar isso.

Se você não puder executar o script acima corretamente, não poderá concluir este tutorial.

Meu melhor conselho é pesquisar sua mensagem de erro no Google ou postar uma pergunta no Stack Exchange .

2. Carregar os dados

Vamos usar o conjunto de dados de flores da íris. Este conjunto de dados é famoso porque é usado como o conjunto de dados “hello world” em aprendizado de máquina e estatísticas por praticamente todos.

O conjunto de dados contém 150 observações de flores de íris. Existem quatro colunas de medidas das flores em centímetros. A quinta coluna é a espécie da flor observada. Todas as flores observadas pertencem a uma das três espécies.

Você pode aprender mais sobre este conjunto de dados na Wikipedia .

Nesta etapa, vamos carregar os dados da íris do CSV file URL.

2.1 Importar bibliotecas

Primeiro, vamos importar todos os módulos, funções e objetos que vamos usar neste tutorial.

2.2 Carregar Conjunto de Dados

Podemos carregar os dados diretamente do repositório UCI Machine Learning (mais fontes de dados, clique aqui).

Estamos usando pandas para carregar os dados. Também usaremos os pandas para explorar os dados, tanto com estatísticas descritivas quanto com visualização de dados.

Observe que estamos especificando os nomes de cada coluna ao carregar os dados. Isso ajudará mais tarde quando explorarmos os dados.

O conjunto de dados deve carregar sem problemas.

Se você tiver problemas de rede, poderá baixar o arquivo iris.csv em seu diretório de trabalho e carregá-lo usando o mesmo método, alterando a URL para o nome do arquivo local.

3. Resumir o conjunto de dados

Agora é hora de dar uma olhada nos dados.

Nesta etapa, vamos dar uma olhada nos dados de algumas maneiras diferentes:

  1. Dimensões do conjunto de dados.
  2. Espreite os dados em si.
  3. Resumo estatístico de todos os atributos.
  4. Divisão dos dados pela variável de classe.

Não se preocupe, cada um dos dados é um comando. Estes são comandos úteis que você pode usar de novo e de novo em projetos futuros.

3.1 Dimensões do Dataset

Podemos ter uma ideia rápida de quantas instâncias (linhas) e quantos atributos (colunas) os dados contêm com a propriedade shape.

Você deve ver 150 instâncias e 5 atributos:

3.2 Analise os dados

Também é sempre uma boa ideia analisar seus dados.

Você deve ver as primeiras 20 linhas dos dados:

   sepal-length  sepal-width  petal-length  petal-width        class
0            5.1          3.5           1.4          0.2  Iris-setosa
1            4.9          3.0           1.4          0.2  Iris-setosa
2            4.7          3.2           1.3          0.2  Iris-setosa
3            4.6          3.1           1.5          0.2  Iris-setosa
4            5.0          3.6           1.4          0.2  Iris-setosa
5            5.4          3.9           1.7          0.4  Iris-setosa
6            4.6          3.4           1.4          0.3  Iris-setosa
7            5.0          3.4           1.5          0.2  Iris-setosa
8            4.4          2.9           1.4          0.2  Iris-setosa
9            4.9          3.1           1.5          0.1  Iris-setosa
10           5.4          3.7           1.5          0.2  Iris-setosa
11           4.8          3.4           1.6          0.2  Iris-setosa
12           4.8          3.0           1.4          0.1  Iris-setosa
13           4.3          3.0           1.1          0.1  Iris-setosa
14           5.8          4.0           1.2          0.2  Iris-setosa
15           5.7          4.4           1.5          0.4  Iris-setosa
16           5.4          3.9           1.3          0.4  Iris-setosa
17           5.1          3.5           1.4          0.3  Iris-setosa
18           5.7          3.8           1.7          0.3  Iris-setosa
19           5.1          3.8           1.5          0.3  Iris-setosa

3.3 Resumo estatístico

Agora podemos dar uma olhada em um resumo de cada atributo.

Isso inclui a contagem, a média, os valores mínimo e máximo, bem como alguns percentis.

Podemos ver que todos os valores numéricos têm a mesma escala (centímetros) e intervalos semelhantes entre 0 e 8 centímetros.

3.4 Distribuição de Classe

Vamos agora dar uma olhada no número de instâncias (linhas) que pertencem a cada classe. Podemos ver isso como uma contagem absoluta.

class
Iris-setosa        50
Iris-versicolor    50
Iris-virginica     50

4. Visualização de Dados

Agora temos uma ideia básica sobre os dados. Precisamos estender isso com algumas visualizações.

Vamos ver dois tipos de gráficos:

  1. Gráficos univariados para entender melhor cada atributo.
  2. Gráficos multivariados para entender melhor as relações entre os atributos.

4.1 Gráficos Univariados

Começamos com alguns gráficos univariados, ou seja, gráficos de cada variável individual.

Dado que as variáveis ​​de entrada são numéricas, podemos criar gráficos de caixa e bigode de cada um.

Isso nos dá uma ideia muito mais clara da distribuição dos atributos de entrada:

Gráficos Box e Whisker para cada variável de entrada do conjunto de dados Iris Flowers

Também podemos criar um histograma de cada variável de entrada para ter uma ideia da distribuição.

Gráficos de histograma para cada variável de entrada para o conjunto de dados de íris

4.2 Gráficos Multivariados

Agora podemos observar as interações entre as variáveis.

Primeiro, vamos olhar para gráficos de dispersão de todos os pares de atributos. Isso pode ser útil para identificar relações estruturadas entre variáveis ​​de entrada.

Observe o agrupamento diagonal de alguns pares de atributos. Isso sugere uma alta correlação e um relacionamento previsível.

Gráfico de Matriz de Dispersão para Cada Variável de Entrada do Conjunto de Dados de Flores da Iris

5. Avalie Algoritmos

Agora é hora de criar alguns modelos dos dados e estimar sua precisão em dados não vistos.

Aqui está o que vamos cobrir nesta etapa:

  1. Separe um conjunto de dados de validação.
  2. Configure os testes para utilizar validação cruzada de 10.
  3. Construa 5 modelos diferentes para prever espécies a partir de medições de flores
  4. Selecione o melhor modelo.

5.1 Criar um conjunto de dados de validação

Precisamos saber que o modelo que criamos é bom.

Mais tarde, usaremos métodos estatísticos para estimar a precisão dos modelos que criamos em dados não vistos. Também queremos uma estimativa mais concreta da precisão do melhor modelo em dados não vistos, avaliando-o em dados reais não vistos.

Ou seja, vamos reter alguns dados que os algoritmos não conseguirão ver e usaremos esses dados para obter uma segunda e independente ideia de quão preciso o melhor modelo pode realmente ser.

Vamos dividir o conjunto de dados carregado em dois, 80% dos quais usaremos para treinar nossos modelos e 20% que iremos reter como um conjunto de dados de validação.

Agora você tem dados de treinamento no X_train e no Y_train para preparar modelos e um X_validation e Y_validation sets que podemos usar mais tarde.

Observe que usamos uma fatia python para selecionar as colunas na matriz NumPy. Se isso é novidade para você, talvez você queira fazer o check-out desta postagem:

5.2 Test Harness

Usaremos a validação cruzada (cross-validation) de 10 vezes para estimar a precisão.

Isso dividirá nosso conjunto de dados em 10 partes, treinar em 9 e testar em 1 e repetir para todas as combinações de divisões de teste de trem.

A semente aleatória (random seed) específica não importa, aprenda mais sobre geradores de números pseudo-aleatórios aqui:

Estamos usando a métrica de “accuracy” para avaliar modelos. Essa é uma proporção do número de instâncias corretamente previstas divididas pelo número total de instâncias no conjunto de dados multiplicado por 100 para fornecer uma porcentagem (por exemplo, 95% de accurate). Nós estaremos usando a  variável de pontuação quando nós executarmos construir e avaliar cada modelo a seguir.

5.3 Construir Modelos

Não sabemos quais algoritmos seriam bons nesse problema ou quais configurações usar. Nós temos uma ideia das parcelas de que algumas das classes são parcialmente linearmente separáveis ​​em algumas dimensões, então esperamos resultados geralmente bons.

Vamos avaliar 6 algoritmos diferentes:

  • Regressão Logística (LR)
  • Análise Linear Discriminante (LDA)
  • K-vizinhos mais próximos (KNN).
  • Árvores de Classificação (Decision Tree) e Regressão (CART).
  • Gaussian Naive Bayes (NB).
  • Support Vector Machines (SVM).

Esta é uma boa mistura de algoritmos simples lineares (LR e LDA), não lineares (KNN, CART, NB e SVM). Redefinimos a semente numérica aleatória antes de cada execução para garantir que a avaliação de cada algoritmo seja executada usando exatamente as mesmas divisões de dados. Isso garante que os resultados sejam diretamente comparáveis.

Vamos construir e avaliar nossos modelos:

5.4 Selecione o melhor modelo

Agora temos 6 modelos e estimativas de precisão para cada um. Precisamos comparar os modelos entre si e selecionar os mais precisos.

Executando o exemplo acima, obtemos os seguintes resultados brutos:

Note que os seus resultados podem ser diferentes. Para mais informações, veja o post:

Nesse caso, podemos ver que parece que o Support Vector Machines (SVM) tem a maior pontuação de accuracy estimada.

Também podemos criar um gráfico dos resultados da avaliação do modelo e comparar o spread e a accuracy média de cada modelo. Há uma população de medidas de accuracy para cada algoritmo porque cada algoritmo foi avaliado 10 vezes (10 fold cross validation).

Você pode ver que as plotagens de caixa e bigode estão esmagadas no topo da faixa, com muitas amostras atingindo 100% de accuracy.

Gráfico Box e Whisker Comparando Algoritmos de Aprendizado de Máquina no Conjunto de Dados de Flores da Iris

6. Faça previsões

O algoritmo KNN é muito simples e foi um modelo preciso baseado em nossos testes. Agora queremos ter uma ideia da accuracy do modelo em nosso conjunto de validação.

Isso nos dará uma verificação final independente da accuracy do melhor modelo. É importante manter um conjunto de validação apenas no caso de você ter feito uma falha durante o treinamento, como overfitting no conjunto de treinamento ou um vazamento de dados. Ambos resultarão em um resultado excessivamente otimista.

Podemos executar o modelo KNN diretamente no conjunto de validação e resumir os resultados como uma pontuação final de accuracy , uma matriz de confusão e um relatório de classificação.

Podemos ver que a accuracy é de 0,9 ou 90%. A matriz de confusão fornece uma indicação dos três erros cometidos. Finalmente, o relatório de classificação fornece um detalhamento de cada classe por precisão, recall, pontuação-f1 e suporte mostrando resultados excelentes (dado que o conjunto de dados de validação era pequeno).

Você pode aprender mais sobre como fazer previsões e prever probabilidades aqui:

Você pode fazer aprendizado de máquina em Python

Trabalhe no tutorial acima. Isso levará de 5 a 10 minutos, no máximo!

Você não precisa entender tudo . (pelo menos não agora) Seu objetivo é percorrer o tutorial de ponta a ponta e obter um resultado. Você não precisa entender tudo na primeira passagem. Faça uma lista das suas perguntas. Faça uso intensivo da ajuda (“FunctionName”) na sintaxe de ajuda em Python para aprender sobre todas as funções que você está usando.

Você não precisa saber como os algoritmos funcionam . É importante conhecer as limitações e como configurar algoritmos de aprendizado de máquina. Mas aprender sobre algoritmos pode vir depois. Você precisa desenvolver esse conhecimento de algoritmo lentamente durante um longo período de tempo. Hoje, comece ficando confortável com a plataforma.

Você não precisa ser um programador Python . A sintaxe da linguagem Python pode ser intuitiva se você for novo para ela. Assim como em outros idiomas, concentre-se em chamadas de função (por exemplo, function () ) e atribuições (por exemplo, a = “b” ). Isso vai te dar a maior parte do caminho. Você é um desenvolvedor, sabe como aprender o básico de uma linguagem rapidamente. Apenas comece e mergulhe nos detalhes mais tarde.

Você não precisa ser um especialista em aprendizado de máquina . Você pode aprender sobre os benefícios e limitações de vários algoritmos posteriormente, e há muitos posts que você pode ler mais tarde para revisar as etapas de um projeto de aprendizado de máquina e a importância de avaliar a precisão usando validação cruzada.

Originalmente escrito por  (todos direitos reservados ao autor)
Traduzido pelo Google Translator – Adaptações para PT-BR – Alex Souza


Vejam também: 
Introdução ao Machine Learning
Fundamentos dos Algoritmos de Aprendizado de Máquina (com Códigos Python e R)
Essentials of Machine Learning Algorithms (with Python and R Codes)
– O que você precisa saber sobre o aprendizado de máquina...

Uma consideração sobre “Seu primeiro Projeto de Machine Learning em Python (Passo a Passo)”

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s