SlideShare a Scribd company logo
1 of 69
Apresentação Introdução Classificação Regressão Dúvidas
Machine Learning
Com Python e scikit-learn
Christian S. Perone
christian.perone@gmail.com
5 de junho de 2014
Apresentação Introdução Classificação Regressão Dúvidas
Parte I
Apresentação
Apresentação Introdução Classificação Regressão Dúvidas
Apresentação
▸ Christian S. Perone
▸ Trabalha como desenvolvedor
▸ Colaborador e mantenedor open-source
▸ Blog
▸ http://pyevolve.sourceforge.net/wordpress
▸ Projetos
▸ https://github.com/perone
▸ Twitter @tarantulae
Apresentação Introdução Classificação Regressão Dúvidas
Roteiro
Apresentação
Apresentação
Introdução
O que é Machine Learning ?
O problema
Supervisionado vs Não-supervisionado
Aprendizado Supervisionado
Classificação
Introdução
OCR
Support Vector Machines
Classificação no scikit-learn
Regressão
Introdução
Imóveis de Porto Alegre
Regressão Linear
Dúvidas
Dúvidas
Apresentação Introdução Classificação Regressão Dúvidas
Parte II
Introdução
Apresentação Introdução Classificação Regressão Dúvidas
O que é Machine Learning ?
Machine Learning (ou Aprendizado de Máquina) é uma sub-área da
Inteligência Artificial que estuda sistemas que podem aprender com
dados. Alguns exemplos:
Apresentação Introdução Classificação Regressão Dúvidas
O que é Machine Learning ?
Machine Learning (ou Aprendizado de Máquina) é uma sub-área da
Inteligência Artificial que estuda sistemas que podem aprender com
dados. Alguns exemplos:
▸ Classificador de Emails
Apresentação Introdução Classificação Regressão Dúvidas
O que é Machine Learning ?
Machine Learning (ou Aprendizado de Máquina) é uma sub-área da
Inteligência Artificial que estuda sistemas que podem aprender com
dados. Alguns exemplos:
▸ Classificador de Emails
▸ Reconhecedor de caracteres (OCR)
Apresentação Introdução Classificação Regressão Dúvidas
O que é Machine Learning ?
Machine Learning (ou Aprendizado de Máquina) é uma sub-área da
Inteligência Artificial que estuda sistemas que podem aprender com
dados. Alguns exemplos:
▸ Classificador de Emails
▸ Reconhecedor de caracteres (OCR)
▸ Sistemas de Recomendação
Apresentação Introdução Classificação Regressão Dúvidas
O que é Machine Learning ?
Machine Learning (ou Aprendizado de Máquina) é uma sub-área da
Inteligência Artificial que estuda sistemas que podem aprender com
dados. Alguns exemplos:
▸ Classificador de Emails
▸ Reconhecedor de caracteres (OCR)
▸ Sistemas de Recomendação
▸ Retenção de clientes
Apresentação Introdução Classificação Regressão Dúvidas
O que é Machine Learning ?
Machine Learning (ou Aprendizado de Máquina) é uma sub-área da
Inteligência Artificial que estuda sistemas que podem aprender com
dados. Alguns exemplos:
▸ Classificador de Emails
▸ Reconhecedor de caracteres (OCR)
▸ Sistemas de Recomendação
▸ Retenção de clientes
▸ Análise de Sentimento
Apresentação Introdução Classificação Regressão Dúvidas
O problema
O problema de aprendizado geralmente considera um conjunto de n
amostras e tenta prever dados de uma amostra desconhecida. As
propriedades de uma amostra são geralmente chamadas de features. São
categorizados em:
▸ Aprendizado Supervisionado (Supervised Learning)
▸ Aprendizado Não-supervisionado (Unsupervised Learning)
Nota
Existem também outras categorias (inclusive híbridas) que não serão
abordadas.
Apresentação Introdução Classificação Regressão Dúvidas
Supervisionado vs Não-supervisionado
No Aprendizado Supervisionado, os algoritmos são treinados com
dados rotulados. Exemplo: Reconhecimento de Caracteres (OCR), onde
o treino é realizado com várias amostras de caracteres onde cada
imagem contém também um rótulo de qual caractere aquela imagem
representa.
Apresentação Introdução Classificação Regressão Dúvidas
Supervisionado vs Não-supervisionado
No Aprendizado Supervisionado, os algoritmos são treinados com
dados rotulados. Exemplo: Reconhecimento de Caracteres (OCR), onde
o treino é realizado com várias amostras de caracteres onde cada
imagem contém também um rótulo de qual caractere aquela imagem
representa.
No Aprendizado Não-supervisionado, os algoritmos operam em
dados não rotulados. Um exemplo de algoritmo não-supervisionado é o
clustering, em que amostras são agrupadas conforme o nível de
similaridade (ex: agrupar imagens semelhantes em um banco de
imagens).
Apresentação Introdução Classificação Regressão Dúvidas
Aprendizado Supervisionado
No Aprendizado Supervisionado, temos dois tipos de problemas:
Apresentação Introdução Classificação Regressão Dúvidas
Aprendizado Supervisionado
No Aprendizado Supervisionado, temos dois tipos de problemas:
Classificação As amostras pertencem a duas ou mais classes (ex:
spam/não-spam) e o objetivo é aprender através de dados
já rotulados qual a classe de um dado novo não rotulado.
A classificação pode também ser vista como um
aprendizado de valores discretos.
Apresentação Introdução Classificação Regressão Dúvidas
Aprendizado Supervisionado
No Aprendizado Supervisionado, temos dois tipos de problemas:
Classificação As amostras pertencem a duas ou mais classes (ex:
spam/não-spam) e o objetivo é aprender através de dados
já rotulados qual a classe de um dado novo não rotulado.
A classificação pode também ser vista como um
aprendizado de valores discretos.
Regressão Se a saída esperada do algoritmo é uma ou mais
variáveis contínuas, o problema é chamado de regressão.
Um exemplo de regressão é prever o preço de um imóvel
levando em consideração suas features (características)
como o tamanho, número de quartos, número de
garagens, etc.
Apresentação Introdução Classificação Regressão Dúvidas
Aprendizado Supervisionado
Figura: Diagrama de aprendizado supervisionado (por Olivier Grisel)
Apresentação Introdução Classificação Regressão Dúvidas
Scikit-Learn
Scikit-learn (sklearn) é um framework open-source de Machine
Learning escrito em Python utilizando as plataformas Numpy/Scipy e
Matplotlib.
Apresentação Introdução Classificação Regressão Dúvidas
Scikit-Learn
Scikit-learn (sklearn) é um framework open-source de Machine
Learning escrito em Python utilizando as plataformas Numpy/Scipy e
Matplotlib.
▸ Ótima documentação
Apresentação Introdução Classificação Regressão Dúvidas
Scikit-Learn
Scikit-learn (sklearn) é um framework open-source de Machine
Learning escrito em Python utilizando as plataformas Numpy/Scipy e
Matplotlib.
▸ Ótima documentação
▸ Inúmeros exemplos
Apresentação Introdução Classificação Regressão Dúvidas
Scikit-Learn
Scikit-learn (sklearn) é um framework open-source de Machine
Learning escrito em Python utilizando as plataformas Numpy/Scipy e
Matplotlib.
▸ Ótima documentação
▸ Inúmeros exemplos
▸ Licença permissiva (BSD)
Apresentação Introdução Classificação Regressão Dúvidas
Scikit-Learn
Scikit-learn (sklearn) é um framework open-source de Machine
Learning escrito em Python utilizando as plataformas Numpy/Scipy e
Matplotlib.
▸ Ótima documentação
▸ Inúmeros exemplos
▸ Licença permissiva (BSD)
▸ Utilizado por grandes empresas
Apresentação Introdução Classificação Regressão Dúvidas
Scikit-Learn
Scikit-learn (sklearn) é um framework open-source de Machine
Learning escrito em Python utilizando as plataformas Numpy/Scipy e
Matplotlib.
▸ Ótima documentação
▸ Inúmeros exemplos
▸ Licença permissiva (BSD)
▸ Utilizado por grandes empresas
▸ Grande comunidade e muitos workshops
Apresentação Introdução Classificação Regressão Dúvidas
Parte III
Classificação
Apresentação Introdução Classificação Regressão Dúvidas
Classificação - Hiperplano
Apresentação Introdução Classificação Regressão Dúvidas
Classificação - Hiperplano
Apresentação Introdução Classificação Regressão Dúvidas
Classificação - Hiperplano
Apresentação Introdução Classificação Regressão Dúvidas
Classificação - Reconhecimento de Caracteres
Para demonstrar um problema de classificação, vamos utilizar um
conjunto de dados de dígitos escritos à mão para treinar um modelo
que irá posteriormente reconhecer imagens de caracteres escritos a mão.
O conjunto de dados que vamos utilizar contém:
▸ 1.797 imagens rotuladas de caracteres escritos a mão
▸ Aproximadamente 180 caracteres por classe
▸ Cada imagem tem o tamanho 8x8 (64 pixels)
▸ Cada pixel tem a intensidade de 0 à 16 (tons de cinza)
Apresentação Introdução Classificação Regressão Dúvidas
Classificação - Reconhecimento de Caracteres
Apresentação Introdução Classificação Regressão Dúvidas
Classificação - Reconhecimento de Caracteres
O pacote scikit-learn (sklearn) já vem com o dataset de dígitos:
>>> from sklearn import datasets
>>> digitos = datasets.load_digits()
>>> digitos.data.shape
(1797L, 64L)
>>> digitos.target.shape
(1797L,)
Nota
Como pode-se notar pelo formato dos dados do atributo data, o dataset
contém 1.797 amostras de caracteres contendo 64 pixels em cada uma das
amostras. Além dos dados temos os rótulos dos dados no atributo target.
Apresentação Introdução Classificação Regressão Dúvidas
Classificação - Reconhecimento de Caracteres
Apresentação Introdução Classificação Regressão Dúvidas
Classificação - Reconhecimento de Caracteres
>> digitos.data[0]
array([ 0., 0., 5., 13., 9., 1., 0., 0., 0.,
15., 10., 15., 5., 0., 0., 3., 15., 2.,
8., 0., 0., 4., 12., 0., 0., 8., 8.,
5., 8., 0., 0., 9., 8., 0., 0., 4.,
1., 12., 7., 0., 0., 2., 14., 5., 10.,
0., 0., 0., 6., 13., 10., 0., 0., 0.])
>>> digitos.target[0]
0
Apresentação Introdução Classificação Regressão Dúvidas
Classificação - Support Vector Machines
Para classificar as imagens de caracteres vamos utilizar um método
muito conhecido em Machine Learning, este método é chamado de
Support Vector Machine. SVM é uma técnica de classificação (ou
regressão) que procura encontrar um modelo onde a separação entre as
classes tenha a maior margem possível.
Apresentação Introdução Classificação Regressão Dúvidas
Classificação - Support Vector Machines
Figura: Support Vector Machines (wikipedia)
Apresentação Introdução Classificação Regressão Dúvidas
Classificação - scikit-learn
Figura: API para Aprendizado Supervisionado do sklearn (por Olivier Grisel)
Apresentação Introdução Classificação Regressão Dúvidas
Classificação - scikit-learn + SVM
from sklearn import svm, datasets
digitos = datasets.load_digits()
modelo = svm.SVC(gamma=0.001)
num_amostras = len(digitos.data)
Apresentação Introdução Classificação Regressão Dúvidas
Classificação - scikit-learn + SVM
from sklearn import svm, datasets
digitos = datasets.load_digits()
modelo = svm.SVC(gamma=0.001)
num_amostras = len(digitos.data)
modelo.fit(digitos.data[:num_amostras / 2],
digitos.target[:num_amostras / 2])
Apresentação Introdução Classificação Regressão Dúvidas
Classificação - scikit-learn + SVM
from sklearn import svm, datasets
digitos = datasets.load_digits()
modelo = svm.SVC(gamma=0.001)
num_amostras = len(digitos.data)
modelo.fit(digitos.data[:num_amostras / 2],
digitos.target[:num_amostras / 2])
classe_esperada = digitos.target[num_amostras / 2:]
classe_descoberta =
modelo.predict(digitos.data[num_amostras / 2:])
Apresentação Introdução Classificação Regressão Dúvidas
Classificação - scikit-learn + SVM
>>> classe_esperada[25:35]
array([8, 9, 0, 1, 2, 3, 4, 9, 6, 7])
>>> classe_descoberta[25:35]
array([8, 9, 0, 1, 2, 3, 4, 5, 6, 7])
Apresentação Introdução Classificação Regressão Dúvidas
Classificação - Matriz de Confusão
Uma das maneiras avaliar o quão bem um modelo se comporta, é
utilizando uma Matriz de Confusão:
>>> from sklearn import metrics
>>> metrics.confusion_matrix(classe_esperada,
... classe_descoberta)
[[87 0 0 0 1 0 0 0 0 0]
[ 0 88 1 0 0 0 0 0 1 1]
[ 0 0 85 1 0 0 0 0 0 0]
[ 0 0 0 79 0 3 0 4 5 0]
[ 0 0 0 0 88 0 0 0 0 4]
[ 0 0 0 0 0 88 1 0 0 2]
[ 0 1 0 0 0 0 90 0 0 0]
[ 0 0 0 0 0 1 0 88 0 0]
[ 0 0 0 0 0 0 0 0 88 0]
[ 0 0 0 1 0 1 0 0 0 90]]
Apresentação Introdução Classificação Regressão Dúvidas
Classificação - Matriz de Confusão
Apresentação Introdução Classificação Regressão Dúvidas
Parte IV
Regressão
Apresentação Introdução Classificação Regressão Dúvidas
Regressão
Para ilustrar como uma regressão funciona, utilizaremos o método de
Regressão Linear em um conjunto de dados reais. O método de
Regressão Linear é um dos métodos mais simples para se realizar uma
regressão. Ele funciona traçando uma reta sobre os dados de forma que
esta reta tenha a soma de residuais com o menor valor possível.
Apresentação Introdução Classificação Regressão Dúvidas
Regressão
Para ilustrar como uma regressão funciona, utilizaremos o método de
Regressão Linear em um conjunto de dados reais. O método de
Regressão Linear é um dos métodos mais simples para se realizar uma
regressão. Ele funciona traçando uma reta sobre os dados de forma que
esta reta tenha a soma de residuais com o menor valor possível.
Figura: Regressao Linear
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear - Dados de Imóveis
Para ilustrar como a Regressão Linear funciona, utilizaremos o método
em um conjunto de dados reais de imóveis da cidade de Porto Alegre /
RS. Este conjunto de dados foi extraído 1
em Março de 2014 do site de
uma imobiliária e contém dados de aproximadamente 6.800 imóveis a
venda.
Figura: Alguns imóveis do bairro Bela Vista.
1
Utilizando BeautifulSoup
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear - Dados de Imóveis
Figura: Scatter plot de imóveis do bairro Bela Vista.
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear - Dados de Imóveis
Figura: Scatter plot de imóveis do bairro Centro.
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear - Dados de Imóveis
Figura: Scatter plot de imóveis do Centro (vermelho) e Bela Vista (azul).
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear
Para realizar a Regressao Linear, usaremos apenas 1 feature (para
facilitar a visualização da regressão).
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear
Para realizar a Regressao Linear, usaremos apenas 1 feature (para
facilitar a visualização da regressão).
Como entrada utilizaremos o dado da área do imóvel (em mts
quadrados) e como saída esperada (valor que queremos prever baseado
na área) utilizaremos o valor do imóvel em reais.
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear - Overfitting
Se em tudo o mais forem
idênticas as várias explicações
de um fenômeno, a mais
simples é a melhor.
—Guilherme de Ockham
(1288-1347)
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear - Overfitting
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear
>>> from sklearn import linear_model
>>> from sklearn.cross_validation import train_test_split
>>> model = linear_model.LinearRegression()
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear
>>> from sklearn import linear_model
>>> from sklearn.cross_validation import train_test_split
>>> model = linear_model.LinearRegression()
>>> area, preco = imobiliaria.load_data("Bela Vista")
>>> area_train, area_test, preco_train, preco_test = 
train_test_split(area, preco, test_size=0.20)
>>> model.fit(area_train, preco_train)
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear
>>> from sklearn import linear_model
>>> from sklearn.cross_validation import train_test_split
>>> model = linear_model.LinearRegression()
>>> area, preco = imobiliaria.load_data("Bela Vista")
>>> area_train, area_test, preco_train, preco_test = 
train_test_split(area, preco, test_size=0.20)
>>> model.fit(area_train, preco_train)
>>> model.predict(56)
247882.22260541
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear
>>> from sklearn import linear_model
>>> from sklearn.cross_validation import train_test_split
>>> model = linear_model.LinearRegression()
>>> area, preco = imobiliaria.load_data("Bela Vista")
>>> area_train, area_test, preco_train, preco_test = 
train_test_split(area, preco, test_size=0.20)
>>> model.fit(area_train, preco_train)
>>> model.predict(56)
247882.22260541
>>> model.score(area_test, preco_test)
0.77655417131351878
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear
import matplotlib.pyplot as plt
plt.scatter(area, preco, alpha=0.5)
plt.plot(area, model.predict(area), color="red")
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear
import matplotlib.pyplot as plt
plt.scatter(area, preco, alpha=0.5)
plt.plot(area, model.predict(area), color="red")
Figura: Regressão Linear e dados de treino.
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear - Múltiplas features
No modelo anterior, utilizamos apenas uma feature (área do imóvel)
para criar um modelo, mas ainda temos um dado com um ótimo valor
preditivo.
Podemos incorporar este novo dado em uma nova feature do nosso
modelo para reduzir o erro do nosso modelo.
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear - Múltiplas features
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear - Múltiplas features
features, preco = imobiliaria.load_data("Bela Vista")
features_train, features_test, preco_train, preco_test = 
train_test_split(features, preco, test_size=0.20)
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear - Múltiplas features
features, preco = imobiliaria.load_data("Bela Vista")
features_train, features_test, preco_train, preco_test = 
train_test_split(features, preco, test_size=0.20)
model.fit(features_train, preco_train)
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear - Múltiplas features
features, preco = imobiliaria.load_data("Bela Vista")
features_train, features_test, preco_train, preco_test = 
train_test_split(features, preco, test_size=0.20)
model.fit(features_train, preco_train)
model.score(features_test, preco_test)
0.81960426250252283
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear - Múltiplas features
features, preco = imobiliaria.load_data("Bela Vista")
features_train, features_test, preco_train, preco_test = 
train_test_split(features, preco, test_size=0.20)
model.fit(features_train, preco_train)
model.score(features_test, preco_test)
0.81960426250252283
Melhora no score de 0.77 para 0.81.
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear - Múltiplas features
Utilizando o modelo de regressão que treinamos, podemos fazer
perguntas como por exemplo, qual seria a estimativa de preço para um
imóvel de 56 m2
com apenas 1 dormitório localizado no bairro Bela
Vista ?
Apresentação Introdução Classificação Regressão Dúvidas
Regressão Linear - Múltiplas features
Utilizando o modelo de regressão que treinamos, podemos fazer
perguntas como por exemplo, qual seria a estimativa de preço para um
imóvel de 56 m2
com apenas 1 dormitório localizado no bairro Bela
Vista ?
linear_model.predict([56, 1])
array([ 216157.98252844])
Ou seja: um imóvel de 1 dormitório com 56 m2
no bairro Bela Vista
em Porto Alegre custaria aproximadamente R$216.157,00.
Apresentação Introdução Classificação Regressão Dúvidas
Parte V
Dúvidas
Apresentação Introdução Classificação Regressão Dúvidas
Dúvidas ?
Junte-se ao PyTchê ! Acesse http://pytche.org

More Related Content

What's hot

Árvores: Conceitos e binárias
Árvores:  Conceitos e bináriasÁrvores:  Conceitos e binárias
Árvores: Conceitos e binárias
Sérgio Souza Costa
 
Sistemas de equações do 1⁰ grau revisão
Sistemas de equações do 1⁰ grau revisãoSistemas de equações do 1⁰ grau revisão
Sistemas de equações do 1⁰ grau revisão
Angela Costa
 
Potenciação com números naturais
Potenciação com números naturaisPotenciação com números naturais
Potenciação com números naturais
Claudia Zandonai
 
Plano cartesiano 7º ano
Plano cartesiano   7º anoPlano cartesiano   7º ano
Plano cartesiano 7º ano
Rafael Marques
 
01 introdução à algebra relacional
01   introdução à algebra relacional01   introdução à algebra relacional
01 introdução à algebra relacional
charlesoliveira13
 
Números.reais.introdução
Números.reais.introduçãoNúmeros.reais.introdução
Números.reais.introdução
Filipa Guerreiro
 
Sistema de numeração
Sistema de numeraçãoSistema de numeração
Sistema de numeração
fcmat
 

What's hot (20)

Operações fundamentais da aritimética
Operações fundamentais da aritimética Operações fundamentais da aritimética
Operações fundamentais da aritimética
 
Equação 1° grau
Equação 1° grauEquação 1° grau
Equação 1° grau
 
Cartilha Computação Desplugada.pdf
Cartilha Computação Desplugada.pdfCartilha Computação Desplugada.pdf
Cartilha Computação Desplugada.pdf
 
Conjuntos numéricos
Conjuntos numéricosConjuntos numéricos
Conjuntos numéricos
 
Grafos De Bruijn para identificação de variações genéticas usando GBS
Grafos De Bruijn para identificação de variações genéticas usando GBSGrafos De Bruijn para identificação de variações genéticas usando GBS
Grafos De Bruijn para identificação de variações genéticas usando GBS
 
Modelação de Dados
Modelação de DadosModelação de Dados
Modelação de Dados
 
Árvores: Conceitos e binárias
Árvores:  Conceitos e bináriasÁrvores:  Conceitos e binárias
Árvores: Conceitos e binárias
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Estruturas em C++ (struct)
Estruturas em C++ (struct)Estruturas em C++ (struct)
Estruturas em C++ (struct)
 
Sistemas de equações do 1⁰ grau revisão
Sistemas de equações do 1⁰ grau revisãoSistemas de equações do 1⁰ grau revisão
Sistemas de equações do 1⁰ grau revisão
 
Potenciação com números naturais
Potenciação com números naturaisPotenciação com números naturais
Potenciação com números naturais
 
Plano cartesiano 7º ano
Plano cartesiano   7º anoPlano cartesiano   7º ano
Plano cartesiano 7º ano
 
01 introdução à algebra relacional
01   introdução à algebra relacional01   introdução à algebra relacional
01 introdução à algebra relacional
 
Números.reais.introdução
Números.reais.introduçãoNúmeros.reais.introdução
Números.reais.introdução
 
Estatística básica
Estatística básicaEstatística básica
Estatística básica
 
Equações lineares
Equações lineares Equações lineares
Equações lineares
 
Função do 2°grau
Função do 2°grauFunção do 2°grau
Função do 2°grau
 
Desvios médios, variância e desvios padrões
Desvios médios, variância e desvios padrõesDesvios médios, variância e desvios padrões
Desvios médios, variância e desvios padrões
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Sistema de numeração
Sistema de numeraçãoSistema de numeração
Sistema de numeração
 

Viewers also liked

Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
Christian Perone
 

Viewers also liked (20)

Aplicações Práticas de Machine Learning
Aplicações Práticas de Machine LearningAplicações Práticas de Machine Learning
Aplicações Práticas de Machine Learning
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
Machine Learning - Introdução e Aplicações
Machine Learning - Introdução e AplicaçõesMachine Learning - Introdução e Aplicações
Machine Learning - Introdução e Aplicações
 
Como ingressar no mercado de Machine Learning
Como ingressar no mercado de Machine LearningComo ingressar no mercado de Machine Learning
Como ingressar no mercado de Machine Learning
 
Introdução ao Machine Learning para Hackers
Introdução ao Machine Learning para HackersIntrodução ao Machine Learning para Hackers
Introdução ao Machine Learning para Hackers
 
Webinar: Amazon Machine Learning
Webinar: Amazon Machine LearningWebinar: Amazon Machine Learning
Webinar: Amazon Machine Learning
 
Azure Machine Learning
Azure Machine LearningAzure Machine Learning
Azure Machine Learning
 
Machine learning java ce conference 2012 - fortaleza ce
Machine learning java ce conference 2012 - fortaleza ceMachine learning java ce conference 2012 - fortaleza ce
Machine learning java ce conference 2012 - fortaleza ce
 
Bioestatistica
BioestatisticaBioestatistica
Bioestatistica
 
Business Intelligence Open Source - Portuguese -
Business Intelligence Open Source  - Portuguese -Business Intelligence Open Source  - Portuguese -
Business Intelligence Open Source - Portuguese -
 
LaTeX Básico II
LaTeX Básico IILaTeX Básico II
LaTeX Básico II
 
Pentaho Weka latinoware
Pentaho Weka latinowarePentaho Weka latinoware
Pentaho Weka latinoware
 
Agrupamento espectral
Agrupamento espectralAgrupamento espectral
Agrupamento espectral
 
Deep Learning
Deep LearningDeep Learning
Deep Learning
 
C++0x :: Introduction to some amazing features
C++0x :: Introduction to some amazing featuresC++0x :: Introduction to some amazing features
C++0x :: Introduction to some amazing features
 
Aula de Gráficos - Bioestatistica
Aula de Gráficos - BioestatisticaAula de Gráficos - Bioestatistica
Aula de Gráficos - Bioestatistica
 
Reconhecimento automático de emoções
Reconhecimento automático de emoçõesReconhecimento automático de emoções
Reconhecimento automático de emoções
 
Critérios de validade
Critérios de validadeCritérios de validade
Critérios de validade
 
Business Intelligence
Business IntelligenceBusiness Intelligence
Business Intelligence
 
Machine learning and big data
Machine learning and big dataMachine learning and big data
Machine learning and big data
 

Similar to Machine Learning com Python e Scikit-learn

Lógica de programação - ifro - Vilhena - Turma: Técnicos em Informática
Lógica de programação - ifro - Vilhena - Turma: Técnicos em InformáticaLógica de programação - ifro - Vilhena - Turma: Técnicos em Informática
Lógica de programação - ifro - Vilhena - Turma: Técnicos em Informática
Lohraine Ifro Oliveira
 
Aprendizado de Máquina
Aprendizado de MáquinaAprendizado de Máquina
Aprendizado de Máquina
butest
 
Python no Ensino Superior - PyconBrasil 1
Python no Ensino Superior - PyconBrasil 1Python no Ensino Superior - PyconBrasil 1
Python no Ensino Superior - PyconBrasil 1
Marco Mendes
 
Atividades de Teste e Cobertura de Código em Java
Atividades de Teste e Cobertura de Código em JavaAtividades de Teste e Cobertura de Código em Java
Atividades de Teste e Cobertura de Código em Java
aceiro
 

Similar to Machine Learning com Python e Scikit-learn (20)

Introdução à Aprendizagem de Máquina
Introdução à Aprendizagem de MáquinaIntrodução à Aprendizagem de Máquina
Introdução à Aprendizagem de Máquina
 
Aprendizagem de máquina aplicada na neurociência
Aprendizagem de máquina aplicada na neurociênciaAprendizagem de máquina aplicada na neurociência
Aprendizagem de máquina aplicada na neurociência
 
C# 8 e ML.NET
C# 8 e ML.NETC# 8 e ML.NET
C# 8 e ML.NET
 
Machine Learning: Classificação de Comentários com Azure ML & Python
Machine Learning: Classificação de Comentários com Azure ML & PythonMachine Learning: Classificação de Comentários com Azure ML & Python
Machine Learning: Classificação de Comentários com Azure ML & Python
 
Lógica de programação - ifro - Vilhena - Turma: Técnicos em Informática
Lógica de programação - ifro - Vilhena - Turma: Técnicos em InformáticaLógica de programação - ifro - Vilhena - Turma: Técnicos em Informática
Lógica de programação - ifro - Vilhena - Turma: Técnicos em Informática
 
Aprendizado de Máquina
Aprendizado de MáquinaAprendizado de Máquina
Aprendizado de Máquina
 
Python no Ensino Superior - PyconBrasil 1
Python no Ensino Superior - PyconBrasil 1Python no Ensino Superior - PyconBrasil 1
Python no Ensino Superior - PyconBrasil 1
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
 
Minicurso de Lógica e Linguagem Java 6.0
Minicurso de Lógica e Linguagem Java 6.0Minicurso de Lógica e Linguagem Java 6.0
Minicurso de Lógica e Linguagem Java 6.0
 
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
[TDC2016] Apache SparkMLlib:  Machine Learning na Prática[TDC2016] Apache SparkMLlib:  Machine Learning na Prática
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
 
Oficina: construção de modelos descritivos e preditivos utilizando R
Oficina: construção de modelos descritivos e preditivos utilizando ROficina: construção de modelos descritivos e preditivos utilizando R
Oficina: construção de modelos descritivos e preditivos utilizando R
 
TDC2016SP - SparkMLlib Machine Learning na Prática
TDC2016SP -  SparkMLlib Machine Learning na PráticaTDC2016SP -  SparkMLlib Machine Learning na Prática
TDC2016SP - SparkMLlib Machine Learning na Prática
 
Testes de software de A a Z
Testes de software de A a ZTestes de software de A a Z
Testes de software de A a Z
 
Atividades de Teste e Cobertura de Código em Java
Atividades de Teste e Cobertura de Código em JavaAtividades de Teste e Cobertura de Código em Java
Atividades de Teste e Cobertura de Código em Java
 
Apostila Intensivo Python - Desafio 2.pdf
Apostila Intensivo Python - Desafio 2.pdfApostila Intensivo Python - Desafio 2.pdf
Apostila Intensivo Python - Desafio 2.pdf
 
Agile Trends 2018 - Além da Automação com Machine Learning
Agile Trends 2018 - Além da Automação com Machine LearningAgile Trends 2018 - Além da Automação com Machine Learning
Agile Trends 2018 - Além da Automação com Machine Learning
 
Construção de Classificadores utilizando Pentaho Data Mining (WEKA) - FTSL 2014
Construção de Classificadores utilizando Pentaho Data Mining (WEKA) - FTSL 2014 Construção de Classificadores utilizando Pentaho Data Mining (WEKA) - FTSL 2014
Construção de Classificadores utilizando Pentaho Data Mining (WEKA) - FTSL 2014
 
Introdução a testes de software utilizando selenium
Introdução a testes de software utilizando seleniumIntrodução a testes de software utilizando selenium
Introdução a testes de software utilizando selenium
 
Machine learning - O que é isso?
Machine learning - O que é isso?Machine learning - O que é isso?
Machine learning - O que é isso?
 
Aula4 TEES UFS: Orientação a Objetos
Aula4 TEES UFS: Orientação a ObjetosAula4 TEES UFS: Orientação a Objetos
Aula4 TEES UFS: Orientação a Objetos
 

More from Christian Perone

More from Christian Perone (9)

PyTorch 2 Internals
PyTorch 2 InternalsPyTorch 2 Internals
PyTorch 2 Internals
 
Gradient-based optimization for Deep Learning: a short introduction
Gradient-based optimization for Deep Learning: a short introductionGradient-based optimization for Deep Learning: a short introduction
Gradient-based optimization for Deep Learning: a short introduction
 
Bayesian modelling for COVID-19 seroprevalence studies
Bayesian modelling for COVID-19 seroprevalence studiesBayesian modelling for COVID-19 seroprevalence studies
Bayesian modelling for COVID-19 seroprevalence studies
 
Uncertainty Estimation in Deep Learning
Uncertainty Estimation in Deep LearningUncertainty Estimation in Deep Learning
Uncertainty Estimation in Deep Learning
 
PyTorch under the hood
PyTorch under the hoodPyTorch under the hood
PyTorch under the hood
 
Word Embeddings - Introduction
Word Embeddings - IntroductionWord Embeddings - Introduction
Word Embeddings - Introduction
 
Apache Spark - Intro to Large-scale recommendations with Apache Spark and Python
Apache Spark - Intro to Large-scale recommendations with Apache Spark and PythonApache Spark - Intro to Large-scale recommendations with Apache Spark and Python
Apache Spark - Intro to Large-scale recommendations with Apache Spark and Python
 
Deep Learning - Convolutional Neural Networks - Architectural Zoo
Deep Learning - Convolutional Neural Networks - Architectural ZooDeep Learning - Convolutional Neural Networks - Architectural Zoo
Deep Learning - Convolutional Neural Networks - Architectural Zoo
 
Deep Learning - Convolutional Neural Networks
Deep Learning - Convolutional Neural NetworksDeep Learning - Convolutional Neural Networks
Deep Learning - Convolutional Neural Networks
 

Machine Learning com Python e Scikit-learn

  • 1. Apresentação Introdução Classificação Regressão Dúvidas Machine Learning Com Python e scikit-learn Christian S. Perone christian.perone@gmail.com 5 de junho de 2014
  • 2. Apresentação Introdução Classificação Regressão Dúvidas Parte I Apresentação
  • 3. Apresentação Introdução Classificação Regressão Dúvidas Apresentação ▸ Christian S. Perone ▸ Trabalha como desenvolvedor ▸ Colaborador e mantenedor open-source ▸ Blog ▸ http://pyevolve.sourceforge.net/wordpress ▸ Projetos ▸ https://github.com/perone ▸ Twitter @tarantulae
  • 4. Apresentação Introdução Classificação Regressão Dúvidas Roteiro Apresentação Apresentação Introdução O que é Machine Learning ? O problema Supervisionado vs Não-supervisionado Aprendizado Supervisionado Classificação Introdução OCR Support Vector Machines Classificação no scikit-learn Regressão Introdução Imóveis de Porto Alegre Regressão Linear Dúvidas Dúvidas
  • 5. Apresentação Introdução Classificação Regressão Dúvidas Parte II Introdução
  • 6. Apresentação Introdução Classificação Regressão Dúvidas O que é Machine Learning ? Machine Learning (ou Aprendizado de Máquina) é uma sub-área da Inteligência Artificial que estuda sistemas que podem aprender com dados. Alguns exemplos:
  • 7. Apresentação Introdução Classificação Regressão Dúvidas O que é Machine Learning ? Machine Learning (ou Aprendizado de Máquina) é uma sub-área da Inteligência Artificial que estuda sistemas que podem aprender com dados. Alguns exemplos: ▸ Classificador de Emails
  • 8. Apresentação Introdução Classificação Regressão Dúvidas O que é Machine Learning ? Machine Learning (ou Aprendizado de Máquina) é uma sub-área da Inteligência Artificial que estuda sistemas que podem aprender com dados. Alguns exemplos: ▸ Classificador de Emails ▸ Reconhecedor de caracteres (OCR)
  • 9. Apresentação Introdução Classificação Regressão Dúvidas O que é Machine Learning ? Machine Learning (ou Aprendizado de Máquina) é uma sub-área da Inteligência Artificial que estuda sistemas que podem aprender com dados. Alguns exemplos: ▸ Classificador de Emails ▸ Reconhecedor de caracteres (OCR) ▸ Sistemas de Recomendação
  • 10. Apresentação Introdução Classificação Regressão Dúvidas O que é Machine Learning ? Machine Learning (ou Aprendizado de Máquina) é uma sub-área da Inteligência Artificial que estuda sistemas que podem aprender com dados. Alguns exemplos: ▸ Classificador de Emails ▸ Reconhecedor de caracteres (OCR) ▸ Sistemas de Recomendação ▸ Retenção de clientes
  • 11. Apresentação Introdução Classificação Regressão Dúvidas O que é Machine Learning ? Machine Learning (ou Aprendizado de Máquina) é uma sub-área da Inteligência Artificial que estuda sistemas que podem aprender com dados. Alguns exemplos: ▸ Classificador de Emails ▸ Reconhecedor de caracteres (OCR) ▸ Sistemas de Recomendação ▸ Retenção de clientes ▸ Análise de Sentimento
  • 12. Apresentação Introdução Classificação Regressão Dúvidas O problema O problema de aprendizado geralmente considera um conjunto de n amostras e tenta prever dados de uma amostra desconhecida. As propriedades de uma amostra são geralmente chamadas de features. São categorizados em: ▸ Aprendizado Supervisionado (Supervised Learning) ▸ Aprendizado Não-supervisionado (Unsupervised Learning) Nota Existem também outras categorias (inclusive híbridas) que não serão abordadas.
  • 13. Apresentação Introdução Classificação Regressão Dúvidas Supervisionado vs Não-supervisionado No Aprendizado Supervisionado, os algoritmos são treinados com dados rotulados. Exemplo: Reconhecimento de Caracteres (OCR), onde o treino é realizado com várias amostras de caracteres onde cada imagem contém também um rótulo de qual caractere aquela imagem representa.
  • 14. Apresentação Introdução Classificação Regressão Dúvidas Supervisionado vs Não-supervisionado No Aprendizado Supervisionado, os algoritmos são treinados com dados rotulados. Exemplo: Reconhecimento de Caracteres (OCR), onde o treino é realizado com várias amostras de caracteres onde cada imagem contém também um rótulo de qual caractere aquela imagem representa. No Aprendizado Não-supervisionado, os algoritmos operam em dados não rotulados. Um exemplo de algoritmo não-supervisionado é o clustering, em que amostras são agrupadas conforme o nível de similaridade (ex: agrupar imagens semelhantes em um banco de imagens).
  • 15. Apresentação Introdução Classificação Regressão Dúvidas Aprendizado Supervisionado No Aprendizado Supervisionado, temos dois tipos de problemas:
  • 16. Apresentação Introdução Classificação Regressão Dúvidas Aprendizado Supervisionado No Aprendizado Supervisionado, temos dois tipos de problemas: Classificação As amostras pertencem a duas ou mais classes (ex: spam/não-spam) e o objetivo é aprender através de dados já rotulados qual a classe de um dado novo não rotulado. A classificação pode também ser vista como um aprendizado de valores discretos.
  • 17. Apresentação Introdução Classificação Regressão Dúvidas Aprendizado Supervisionado No Aprendizado Supervisionado, temos dois tipos de problemas: Classificação As amostras pertencem a duas ou mais classes (ex: spam/não-spam) e o objetivo é aprender através de dados já rotulados qual a classe de um dado novo não rotulado. A classificação pode também ser vista como um aprendizado de valores discretos. Regressão Se a saída esperada do algoritmo é uma ou mais variáveis contínuas, o problema é chamado de regressão. Um exemplo de regressão é prever o preço de um imóvel levando em consideração suas features (características) como o tamanho, número de quartos, número de garagens, etc.
  • 18. Apresentação Introdução Classificação Regressão Dúvidas Aprendizado Supervisionado Figura: Diagrama de aprendizado supervisionado (por Olivier Grisel)
  • 19. Apresentação Introdução Classificação Regressão Dúvidas Scikit-Learn Scikit-learn (sklearn) é um framework open-source de Machine Learning escrito em Python utilizando as plataformas Numpy/Scipy e Matplotlib.
  • 20. Apresentação Introdução Classificação Regressão Dúvidas Scikit-Learn Scikit-learn (sklearn) é um framework open-source de Machine Learning escrito em Python utilizando as plataformas Numpy/Scipy e Matplotlib. ▸ Ótima documentação
  • 21. Apresentação Introdução Classificação Regressão Dúvidas Scikit-Learn Scikit-learn (sklearn) é um framework open-source de Machine Learning escrito em Python utilizando as plataformas Numpy/Scipy e Matplotlib. ▸ Ótima documentação ▸ Inúmeros exemplos
  • 22. Apresentação Introdução Classificação Regressão Dúvidas Scikit-Learn Scikit-learn (sklearn) é um framework open-source de Machine Learning escrito em Python utilizando as plataformas Numpy/Scipy e Matplotlib. ▸ Ótima documentação ▸ Inúmeros exemplos ▸ Licença permissiva (BSD)
  • 23. Apresentação Introdução Classificação Regressão Dúvidas Scikit-Learn Scikit-learn (sklearn) é um framework open-source de Machine Learning escrito em Python utilizando as plataformas Numpy/Scipy e Matplotlib. ▸ Ótima documentação ▸ Inúmeros exemplos ▸ Licença permissiva (BSD) ▸ Utilizado por grandes empresas
  • 24. Apresentação Introdução Classificação Regressão Dúvidas Scikit-Learn Scikit-learn (sklearn) é um framework open-source de Machine Learning escrito em Python utilizando as plataformas Numpy/Scipy e Matplotlib. ▸ Ótima documentação ▸ Inúmeros exemplos ▸ Licença permissiva (BSD) ▸ Utilizado por grandes empresas ▸ Grande comunidade e muitos workshops
  • 25. Apresentação Introdução Classificação Regressão Dúvidas Parte III Classificação
  • 26. Apresentação Introdução Classificação Regressão Dúvidas Classificação - Hiperplano
  • 27. Apresentação Introdução Classificação Regressão Dúvidas Classificação - Hiperplano
  • 28. Apresentação Introdução Classificação Regressão Dúvidas Classificação - Hiperplano
  • 29. Apresentação Introdução Classificação Regressão Dúvidas Classificação - Reconhecimento de Caracteres Para demonstrar um problema de classificação, vamos utilizar um conjunto de dados de dígitos escritos à mão para treinar um modelo que irá posteriormente reconhecer imagens de caracteres escritos a mão. O conjunto de dados que vamos utilizar contém: ▸ 1.797 imagens rotuladas de caracteres escritos a mão ▸ Aproximadamente 180 caracteres por classe ▸ Cada imagem tem o tamanho 8x8 (64 pixels) ▸ Cada pixel tem a intensidade de 0 à 16 (tons de cinza)
  • 30. Apresentação Introdução Classificação Regressão Dúvidas Classificação - Reconhecimento de Caracteres
  • 31. Apresentação Introdução Classificação Regressão Dúvidas Classificação - Reconhecimento de Caracteres O pacote scikit-learn (sklearn) já vem com o dataset de dígitos: >>> from sklearn import datasets >>> digitos = datasets.load_digits() >>> digitos.data.shape (1797L, 64L) >>> digitos.target.shape (1797L,) Nota Como pode-se notar pelo formato dos dados do atributo data, o dataset contém 1.797 amostras de caracteres contendo 64 pixels em cada uma das amostras. Além dos dados temos os rótulos dos dados no atributo target.
  • 32. Apresentação Introdução Classificação Regressão Dúvidas Classificação - Reconhecimento de Caracteres
  • 33. Apresentação Introdução Classificação Regressão Dúvidas Classificação - Reconhecimento de Caracteres >> digitos.data[0] array([ 0., 0., 5., 13., 9., 1., 0., 0., 0., 15., 10., 15., 5., 0., 0., 3., 15., 2., 8., 0., 0., 4., 12., 0., 0., 8., 8., 5., 8., 0., 0., 9., 8., 0., 0., 4., 1., 12., 7., 0., 0., 2., 14., 5., 10., 0., 0., 0., 6., 13., 10., 0., 0., 0.]) >>> digitos.target[0] 0
  • 34. Apresentação Introdução Classificação Regressão Dúvidas Classificação - Support Vector Machines Para classificar as imagens de caracteres vamos utilizar um método muito conhecido em Machine Learning, este método é chamado de Support Vector Machine. SVM é uma técnica de classificação (ou regressão) que procura encontrar um modelo onde a separação entre as classes tenha a maior margem possível.
  • 35. Apresentação Introdução Classificação Regressão Dúvidas Classificação - Support Vector Machines Figura: Support Vector Machines (wikipedia)
  • 36. Apresentação Introdução Classificação Regressão Dúvidas Classificação - scikit-learn Figura: API para Aprendizado Supervisionado do sklearn (por Olivier Grisel)
  • 37. Apresentação Introdução Classificação Regressão Dúvidas Classificação - scikit-learn + SVM from sklearn import svm, datasets digitos = datasets.load_digits() modelo = svm.SVC(gamma=0.001) num_amostras = len(digitos.data)
  • 38. Apresentação Introdução Classificação Regressão Dúvidas Classificação - scikit-learn + SVM from sklearn import svm, datasets digitos = datasets.load_digits() modelo = svm.SVC(gamma=0.001) num_amostras = len(digitos.data) modelo.fit(digitos.data[:num_amostras / 2], digitos.target[:num_amostras / 2])
  • 39. Apresentação Introdução Classificação Regressão Dúvidas Classificação - scikit-learn + SVM from sklearn import svm, datasets digitos = datasets.load_digits() modelo = svm.SVC(gamma=0.001) num_amostras = len(digitos.data) modelo.fit(digitos.data[:num_amostras / 2], digitos.target[:num_amostras / 2]) classe_esperada = digitos.target[num_amostras / 2:] classe_descoberta = modelo.predict(digitos.data[num_amostras / 2:])
  • 40. Apresentação Introdução Classificação Regressão Dúvidas Classificação - scikit-learn + SVM >>> classe_esperada[25:35] array([8, 9, 0, 1, 2, 3, 4, 9, 6, 7]) >>> classe_descoberta[25:35] array([8, 9, 0, 1, 2, 3, 4, 5, 6, 7])
  • 41. Apresentação Introdução Classificação Regressão Dúvidas Classificação - Matriz de Confusão Uma das maneiras avaliar o quão bem um modelo se comporta, é utilizando uma Matriz de Confusão: >>> from sklearn import metrics >>> metrics.confusion_matrix(classe_esperada, ... classe_descoberta) [[87 0 0 0 1 0 0 0 0 0] [ 0 88 1 0 0 0 0 0 1 1] [ 0 0 85 1 0 0 0 0 0 0] [ 0 0 0 79 0 3 0 4 5 0] [ 0 0 0 0 88 0 0 0 0 4] [ 0 0 0 0 0 88 1 0 0 2] [ 0 1 0 0 0 0 90 0 0 0] [ 0 0 0 0 0 1 0 88 0 0] [ 0 0 0 0 0 0 0 0 88 0] [ 0 0 0 1 0 1 0 0 0 90]]
  • 42. Apresentação Introdução Classificação Regressão Dúvidas Classificação - Matriz de Confusão
  • 43. Apresentação Introdução Classificação Regressão Dúvidas Parte IV Regressão
  • 44. Apresentação Introdução Classificação Regressão Dúvidas Regressão Para ilustrar como uma regressão funciona, utilizaremos o método de Regressão Linear em um conjunto de dados reais. O método de Regressão Linear é um dos métodos mais simples para se realizar uma regressão. Ele funciona traçando uma reta sobre os dados de forma que esta reta tenha a soma de residuais com o menor valor possível.
  • 45. Apresentação Introdução Classificação Regressão Dúvidas Regressão Para ilustrar como uma regressão funciona, utilizaremos o método de Regressão Linear em um conjunto de dados reais. O método de Regressão Linear é um dos métodos mais simples para se realizar uma regressão. Ele funciona traçando uma reta sobre os dados de forma que esta reta tenha a soma de residuais com o menor valor possível. Figura: Regressao Linear
  • 46. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear - Dados de Imóveis Para ilustrar como a Regressão Linear funciona, utilizaremos o método em um conjunto de dados reais de imóveis da cidade de Porto Alegre / RS. Este conjunto de dados foi extraído 1 em Março de 2014 do site de uma imobiliária e contém dados de aproximadamente 6.800 imóveis a venda. Figura: Alguns imóveis do bairro Bela Vista. 1 Utilizando BeautifulSoup
  • 47. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear - Dados de Imóveis Figura: Scatter plot de imóveis do bairro Bela Vista.
  • 48. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear - Dados de Imóveis Figura: Scatter plot de imóveis do bairro Centro.
  • 49. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear - Dados de Imóveis Figura: Scatter plot de imóveis do Centro (vermelho) e Bela Vista (azul).
  • 50. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear Para realizar a Regressao Linear, usaremos apenas 1 feature (para facilitar a visualização da regressão).
  • 51. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear Para realizar a Regressao Linear, usaremos apenas 1 feature (para facilitar a visualização da regressão). Como entrada utilizaremos o dado da área do imóvel (em mts quadrados) e como saída esperada (valor que queremos prever baseado na área) utilizaremos o valor do imóvel em reais.
  • 52. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear - Overfitting Se em tudo o mais forem idênticas as várias explicações de um fenômeno, a mais simples é a melhor. —Guilherme de Ockham (1288-1347)
  • 53. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear - Overfitting
  • 54. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear >>> from sklearn import linear_model >>> from sklearn.cross_validation import train_test_split >>> model = linear_model.LinearRegression()
  • 55. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear >>> from sklearn import linear_model >>> from sklearn.cross_validation import train_test_split >>> model = linear_model.LinearRegression() >>> area, preco = imobiliaria.load_data("Bela Vista") >>> area_train, area_test, preco_train, preco_test = train_test_split(area, preco, test_size=0.20) >>> model.fit(area_train, preco_train)
  • 56. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear >>> from sklearn import linear_model >>> from sklearn.cross_validation import train_test_split >>> model = linear_model.LinearRegression() >>> area, preco = imobiliaria.load_data("Bela Vista") >>> area_train, area_test, preco_train, preco_test = train_test_split(area, preco, test_size=0.20) >>> model.fit(area_train, preco_train) >>> model.predict(56) 247882.22260541
  • 57. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear >>> from sklearn import linear_model >>> from sklearn.cross_validation import train_test_split >>> model = linear_model.LinearRegression() >>> area, preco = imobiliaria.load_data("Bela Vista") >>> area_train, area_test, preco_train, preco_test = train_test_split(area, preco, test_size=0.20) >>> model.fit(area_train, preco_train) >>> model.predict(56) 247882.22260541 >>> model.score(area_test, preco_test) 0.77655417131351878
  • 58. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear import matplotlib.pyplot as plt plt.scatter(area, preco, alpha=0.5) plt.plot(area, model.predict(area), color="red")
  • 59. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear import matplotlib.pyplot as plt plt.scatter(area, preco, alpha=0.5) plt.plot(area, model.predict(area), color="red") Figura: Regressão Linear e dados de treino.
  • 60. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear - Múltiplas features No modelo anterior, utilizamos apenas uma feature (área do imóvel) para criar um modelo, mas ainda temos um dado com um ótimo valor preditivo. Podemos incorporar este novo dado em uma nova feature do nosso modelo para reduzir o erro do nosso modelo.
  • 61. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear - Múltiplas features
  • 62. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear - Múltiplas features features, preco = imobiliaria.load_data("Bela Vista") features_train, features_test, preco_train, preco_test = train_test_split(features, preco, test_size=0.20)
  • 63. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear - Múltiplas features features, preco = imobiliaria.load_data("Bela Vista") features_train, features_test, preco_train, preco_test = train_test_split(features, preco, test_size=0.20) model.fit(features_train, preco_train)
  • 64. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear - Múltiplas features features, preco = imobiliaria.load_data("Bela Vista") features_train, features_test, preco_train, preco_test = train_test_split(features, preco, test_size=0.20) model.fit(features_train, preco_train) model.score(features_test, preco_test) 0.81960426250252283
  • 65. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear - Múltiplas features features, preco = imobiliaria.load_data("Bela Vista") features_train, features_test, preco_train, preco_test = train_test_split(features, preco, test_size=0.20) model.fit(features_train, preco_train) model.score(features_test, preco_test) 0.81960426250252283 Melhora no score de 0.77 para 0.81.
  • 66. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear - Múltiplas features Utilizando o modelo de regressão que treinamos, podemos fazer perguntas como por exemplo, qual seria a estimativa de preço para um imóvel de 56 m2 com apenas 1 dormitório localizado no bairro Bela Vista ?
  • 67. Apresentação Introdução Classificação Regressão Dúvidas Regressão Linear - Múltiplas features Utilizando o modelo de regressão que treinamos, podemos fazer perguntas como por exemplo, qual seria a estimativa de preço para um imóvel de 56 m2 com apenas 1 dormitório localizado no bairro Bela Vista ? linear_model.predict([56, 1]) array([ 216157.98252844]) Ou seja: um imóvel de 1 dormitório com 56 m2 no bairro Bela Vista em Porto Alegre custaria aproximadamente R$216.157,00.
  • 68. Apresentação Introdução Classificação Regressão Dúvidas Parte V Dúvidas
  • 69. Apresentação Introdução Classificação Regressão Dúvidas Dúvidas ? Junte-se ao PyTchê ! Acesse http://pytche.org