en es
Sobre a Matera
  • Sobre a Matera
  • Mercados
  • Soluções
  • Parcerias
  • Sustentabilidade
  • Conteúdos
  • Carreira
  • Contato
  • en es
Blog Notícias Ebook Podcasts Webinars

Blog

Machine Learning - Naive Bayes

Por: ronaldo.chicareli@matera.com

Friday, November 17, 2017

No post de introdução (que você acessar aqui), aprendemos o que é Machine Learning e usamos um classificador de emails como exemplo. Agora vamos aprender a codificar este classificador, utilizando o algoritmo Naive Bayes.

Naive Bayes é um algoritmo simples de classificação, que utiliza dados históricos para prever a classificação de um novo dado. Como funciona: Ele calcula a probabilidade de um evento ocorrer dado que outro evento já ocorreu. Onde é aplicado: Ficou conhecido por filtrar emails entre spam/não spam, mas pode ser utilizado em situações gerais de classificação entre 2 opções.

Muitas das vezes, os algoritmos de Machine Learning são implementados usando Python, porque essa linguagem já possui uma biblioteca com vários algoritmos implementados. Vamos aprender a utilizar Naive Bayes em um código Python, sem entrar nos detalhes matemáticos do algoritmo, mas você pode encontrar informações em [1].

Instalar Python

Inicialmente você precisará instalar o Python na sua máquina. Entre em https://www.python.org/ e faça download para Linux ou Windows.

Após a instalação, na Linha de Comando, digite:

pip install scikit-learn numpy scipy

Esta linha instala várias bibliotecas que utilizaremos neste primeiro exemplo: Scikit-learn [2] é um pacote de bibliotecas Python que contém a implementação de muuuuitos algoritmos de Machine Learning. NumPy é o pacote básico da linguagem Python que suporta vetores, matrizes e funções matemáticas. SciPy é um pacote open source que implementa diversas técnicas de computação científica.

Agora, ao digitar "python" na Linha de Comando você já está dentro do console do Python e podemos começar a trabalhar.

Preparando os dados

Lembra-se dos dados do post anterior?

Dados Machine Learning Figura 1 - Dados históricos

Imaginando que temos estes 10 dados e queremos prever 2 novos, conforme abaixo.

Dados para prever Machine Learning Figura 2 - Dados para prever

Inicialmente, vamos entender que cada linha é um conjunto de dados, por exemplo na primeira linha da Figura 1, as características [Sim, 50, Sim] geram o resultado [É SPAM].

Agrupando todas as características temos:

[Sim, 50, Sim], [Não, 1, Não], [Não, 60, Sim], [Não, 100, Sim], [Sim, 70, Não], [Não, 3, Sim], [Sim, 1, Sim], [Sim, 200, Sim], [Não, 2, Sim], [Sim, 1, Sim]

Podemos transformar "Sim" em "1" e "Não" em "0", ficando com:

[1, 50, 1], [0, 1, 0], [0, 60, 1], [0, 100, 1], [1, 70, 0], [0, 3, 1], [1, 1, 0], [1, 200, 1], [0, 2, 1], [1, 1, 1]

Agora, vamos agrupar os resultados:

É SPAM, NÃO É SPAM, É SPAM, É SPAM, É SPAM, NÃO É SPAM, NÃO É SPAM, É SPAM, É SPAM, É SPAM

Podemos transformar "É SPAM" em "1" e "NÃO É SPAM" em "0", ficando com:

1, 0, 1, 1, 1, 0, 0, 1, 1, 1

Resumindo: Este é o conjunto de características (features, em inglês):

[[1, 50, 1], [0, 1, 0], [0, 60, 1], [0, 100, 1], [1, 70, 0], [0, 3, 1], [1, 1, 0], [1, 200, 1], [0, 2, 1], [1, 1, 1]]

E este é o conjunto de resultados (labels, em inglês):

[1, 0, 1, 1, 1, 0, 0, 1, 1, 1]

Implementando Naive Bayes

Vamos criar então nosso Naive Bayes. Você pode colar este código no console do Python e ele já é executado ou então pode salvá-lo em um arquivo arquivo.py e executar este arquivo diretamente da Linha de Comando.

from sklearn.naive_bayes import MultinomialNB

features = [[1, 50, 1], [0, 1, 0], [0, 60, 1], [0, 100, 1], [1, 70, 0], [0, 3, 1], [1, 1, 0], [1, 200, 1], [0, 2, 1], [1, 1, 1]]
labels = [1, 0, 1, 1, 1, 0, 0, 1, 1, 1]

clf = MultinomialNB()

clf.fit(features, labels)
pred = clf.predict([[0, 3, 1]])
print(pred)
A linha 1 importa o algoritmo Naive Bayes.
A linha 3 carrega um array com as características conhecidas dos dados históricos.
A linha 4 carrega um array com os resultados também dos dados históricos.
A linha 6 cria um objeto classificador.
A linha 8 treina o algoritmo, passando as características e os resultados obtidos dos dados históricos.
A linha 9 prevê o resultado a partir de um novo dado: [0, 3, 1] ou seja [Não contém a palavra Emagrecer, 3 destinatários, Possui imagens]. Este dado é representado na linha 1 da Figura 2.
A linha 10 exibe o resultado:

[0] ou seja NÃO É SPAM

Se mudarmos a quantidade de destinatário de 3 para 300 (linha 2 da Figura 2), o resultado é outro:

pred = clf.predict([[0, 300, 1]])
print(pred)

[1] ou seja É SPAM

Conclusão

Esse é um exemplo bem básico sobre Naive Bayes, mas que já te mostra como é fácil implementá-lo usando as bibliotecas do Python. Mais detalhes dos parâmetros e métodos desta biblioteca podem ser encontrados em [3]. Especificamente neste exemplo, usamos todos os dados históricos para TREINAR o modelo, mas o correto é dividir os dados em 2 grupos (70% para treino e 30% para teste do modelo). Vamos fazer isso no próximo post.

Referências

[1] http://scikit-learn.org/stable/modules/naive_bayes.html [2] http://scikit-learn.org/stable/index.html [3] http://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.MultinomialNB.html#sklearn.naive_bayes.MultinomialNB
Categorias:
  • Inteligência Artificial
Compartilhe:
emailfacebooklinkedintwitter

Categorias


  • → Ágil
  • → Carreira
  • → Design e UX
  • → e-Commerce
  • → Fintech
  • → Frontend
  • → Gestão de Riscos
  • → Gestão Empresarial
  • → Infra
  • → Inovação
  • → Institucional
  • → Inteligência Artificial
  • → Mercado Financeiro
  • → Mobile
  • → Nuvem
  • → Pagamentos Instantâneos
  • → Programação (Backend)
  • → Responsabilidade Social
  • → Serviços
  • → Tecnologia
  • → Testes
  • → Varejo

Newsletter


Quer saber quais são as últimas notícias do setor em primeira mão? O seu próximo clique tem que ser aqui.

Siga-nos nas redes sociais

Política de privacidade Termos e condições de uso Suporte
  • • Sobre a Matera
  • • Historia
  • • Manifesto
  • • Código de Ética
  • • Mercados
  • • Digital Bank
  • • Risk
  • • Fintech
  • • Soluções
  • • Matera Digital Bank
  • • Matera Fintech
  • • Matera Risk
  • • Instant Payments
  • • Parcerias
  • • Alinanças
  • • Canais
  • • Sustentabilidade
  • • Ações
  • • Instituições Apoiadas
  • • Relatórios Anuais
  • • Conteúdos
  • • Blog
  • • Notícias
  • • Podcasts
  • • Ebooks
  • • Webinars
  • • Carreira
  • • Processo seletivo
  • • Vagas abertas
  • • Curso de Férias
  • • Contato
  • • Fale conosco
  • • Denúncias
  • • Imprensa

Copyright © 2020 Matera