Você está na página 1de 79

Python Avançado

Chico Camargo
Primeiro, um glossário
Existem algoritmos de aprendizado de máquina que usam
matemática + estatística para encontrar padrões em dados.

Quando esses padrões começam a ficar muito complicados, é


comum as pessoas chamarem esses algoritmos de
inteligência artificial.

( quando são padrões simples, não precisa falar em I.A. )


Segundo, um adendo
Está na moda falar em inteligência artificial.

Um estudo de 2019 mostrou que 40% das empresas


europeias que dizem que usam IA na verdade não
usam nada de IA.

https://www.theverge.com/2019/3/5/18251326/ai-startups-europe-fake-40-percent-mmc-report
https://mmc.vc/research/the-state-of-ai-2019-divergence-a-quick-read-deck
Aprendizado de máquina
● Esta cor is #eeff41
● Aprendizado tem 11 letras
● “máquina” em inglês é “machine”.
?
● Isso vale como aprendizado?
O que está faltando?
Aprendizado de máquina
“O aprendizado denota mudanças no sistema que são
adaptativas no sentido de que permitem que o sistema execute
a mesma tarefa (ou tarefas dentro de uma população de tarefas
semelhantes) de forma mais eficiente na próxima vez.”

- Herbert Simon, Prêmio Nobel, Prêmio Turing


Aprendizado de máquina
“O aprendizado denota mudanças no sistema que são
adaptativas no sentido de que permitem que o sistema execute
a mesma tarefa (ou tarefas dentro de uma população de tarefas
semelhantes) de forma mais eficiente na próxima vez.”

- Herbert Simon, Prêmio Nobel, Prêmio Turing


Aprendizado de máquina
Algum tipo de
“O aprendizado denota mudanças no sistema que são
memória
adaptativas no sentido de que permitem que o sistema execute
a mesma tarefa (ou tarefas dentro de uma população de tarefas
semelhantes) de forma mais eficiente na próxima vez.”

- Herbert Simon, Prêmio Nobel, Prêmio Turing


Aprendizado de máquina
Algum tipo de
“O aprendizado denota mudanças no sistema que são
memória
adaptativas no sentido de que permitem que o sistema execute
a mesma tarefa (ou tarefas dentro de uma população de tarefas
semelhantes) de forma mais eficiente na próxima vez.”
Uma
generalização da
- Herbert Simon, Prêmio Nobel, Prêmio Turing mesma tarefa
Aprendizado de máquina
Algum tipo de
“O aprendizado denota mudanças no sistema que são
memória
adaptativas no sentido de que permitem que o sistema execute
a mesma tarefa (ou tarefas dentro de uma população de tarefas
semelhantes) de forma mais eficiente na próxima vez.”
Uma
generalização da
Melhora
- Herbert Simon, Prêmio Nobel, Prêmio Turing mesma tarefa
Exemplos:
● Classificação
○ Diagnóstico médico: dada uma tomografia, a máquina pode
identificar regiões com comportamento anormal?

● Planejamento e ação
○ Jogando jogos, dirigindo um carro

● Previsão:
○ Vendas, receita, clientes, tempo…
Aprendizado de máquina
● Regressão

● Classificação

● Agrupamento (clustering)

● Seleção de modelos

● Estatística Bayesiana

● Redução de dimensionalidade
Aprendizado de máquina
Dois tipos principais de algoritmos de machine learning:

Aprendizado Supervisionado

Ilustração por @Ciaraioch


Aprendizado de máquina
Dois tipos principais de algoritmos de machine learning:

Aprendizado Supervisionado Aprendizado Não-supervisionado

Ilustração por @Ciaraioch


Aprendizado de máquina
Dois tipos principais de algoritmos de machine learning:

Aprendizado Supervisionado Aprendizado Não-supervisionado


Regressão

New York New York San Francisco San Francisco


quartos banh. preço ano_cons. area preço_p_area altitude cidade
Regressão

New York New York San Francisco San Francisco


quartos banh. preço ano_cons. area preço_p_area altitude cidade

? ? ?
quartos banh. preço ano_cons. area preço_p_area altitude cidade

Se assumirmos que o preço é


proporcional à área da casa…
quartos banh. preço ano_cons. area preço_p_area altitude cidade

área

previsão

preço
Se assumirmos que o preço é
proporcional à área da casa…
…podemos prever o preço

preço

área
Mas proporcional como?

preço

área
Mas proporcional como?

preço

área
Mas proporcional como?

preço

área
Mas proporcional como?

preço

área
Mas proporcional como?

preço

área
Existe uma única resposta?

preço

área
Modelos diferentes =
suposições diferentes x = área
y = preço

Opção 1: modelo linear

preço
área
Modelos diferentes =
suposições diferentes x = área
y = preço

Opção 2: modelo quadrático

preço
área
Modelos diferentes =
suposições diferentes x = área
y = preço

Opção 3: modelo sigmoide

preço
área
Para mexer nessa função: desmos.com/calculator
Modelos diferentes =
suposições diferentes x = área
y = preço

Opção 1: modelo linear

Opção 2: modelo quadrático

Opção 3: modelo sigmoide


Modelos diferentes =
suposições diferentes x = área
y = preço

Opção 1: modelo linear

Opção 2: modelo quadrático

Opção 3: modelo sigmoide


Mas como proceder?

preço

área
Mas como proceder?

preço

área
Mas como proceder?

preço

área
Mas como proceder?

preço

área
Mas como proceder?

preço

área
Mas como proceder?

Valores
aleatórios?
Mas como proceder?
valores_a = [0.1, 0.2, 0.3, 0.4, 0.5]
valores_b = [ 5, 10, 15, 20, 30]

for a in valores_a:
for b in valores_b:
# faz o gráfico
# vê se fica bom?
Mas como proceder?
valores_a = [0.1, 0.2, 0.3, 0.4, 0.5]
valores_b = [ 5, 10, 15, 20, 30]

for a in valores_a:
for b in valores_b:
# faz o gráfico
# vê se fica bom?

Busca em grade
Dá pra fazer algo melhor que isso?

Busca em grade Valores


aleatórios
Aprendizado de máquina
“O aprendizado denota mudanças no sistema que são
adaptativas no sentido de que permitem que o sistema execute
a mesma tarefa (ou tarefas dentro de uma população de tarefas
semelhantes) de forma mais eficiente na próxima vez.”

- Herbert Simon, Prêmio Nobel, Prêmio Turing


Como proceder? Passo a passo.

Qualidade do
ajuste
espaço de iterações (passos)
parâmetros
Aumentando o ajuste…
Como proceder? Passo a passo.

Erro
espaço de iterações (passos)
parâmetros
…ou diminuindo o erro.
Calculando o erro:

Erro grande
price

sqft
Calculando o erro:

Erro grande
price

sqft
Calculando o erro:

Erro menor
price

sqft
Calculando o erro:

Erro menor
price

sqft
Calculando o erro:

Erro pequeno
price

sqft
Classificação
y
● Usando apenas x e y
● Tem como prever quais
pontos são vermelhos
e quais são azuis?
OU:
● Como classificar os pares
(x , y) em azul ou vermelho?
x
Regressão Classificação
Classificação é usada em todo lugar
Classificação é usada em todo lugar

New York New York San Francisco San Francisco


quartos banh. preço ano_cons. area preço_p_area altitude cidade

?
?
Classificação de imagens
Classificação de imagens
Classificação é aprendizado supervisionado.

1. Você treina o algoritmo


usando exemplos corretos

2. Uma vez treinado, o algoritmo


faz previsões a partir de novos
Aprendizado Supervisionado dados

Ilustração: @Ciaraioch
Classificação é aprendizado supervisionado.

1. Você treina o algoritmo


usando exemplos corretos

2. Uma vez treinado, o algoritmo


faz previsões a partir de novos

Input: cheiro dados

Output: banana ou maçã?


Regressão também é aprendizado supervisionado.

1. Você treina o algoritmo


y usando exemplos corretos

2. Uma vez treinado, o algoritmo


faz previsões a partir de novos
dados
x
Regressão também é aprendizado supervisionado.

1. Você treina o algoritmo


y usando exemplos corretos

2. Uma vez treinado, o algoritmo


faz previsões a partir de novos
dados
x
Regressão também é aprendizado supervisionado.

1. Você treina o algoritmo


y usando exemplos corretos

2. Uma vez treinado, o algoritmo


faz previsões a partir de novos
dados
x
Um classificador: Regressão Logística
(pois é, nome infeliz)
É uma estrela?
Input:
sim x = dados contínuos
y = dados binários

não
Luminosidade
Regressão Logística

Input:
sim x = dados contínuos
y = dados binários

não
x
Regressão Logística
y
Input:
1 x = dados contínuos
y = dados binários

0 x
Regressão Logística
y Input:
x = dados contínuos
1
y = dados binários

O modelo:

0 x
Regressão Logística
y Input:
x = dados contínuos
1
y = dados binários

O modelo:

0 x
Regressão Logística
y Input:
x = dados contínuos
1
y = dados binários

O modelo:

0 x
Regressão Logística
y Input:
x = dados contínuos
1
y = dados binários

O modelo:

0 x
Regressão Logística
y O modelo:

A interpretação:
O modelo te dá
0 x
a probabilidade de y = 1,
para um dado valor de x
Regressão Logística
y O modelo:

A interpretação:
O modelo te dá
0 x
a probabilidade de y = 1,
para um dado valor de xi
A Matriz de Confusão
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

# Primeiro vamos dividir os dados em um grupo de treino e um de teste


X_train,X_test,y_train,y_test = train_test_split(X, y, test_size=0.33)

log_reg = LogisticRegression() # Cria o classificador


log_reg.fit(X_train, y_train) # Treina com parte dos dados
log_reg.predict(X_test, y_test) # Testa o classificador

probs = log_reg.predict_proba(X_test) # Dá as probabilidades P(y)


score = log_reg.score(X_test, y_test) # Dá a acurácia desse algoritmo
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

# Primeiro vamos dividir os dados em um grupo de treino e um de teste


X_train,X_test,y_train,y_test = train_test_split(X, y, test_size=0.33)

log_reg = LogisticRegression() # Cria o classificador


Você encontra tudo aqui:
log_reg.fit(X_train, y_train) # Treina com parte dos dados
https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html
log_reg.predict(X_test, y_test) # Testa o classificador

probs = log_reg.predict_proba(X_test) # Dá as probabilidades P(y)


score = log_reg.score(X_test, y_test) # Dá a acurácia desse algoritmo
sklearn é ótima para
● Machine learning em python
● Classificação, regressão e
clustering: SVMs, florestas
aleatórias, k-means, etc etc
● Trabalhando com outras
(ou simplesmente sklearn) bibliotecas do python:
pandas, numpy, etc
● Como primeiro passo antes
de outras ferramentas de ML
sklearn torna fácil
testar vários algoritmos
de aprendizado de
máquina no mesmo
conjunto de dados
sklearn torna fácil
testar vários algoritmos
de aprendizado de
máquina no mesmo
conjunto de dados
sklearn torna fácil
testar vários algoritmos
de aprendizado de
máquina no mesmo
conjunto de dados
Programar em sklearn é bem simples
Programar em sklearn é bem simples
Aula prática:
1. Regressão linear
https://colab.research.google.com/drive/1BsGzxC
Vs9e3ylDr9fQRmvc150vdxVwmW?usp=sharing

2. Classificação
https://colab.research.google.com/drive/1UFx4st
I1R0bcaGh3SzXGjKfbmULcvlIQ?usp=sharing

Você também pode gostar