Machine Learning com Python e Scikit-learn

69
A I C R D M L Com Python e scikit-learn Christian S. Perone [email protected] de junho de

description

Uma introdução a Machine Learning utilizando Python e Scikit-learn.

Transcript of Machine Learning com Python e Scikit-learn

Page 1: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Machine LearningCom Python e scikit-learn

Christian S. [email protected]

5 de junho de 2014

Page 2: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Parte I

[ Apresentação \

Page 3: Machine Learning com Python e Scikit-learn

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

Page 4: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

RoteiroApresentaçãoApresentação

IntroduçãoO que é Machine Learning ?O problemaSupervisionado vs Não-supervisionadoAprendizado Supervisionado

ClassificaçãoIntroduçãoOCRSupport Vector MachinesClassi�cação no scikit-learn

RegressãoIntroduçãoImóveis de Porto AlegreRegressão Linear

DúvidasDúvidas

Page 5: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Parte II

[ Introdução \

Page 6: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

O que éMachine Learning ?

Machine Learning (ou Aprendizado de Máquina) é uma sub-área daInteligência Arti�cial que estuda sistemas que podem aprender comdados. Alguns exemplos:

▸ Classi�cador de Emails▸ Reconhecedor de caracteres (OCR)▸ Sistemas de Recomendação▸ Retenção de clientes▸ Análise de Sentimento

Page 7: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

O que éMachine Learning ?

Machine Learning (ou Aprendizado de Máquina) é uma sub-área daInteligência Arti�cial que estuda sistemas que podem aprender comdados. Alguns exemplos:▸ Classi�cador de Emails

▸ Reconhecedor de caracteres (OCR)▸ Sistemas de Recomendação▸ Retenção de clientes▸ Análise de Sentimento

Page 8: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

O que éMachine Learning ?

Machine Learning (ou Aprendizado de Máquina) é uma sub-área daInteligência Arti�cial que estuda sistemas que podem aprender comdados. Alguns exemplos:▸ Classi�cador de Emails▸ Reconhecedor de caracteres (OCR)

▸ Sistemas de Recomendação▸ Retenção de clientes▸ Análise de Sentimento

Page 9: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

O que éMachine Learning ?

Machine Learning (ou Aprendizado de Máquina) é uma sub-área daInteligência Arti�cial que estuda sistemas que podem aprender comdados. Alguns exemplos:▸ Classi�cador de Emails▸ Reconhecedor de caracteres (OCR)▸ Sistemas de Recomendação

▸ Retenção de clientes▸ Análise de Sentimento

Page 10: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

O que éMachine Learning ?

Machine Learning (ou Aprendizado de Máquina) é uma sub-área daInteligência Arti�cial que estuda sistemas que podem aprender comdados. Alguns exemplos:▸ Classi�cador de Emails▸ Reconhecedor de caracteres (OCR)▸ Sistemas de Recomendação▸ Retenção de clientes

▸ Análise de Sentimento

Page 11: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

O que éMachine Learning ?

Machine Learning (ou Aprendizado de Máquina) é uma sub-área daInteligência Arti�cial que estuda sistemas que podem aprender comdados. Alguns exemplos:▸ Classi�cador de Emails▸ Reconhecedor de caracteres (OCR)▸ Sistemas de Recomendação▸ Retenção de clientes▸ Análise de Sentimento

Page 12: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

O problema

O problema de aprendizado geralmente considera um conjunto de namostras e tenta prever dados de uma amostra desconhecida. Aspropriedades de uma amostra são geralmente chamadas de features. Sãocategorizados em:

▸ Aprendizado Supervisionado (Supervised Learning)▸ Aprendizado Não-supervisionado (Unsupervised Learning)

NotaExistem também outras categorias (inclusive híbridas) que não serãoabordadas.

Page 13: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Supervisionado vs Não-supervisionado

No Aprendizado Supervisionado, os algoritmos são treinados comdados rotulados. Exemplo: Reconhecimento de Caracteres (OCR), ondeo treino é realizado com várias amostras de caracteres onde cadaimagem contém também um rótulo de qual caractere aquela imagemrepresenta.

No Aprendizado Não-supervisionado, os algoritmos operam emdados não rotulados. Um exemplo de algoritmo não-supervisionado é oclustering, em que amostras são agrupadas conforme o nível desimilaridade (ex: agrupar imagens semelhantes em um banco deimagens).

Page 14: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Supervisionado vs Não-supervisionado

No Aprendizado Supervisionado, os algoritmos são treinados comdados rotulados. Exemplo: Reconhecimento de Caracteres (OCR), ondeo treino é realizado com várias amostras de caracteres onde cadaimagem contém também um rótulo de qual caractere aquela imagemrepresenta.

No Aprendizado Não-supervisionado, os algoritmos operam emdados não rotulados. Um exemplo de algoritmo não-supervisionado é oclustering, em que amostras são agrupadas conforme o nível desimilaridade (ex: agrupar imagens semelhantes em um banco deimagens).

Page 15: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Aprendizado Supervisionado

No Aprendizado Supervisionado, temos dois tipos de problemas:

Classi�cação As amostras pertencem a duas ou mais classes (ex:spam/não-spam) e o objetivo é aprender através de dadosjá rotulados qual a classe de um dado novo não rotulado.A classi�cação pode também ser vista como umaprendizado de valores discretos.

Regressão Se a saída esperada do algoritmo é uma ou maisvariáveis contínuas, o problema é chamado de regressão.Um exemplo de regressão é prever o preço de um imóvellevando em consideração suas features (características)como o tamanho, número de quartos, número degaragens, etc.

Page 16: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Aprendizado Supervisionado

No Aprendizado Supervisionado, temos dois tipos de problemas:Classi�cação As amostras pertencem a duas ou mais classes (ex:

spam/não-spam) e o objetivo é aprender através de dadosjá rotulados qual a classe de um dado novo não rotulado.A classi�cação pode também ser vista como umaprendizado de valores discretos.

Regressão Se a saída esperada do algoritmo é uma ou maisvariáveis contínuas, o problema é chamado de regressão.Um exemplo de regressão é prever o preço de um imóvellevando em consideração suas features (características)como o tamanho, número de quartos, número degaragens, etc.

Page 17: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Aprendizado Supervisionado

No Aprendizado Supervisionado, temos dois tipos de problemas:Classi�cação As amostras pertencem a duas ou mais classes (ex:

spam/não-spam) e o objetivo é aprender através de dadosjá rotulados qual a classe de um dado novo não rotulado.A classi�cação pode também ser vista como umaprendizado de valores discretos.

Regressão Se a saída esperada do algoritmo é uma ou maisvariáveis contínuas, o problema é chamado de regressão.Um exemplo de regressão é prever o preço de um imóvellevando em consideração suas features (características)como o tamanho, número de quartos, número degaragens, etc.

Page 18: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Aprendizado Supervisionado

Figura: Diagrama de aprendizado supervisionado (por Olivier Grisel)

Page 19: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Scikit-Learn

Scikit-learn (sklearn) é um framework open-source de MachineLearning escrito em Python utilizando as plataformas Numpy/Scipy eMatplotlib.

▸ Ótima documentação▸ Inúmeros exemplos▸ Licença permissiva (BSD)▸ Utilizado por grandes empresas▸ Grande comunidade e muitos workshops

Page 20: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Scikit-Learn

Scikit-learn (sklearn) é um framework open-source de MachineLearning escrito em Python utilizando as plataformas Numpy/Scipy eMatplotlib.

▸ Ótima documentação

▸ Inúmeros exemplos▸ Licença permissiva (BSD)▸ Utilizado por grandes empresas▸ Grande comunidade e muitos workshops

Page 21: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Scikit-Learn

Scikit-learn (sklearn) é um framework open-source de MachineLearning escrito em Python utilizando as plataformas Numpy/Scipy eMatplotlib.

▸ Ótima documentação▸ Inúmeros exemplos

▸ Licença permissiva (BSD)▸ Utilizado por grandes empresas▸ Grande comunidade e muitos workshops

Page 22: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Scikit-Learn

Scikit-learn (sklearn) é um framework open-source de MachineLearning escrito em Python utilizando as plataformas Numpy/Scipy eMatplotlib.

▸ Ótima documentação▸ Inúmeros exemplos▸ Licença permissiva (BSD)

▸ Utilizado por grandes empresas▸ Grande comunidade e muitos workshops

Page 23: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Scikit-Learn

Scikit-learn (sklearn) é um framework open-source de MachineLearning escrito em Python utilizando as plataformas Numpy/Scipy eMatplotlib.

▸ Ótima documentação▸ Inúmeros exemplos▸ Licença permissiva (BSD)▸ Utilizado por grandes empresas

▸ Grande comunidade e muitos workshops

Page 24: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Scikit-Learn

Scikit-learn (sklearn) é um framework open-source de MachineLearning escrito em Python utilizando as plataformas Numpy/Scipy eMatplotlib.

▸ Ótima documentação▸ Inúmeros exemplos▸ Licença permissiva (BSD)▸ Utilizado por grandes empresas▸ Grande comunidade e muitos workshops

Page 25: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Parte III

[ Classificação \

Page 26: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Classificação - Hiperplano

Page 27: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Classificação - Hiperplano

Page 28: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Classificação - Hiperplano

Page 29: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Classificação - Reconhecimento de Caracteres

Para demonstrar um problema de classi�cação, vamos utilizar umconjunto de dados de dígitos escritos à mão para treinar um modeloque 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)

Page 30: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Classificação - Reconhecimento de Caracteres

Page 31: Machine Learning com Python e Scikit-learn

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,)

NotaComo pode-se notar pelo formato dos dados do atributo data, o datasetcontém 1.797 amostras de caracteres contendo 64 pixels em cada uma dasamostras. Além dos dados temos os rótulos dos dados no atributo target.

Page 32: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Classificação - Reconhecimento de Caracteres

Page 33: Machine Learning com Python e Scikit-learn

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., 0., 13.,

15., 10., 15., 5., 0., 0., 3., 15., 2., 0., 11.,8., 0., 0., 4., 12., 0., 0., 8., 8., 0., 0.,5., 8., 0., 0., 9., 8., 0., 0., 4., 11., 0.,1., 12., 7., 0., 0., 2., 14., 5., 10., 12., 0.,0., 0., 0., 6., 13., 10., 0., 0., 0.])

>>> digitos.target[0]0

Page 34: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Classificação - Support VectorMachines

Para classi�car as imagens de caracteres vamos utilizar um métodomuito conhecido emMachine Learning, este método é chamado deSupport Vector Machine. SVM é uma técnica de classi�cação (ouregressão) que procura encontrar um modelo onde a separação entre asclasses tenha a maior margem possível.

Page 35: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Classificação - Support VectorMachines

Figura: Support Vector Machines (wikipedia)

Page 36: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Classificação - scikit-learn

Figura: API para Aprendizado Supervisionado do sklearn (por Olivier Grisel)

Page 37: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Classificação - scikit-learn + SVM

from sklearn import svm, datasetsdigitos = 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:])

Page 38: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Classificação - scikit-learn + SVM

from sklearn import svm, datasetsdigitos = 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:])

Page 39: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Classificação - scikit-learn + SVM

from sklearn import svm, datasetsdigitos = 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:])

Page 40: Machine Learning com Python e Scikit-learn

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])

Page 41: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Classificação - Matriz de ConfusãoUma das maneiras avaliar o quão bem ummodelo se comporta, éutilizando umaMatriz 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]]

Page 42: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Classificação - Matriz de Confusão

Page 43: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Parte IV

[ Regressão \

Page 44: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

RegressãoPara ilustrar como uma regressão funciona, utilizaremos o método deRegressão Linear em um conjunto de dados reais. O método deRegressão Linear é um dos métodos mais simples para se realizar umaregressão. Ele funciona traçando uma reta sobre os dados de forma queesta reta tenha a soma de residuais com o menor valor possível.

Figura: Regressao Linear

Page 45: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

RegressãoPara ilustrar como uma regressão funciona, utilizaremos o método deRegressão Linear em um conjunto de dados reais. O método deRegressão Linear é um dos métodos mais simples para se realizar umaregressão. Ele funciona traçando uma reta sobre os dados de forma queesta reta tenha a soma de residuais com o menor valor possível.

Figura: Regressao Linear

Page 46: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Regressão Linear - Dados de ImóveisPara ilustrar como a Regressão Linear funciona, utilizaremos o métodoem 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 deuma imobiliária e contém dados de aproximadamente 6.800 imóveis avenda.

Figura: Alguns imóveis do bairro Bela Vista.

1Utilizando BeautifulSoup

Page 47: Machine Learning com Python e Scikit-learn

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.

Page 48: Machine Learning com Python e Scikit-learn

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.

Page 49: Machine Learning com Python e Scikit-learn

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).

Page 50: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Regressão Linear

Para realizar a Regressao Linear, usaremos apenas 1 feature (parafacilitar a visualização da regressão).

Como entrada utilizaremos o dado da área do imóvel (em mtsquadrados) e como saída esperada (valor que queremos prever baseadona área) utilizaremos o valor do imóvel em reais.

Page 51: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Regressão Linear

Para realizar a Regressao Linear, usaremos apenas 1 feature (parafacilitar a visualização da regressão).

Como entrada utilizaremos o dado da área do imóvel (em mtsquadrados) e como saída esperada (valor que queremos prever baseadona área) utilizaremos o valor do imóvel em reais.

Page 52: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Regressão Linear - Overfitting

Se em tudo o mais foremidênticas as várias explicaçõesde um fenômeno, a maissimples é a melhor.—Guilherme de Ockham

(1288-1347)

Page 53: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Regressão Linear - Overfitting

Page 54: Machine Learning com Python e Scikit-learn

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

Page 55: Machine Learning com Python e Scikit-learn

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

Page 56: Machine Learning com Python e Scikit-learn

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

Page 57: Machine Learning com Python e Scikit-learn

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

Page 58: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Regressão Linearimport matplotlib.pyplot as pltplt.scatter(area, preco, alpha=0.5)plt.plot(area, model.predict(area), color="red")

Figura: Regressão Linear e dados de treino.

Page 59: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Regressão Linearimport matplotlib.pyplot as pltplt.scatter(area, preco, alpha=0.5)plt.plot(area, model.predict(area), color="red")

Figura: Regressão Linear e dados de treino.

Page 60: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Regressão Linear - Múltiplas featuresNo modelo anterior, utilizamos apenas uma feature (área do imóvel)para criar um modelo, mas ainda temos um dado com um ótimo valorpreditivo.

Podemos incorporar este novo dado em uma nova feature do nossomodelo para reduzir o erro do nosso modelo.

Page 61: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Regressão Linear - Múltiplas features

Page 62: Machine Learning com Python e Scikit-learn

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.

Page 63: Machine Learning com Python e Scikit-learn

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.

Page 64: Machine Learning com Python e Scikit-learn

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.

Page 65: Machine Learning com Python e Scikit-learn

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.

Page 66: Machine Learning com Python e Scikit-learn

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 fazerperguntas como por exemplo, qual seria a estimativa de preço para umimóvel de 56 m2 com apenas 1 dormitório localizado no bairro BelaVista ?

linear_model.predict([56, 1])array([ 216157.98252844])

Ou seja: um imóvel de 1 dormitório com 56 m2 no bairro Bela Vistaem Porto Alegre custaria aproximadamente R$216.157,00.

Page 67: Machine Learning com Python e Scikit-learn

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 fazerperguntas como por exemplo, qual seria a estimativa de preço para umimóvel de 56 m2 com apenas 1 dormitório localizado no bairro BelaVista ?

linear_model.predict([56, 1])array([ 216157.98252844])

Ou seja: um imóvel de 1 dormitório com 56 m2 no bairro Bela Vistaem Porto Alegre custaria aproximadamente R$216.157,00.

Page 68: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Parte V

[ Dúvidas \

Page 69: Machine Learning com Python e Scikit-learn

Apresentação Introdução Classificação Regressão Dúvidas

Dúvidas ?

Junte-se ao PyTchê ! Acesse http://pytche.org