SlideShare a Scribd company logo
1 of 45
Download to read offline
Data Mining e Machine
Learning com Python
Prof. Mateus Grellert
Universidade Católica de Pelotas
Introdução
Link para download da palestra e documentos úteis
https://tinyurl.com/tchelinux-grellert
QR Code
PROF. MATEUS GRELLERT 2
Introdução
Tanto Data Mining quando Machine Learning são ferramentas da
Ciência de Dados
A Ciência de Dados estuda métodos de extração de conhecimento
com base em informações coletadas de diferentes fontes
O objetivo é buscar a relação entre valores observáveis
(computáveis) e não observáveis (não computáveis)
Também usamos os termos atributos e desfecho/classe para
valores observáveis e não observáveis respectivamente
PROF. MATEUS GRELLERT 3
Introdução
PROF. MATEUS GRELLERT 4
Bancos
de Dados
Técnicas de
Processamento
e Análise
Algoritmos
de Modelagem
Machine
Learning
Data
Mining
Bibliotecas
e software
Ciência
de Dados
Data Mining x Machine Learning
Exemplos de aplicações que utilizam DM/ML
Reconhecimento de objetos/ações
Análise de sentimento
Diagnóstico de doenças
Prevenção de desastres naturais
Sistemas de recomendação
Sistemas autônomos
PROF. MATEUS GRELLERT 5
Mas afinal de onde vêm os dados?
Existem diversas fontes públicas que fornecem dados para
análise:
UCI Machine Learning Repository
Kaggle
Youtube-8M
APIs como Twitter Streaming
...
Fontes de Dados
PROF. MATEUS GRELLERT 6
Tipos de Dados
Os dados são normalmente categorizados conforme a faixa
de valores que eles representam, podendo ser:
Dados categóricos: são aqueles que assumem um subconjunto
finito de valores. Exemplo: a variável “Choveu” somente assume os
valores V ou F.
Dados numéricos: assumem uma faixa contínua de valores.
Exemplo: temperatura pode assumir qualquer valor entre (-273, inf)
PROF. MATEUS GRELLERT 7
Ferramentas de DM/ML
OK, já tenho os dados. Como começo a desenvolver aplicações
de DM/ML?
Hoje em dia, existem duas linguagens que se destacam para
esse propósito: Python e R
Algumas Bibliotecas em Python úteis para desenvolvimento de
aplicações DM/ML
numpy
pandas
scipy
PROF. MATEUS GRELLERT 8
scikit-learn
matplotlib
nltk
seaborn
imblearn
pickle
Fluxo de projeto integrando DM e ML:
Desenvolvimento de Aplicações DM/ML
PROF. MATEUS GRELLERT 9
Banco de
Dados
1. Limpeza/
Processamento
3. Transformação
2. Visualização e
Análise
4. Treinamento 5. Avaliação 6. Refinamento
Modelo
Preditivo
Data Mining Machine Learning
Acessando um Banco em Python
Duas formas comuns de acessar bancos em Python com
Pandas
PROF. MATEUS GRELLERT 10
Exemplo de Banco em CSV
PROF. MATEUS GRELLERT 11
Vamos ver como fica na prática usando um banco cujo desfecho é a
diabetes em mulheres indígenas (Pima Indians Dataset)
Fonte: https://www.kaggle.com/uciml/pima-indians-diabetes-database
atributos desfecho
Acessando um Banco em Python
Quando usamos Pandas, o banco fica armazenado em uma estrutura
chamada Dataframe, que é organizada em linhas e colunas
identificadas
PROF. MATEUS GRELLERT 12
Fluxo de projeto integrando DM e ML:
Desenvolvimento de Aplicações DM/ML
PROF. MATEUS GRELLERT 13
Banco de
Dados
1. Limpeza/
Processamento
Data Mining Machine Learning
A primeira tarefa que realizamos é o tratamento dos dados
armazenados no banco
Dependendo de como os dados são adquiridos e representados,
essa tarefa pode ser até mesmo desconsiderada
Existem duas situações que exigem atenção:
Dados não estruturados: se estivermos trabalhando com esse tipo de
dado, essa etapa vai ser bem mais complexa
Dados não preenchidos ou mal preenchidos: normalmente são mais
simples de tratar
1 – Limpeza e Pré-processamento
PROF. MATEUS GRELLERT 14
1 – Limpeza e Pré-processamento – missing
values
Podemos simplesmente remover as amostras com dados não preenchidos,
mas isso pode eliminar exemplos importantes de treinamento
Uma alternativa para isso é usar a imputação de dados
A técnica consiste em substituir os valores faltantes em cada coluna por
um valor neutro como a média (dados numéricos), a mediana ou a moda
(dados categóricos)
Alguns estatísticos criticam essa abordagem por gerar um desvio padrão
subestimado
Melhor imputar ou remover? Depende, vale sempre testar os dois casos
PROF. MATEUS GRELLERT 15
1 – Limpeza e Pré-processamento – Imputação
PROF. MATEUS GRELLERT 16
detectamos colunas com
valores nulos pelo
método isnull.any()
para imputar dados em
colunas com valores
nulos, usamos o método
fillna(val)
val é o valor que vai
substituir. Nesse caso
usamos a média
(calculada pelo método
mean() )
Fluxo de projeto integrando DM e ML:
Desenvolvimento de Aplicações DM/ML
PROF. MATEUS GRELLERT 17
Banco de
Dados
1. Limpeza/
Processamento
2. Visualização e
Análise
Modelo
Preditivo
Data Mining Machine Learning
Visualização e Análise de Dados
Permite avaliar de forma visual a distribuição dos dados
Para dados categóricos, usamos o histograma de valores,
que representa quantas vezes cada valor ocorreu
Para dados numéricos, podemos usar histogramas, ou a
função densidade de probabilidade (PDF) ou semelhante
É interessante agrupar os histogramas/PDFs de acordo com
o valor do desfecho (vamos ver o exemplo pra ficar claro)
PROF. MATEUS GRELLERT 18
Visualização e Análise de Dados
A visualização vai permitir uma análise inicial de que dados são úteis
para prever o nosso desfecho
Dados úteis são aqueles que nos permitem separar os grupos de
desfecho de forma homogênea (idealmente linear)
PROF. MATEUS GRELLERT 19
Fonte: http://www.cs.uccs.edu/~jkalita/work/cs587/2014/03SimpleNets.pdf
Visualização e Análise de Dados
20
Código para plotar histogramas usando o método plot.hist() do
pandas agrupados pelo desfecho de diabetes (coluna “Outcome”)
Usamos groupby(“Outcome”) para agrupar os dados primeiro
Visualização e Análise de Dados
PROF. MATEUS GRELLERT 21
- O nível de glicose pode ser útil
para separar os desfechoss de
diabetes.
- Na região (50, 100) existe maior
ocorrência de casos negativos.
- Na região (150, 200) de casos
positivos
Fluxo de projeto integrando DM e ML:
Desenvolvimento de Aplicações DM/ML
PROF. MATEUS GRELLERT 22
Banco de
Dados
1. Limpeza/
Processamento
3. Transformação
2. Visualização e
Análise
Modelo
Preditivo
Data Mining Machine Learning
Transformação de Dados
Consiste em tratar os dados para:
aumentar a qualidade da informação de entrada
reduzir o número de atributos para gerar modelos mais simples
(Curse of Dimensionality)
normalizar os valores para a mesma escala (necessário para
algumas técnicas)
PROF. MATEUS GRELLERT 23
Transformação de Dados – Normalização
Normalizar os atributos é necessário para que algumas
técnicas funcionem corretamente (PCA e SVMs são exemplos
clássicos)
Para isso, mapeamos os valores para uma nova faixa de
representação
Standard Scaling: para cada atributo, subtraímos a média e
dividimos pela variância. Isso faz com que todos os atributos
tenham média zero e variância unitária.
PROF. MATEUS GRELLERT 24
Transformação de Dados – PCA
Um transformação comum para aumentar a qualidade e reduzir o conjunto de
atributos se baseia no método Principal Component Analysis (PCA)
O PCA combina os atributos linearmente, buscando por componentes que
maximizam a variância da distribuição dos dados e que são ortogonais entre si
PROF. MATEUS GRELLERT 25
1o componente principal
(máxima variância)
Fonte: adaptado de https://gerardnico.com/data_mining/pca
2o componente principal
Transformação de Dados – Norm. + PCA
PROF. MATEUS GRELLERT 26
Código em Python usando os métodos StandardScaler() e
PCA()
Transformação de Dados – Norm. + PCA
PROF. MATEUS GRELLERT 27
Dados normalizados
geram uma distribuição
PCA mais separável!
Fluxo de projeto integrando DM e ML:
Desenvolvimento de Aplicações DM/ML
PROF. MATEUS GRELLERT 28
Banco de
Dados
1. Limpeza/
Processamento
3. Transformação
2. Visualização e
Análise
4. Treinamento
Modelo
Preditivo
Data Mining Machine Learning
4 – Treinamento
Consiste em treinar modelos preditivos usando um algoritmo
de Machine Learning
Existem diferentes algoritmos, cada um com suas vantagens
e desvantagens
Primeiro precisamos selecionar os algoritmos de acordo com
nosso desfecho:
Para desfecho categórico: usamos técnicas de classificação
Para desfecho numérico: usamos técnicas de regressão
PROF. MATEUS GRELLERT 29
4 – Treinamento
Desfecho Algoritmo Scikit-learn
Categórico
Regressão Logística sklearn.linear_model.LogisticRegression
Árvores de Decisão sklearn.tree.DecisionTreeClassifier
SVMs de classificação sklearn.svm.SVC
Redes Neurais sklearn.neural_network.MLPClassifier
Numérico
Regressão Linear sklearn.linear_model.LinearRegression
SVMs de regressão sklearn.svm.SVR
Redes Neurais sklearn.neural_network.MLPClassifier
Regressor baseado em SGD sklearn.linear_model.SGDRegressor
PROF. MATEUS GRELLERT 30
4 – Treinamento – Árvores de Decisão
Árvores de Decisão são ótimos modelos iniciais. São eficientes para muitos
casos e fáceis de interpretar
Para qualquer classificador, sempre vamos treiná-lo pelo método fit(X,y)
Para aplicar o modelo a uma entrada X, usamos o método predict(X) que retorna
um y predito.
PROF. MATEUS GRELLERT 31
Saída:
Glucose ≤ 127.5
gini = 0.454
samples = 768
value = [500, 268]
class = ~diabetes
Age ≤ 28.5
gini = 0.313
samples = 485
value = [391, 94]
class = ~diabetes
True
BMI ≤ 30.2
gini = 0.474
samples = 283
value = [109, 174]
class = diabetes
False
BMI ≤ 30.95
gini = 0.155
samples = 271
value = [248, 23]
class = ~diabetes
Glucose ≤ 103.5
gini = 0.443
samples = 214
value = [143, 71]
class = ~diabetes
gini = 0.026
samples = 151
value = [149, 2]
class = ~diabetes
gini = 0.289
samples = 120
value = [99, 21]
class = ~diabetes
gini = 0.32
samples = 90
value = [72, 18]
class = ~diabetes
gini = 0.489
samples = 124
value = [71, 53]
class = ~diabetes
gini = 0.452
samples = 81
value = [53, 28]
class = ~diabetes
Glucose ≤ 157.5
gini = 0.401
samples = 202
value = [56, 146]
class = diabetes
gini = 0.476
samples = 113
value = [44, 69]
class = diabetes
gini = 0.233
samples = 89
value = [12, 77]
class = diabetes
4 – Treinamento – Árvores de Decisão
Árvore obtida com o data set “Pima Indians Diabetes”
PROF. MATEUS GRELLERT 32
Atributo mais importante fica na raiz
da árvore
As decisões ficam sempre nas folhas.
A árvore é percorrida de acordo com
os testes lógicos feitos em cada nó.
Fluxo de projeto integrando DM e ML:
Desenvolvimento de Aplicações DM/ML
PROF. MATEUS GRELLERT 33
Banco de
Dados
1. Limpeza/
Processamento
3. Transformação
2. Visualização e
Análise
4. Treinamento 5. Avaliação
Modelo
Preditivo
Data Mining Machine Learning
5 – Avaliação
A avaliação de desempenho de um modelo pode ser feita de
várias formas
Uma forma bastante comum é simplesmente computar a
taxa de acertos do modelo com relação a uma saída de
referência, chamado de acurácia
!"" =
∑(&'()*== &()!+)
|&|
Outras formas podem ser consideradas quando os erros
possuem pesos diferentes. Exemplo: diagnóstico de câncer
PROF. MATEUS GRELLERT 34
5 – Avaliação
Acurácia da nossa Árvore para o data set “Pima”
PROF. MATEUS GRELLERT 35
5 – Avaliação – Overfitting
100% de acerto? A minha árvore é perfeita!!
Não é bem assim... isso pode ter ocorrido por causa de um
fenômeno conhecido como Overfitting
Overfitting: ocorre quando o modelo funciona muito bem
para os dados de treino, mas perde desempenho quando
outras amostras são testadas
Vamos usar uma técnica mais confiável
PROF. MATEUS GRELLERT 36
5 – Avaliação – Validação Cruzada
Vamos checar o desempenho de nossa árvore usando uma técnica
mais confiável chamada Validação Cruzada (Cross Validation – CV)
A CV separa o conjunto de treino em N subpartições de tamanho
igual. N-1 subpartições são usadas para treino e 1 para teste.
PROF. MATEUS GRELLERT 37Fonte: https://www.kaggle.com/dansbecker/cross-validation
5 – Avaliação – Validação Cruzada
PROF. MATEUS GRELLERT 38
O método para CV é:
cross_val_score(clf, X, y, cv)
clf é o classificador treinado
cv é número de subpartições
Notem que a acurácia da CV é
muito menor! Isso mostra que
precisamos refinar nosso
treinamento
Fluxo de projeto integrando DM e ML:
Desenvolvimento de Aplicações DM/ML
PROF. MATEUS GRELLERT 39
Banco de
Dados
1. Limpeza/
Processamento
3. Transformação
2. Visualização e
Análise
4. Treinamento 5. Avaliação 6. Refinamento
Modelo
Preditivo
Data Mining Machine Learning
6 – Refinamento
Cada algoritmo de classificação possui parâmetros de treino
que alteram o modelo gerado
Dependendo dos parâmetros, vamos ter modelos melhores
ou piores
A etapa de refinamento consiste em explorar diferentes
valores para esses parâmetros, a fim de achar a melhor
combinação
PROF. MATEUS GRELLERT 40
Depois de passar horas treinando modelos, a melhor forma
de não passar por todo esse trabalho de novo é salvar o
objeto scikit-learn num arquivo
Para isso, existe uma biblioteca chamada pickle, pela qual
conseguimos salvar objetos e depois recarregá-los na
memória
pickle.dump( objeto, arquivo_binário ) : para salvar
objeto = pickle.load( arquivo_binário ) : para carregar
Salvando Modelos
PROF. MATEUS GRELLERT 41
Salvando Modelos
Código para salvar um classificador treinado como uma
Rede Neural:
PROF. MATEUS GRELLERT 42
Sumarizando
Tarefa Método Lib
Abrir banco em CSV dataset = read_csv( path, sep = “t” ) Pandas
Detectar dados inválidos dataset.isnull( ).any( ) Pandas
Imputar dados inválidos dataset.fillna( valor ) Pandas
Computar correlação entre
colunas
df_correlacao = dataset.corr() Pandas
Plotar correlação heatmap(df_correlacao) Seaborn
Plotar histograma da coluna
atributo
dataset[atributo].plot.hist( ) Pandas
Agrupado por desfecho dataset.groupby("Outcome")[atributo].plot.hist( ) Pandas
Normalizar dados de X StandardScaler().fit_transform(X) Scikit-learn
PROF. MATEUS GRELLERT 43
Sumarizando
Tarefa Método Lib
PCA de 3 componentes Xt = PCA(n_components=3).fit_transform(X) Scikit-learn
Selecionar K melhores
atributos
best = SelectKBest( k = K ).fit( X, y ) Scikit-learn
Treinar Dec. Tree clf = DecisionTreeClassifier().fit( X, y ) Scikit-learn
Obter resultado de CV com
5 subpartições
scores = cross_val_score(clf, X, y, cv=5) Scikit-learn
Concatenar objetos scikit-
learn
pipe = Pipeline( [ ( 'scaling', StandardScaler() ),
('clf', DecisionTreeClassifier()) ] )
Scikit-learn
Testar combinações de
parâmetros com CV-5
gs_clf = GridSearchCV(pipe, params, cv = 5) Scikit-learn
Salvar modelo final dump(objeto, arquivo_binario) Pandas
Ler o modelo modelo = load(arquivo_binario) Pandas
PROF. MATEUS GRELLERT 44
Obrigado!
Data Mining e
Machine Learning com Python
https://tinyurl.com/tchelinux-grellert

More Related Content

What's hot

Administração, Integração e Operações e Qualidade
Administração, Integração e Operações e QualidadeAdministração, Integração e Operações e Qualidade
Administração, Integração e Operações e QualidadeDanielGomes318483
 
Modelagem e Simulação de Sistemas Produtivos
Modelagem e Simulação de Sistemas ProdutivosModelagem e Simulação de Sistemas Produtivos
Modelagem e Simulação de Sistemas ProdutivosAdeildo Telles
 
Valor Presente Líquido (Parte I)
Valor Presente Líquido (Parte I)Valor Presente Líquido (Parte I)
Valor Presente Líquido (Parte I)Felipe Pontes
 
Estática e dinâmica dos fluídos
Estática e dinâmica dos fluídosEstática e dinâmica dos fluídos
Estática e dinâmica dos fluídosAlline Professora
 
Linígrafo
LinígrafoLinígrafo
Linígrafothiagono
 
Gestão Da Informação
Gestão Da InformaçãoGestão Da Informação
Gestão Da InformaçãoFelipe Goulart
 
Estatística aplicada à gestão empresarial
Estatística aplicada à gestão empresarialEstatística aplicada à gestão empresarial
Estatística aplicada à gestão empresarialAdriano Bruni
 
Exercícios Equação Manométrica
Exercícios  Equação ManométricaExercícios  Equação Manométrica
Exercícios Equação ManométricaSâmara Pinto Souza
 
ESTATÍSTICA DESCRITIVA - AULA 1
ESTATÍSTICA DESCRITIVA - AULA 1ESTATÍSTICA DESCRITIVA - AULA 1
ESTATÍSTICA DESCRITIVA - AULA 1Otávio Sales
 
Empreendedorismo capitulo-2
Empreendedorismo capitulo-2Empreendedorismo capitulo-2
Empreendedorismo capitulo-2anderson3mp
 
Pressão atmosférica
Pressão atmosféricaPressão atmosférica
Pressão atmosféricaSara Silva
 
Administração financeira
Administração financeiraAdministração financeira
Administração financeiraMarcelle França
 
Capítulo 1 transferência de calor
Capítulo 1 transferência de calorCapítulo 1 transferência de calor
Capítulo 1 transferência de calorJorge Almeida
 
Análise dimensional
Análise dimensionalAnálise dimensional
Análise dimensionalRildo Borges
 

What's hot (20)

Temperatura
TemperaturaTemperatura
Temperatura
 
Administração, Integração e Operações e Qualidade
Administração, Integração e Operações e QualidadeAdministração, Integração e Operações e Qualidade
Administração, Integração e Operações e Qualidade
 
Modelagem e Simulação de Sistemas Produtivos
Modelagem e Simulação de Sistemas ProdutivosModelagem e Simulação de Sistemas Produtivos
Modelagem e Simulação de Sistemas Produtivos
 
Valor Presente Líquido (Parte I)
Valor Presente Líquido (Parte I)Valor Presente Líquido (Parte I)
Valor Presente Líquido (Parte I)
 
Estática e dinâmica dos fluídos
Estática e dinâmica dos fluídosEstática e dinâmica dos fluídos
Estática e dinâmica dos fluídos
 
Termodinâmica
TermodinâmicaTermodinâmica
Termodinâmica
 
Linígrafo
LinígrafoLinígrafo
Linígrafo
 
Gestão Da Informação
Gestão Da InformaçãoGestão Da Informação
Gestão Da Informação
 
Estatística aplicada à gestão empresarial
Estatística aplicada à gestão empresarialEstatística aplicada à gestão empresarial
Estatística aplicada à gestão empresarial
 
Exercícios Equação Manométrica
Exercícios  Equação ManométricaExercícios  Equação Manométrica
Exercícios Equação Manométrica
 
ESTATÍSTICA DESCRITIVA - AULA 1
ESTATÍSTICA DESCRITIVA - AULA 1ESTATÍSTICA DESCRITIVA - AULA 1
ESTATÍSTICA DESCRITIVA - AULA 1
 
Torres de separação
Torres de separação Torres de separação
Torres de separação
 
Empreendedorismo capitulo-2
Empreendedorismo capitulo-2Empreendedorismo capitulo-2
Empreendedorismo capitulo-2
 
Extensões do Modelo Bass
Extensões do Modelo BassExtensões do Modelo Bass
Extensões do Modelo Bass
 
18 controle e automação industrial
18   controle e automação industrial18   controle e automação industrial
18 controle e automação industrial
 
Pressão atmosférica
Pressão atmosféricaPressão atmosférica
Pressão atmosférica
 
Administração financeira
Administração financeiraAdministração financeira
Administração financeira
 
Capítulo 1 transferência de calor
Capítulo 1 transferência de calorCapítulo 1 transferência de calor
Capítulo 1 transferência de calor
 
Análise dimensional
Análise dimensionalAnálise dimensional
Análise dimensional
 
Aula8
Aula8Aula8
Aula8
 

Similar to Data Mining e Machine Learning com Python - Mateus Grellert - Tchelinux Pelotas 2018

Guia completo para definição de estatística de modelos e algoritmos de machin...
Guia completo para definição de estatística de modelos e algoritmos de machin...Guia completo para definição de estatística de modelos e algoritmos de machin...
Guia completo para definição de estatística de modelos e algoritmos de machin...Geanderson Lenz
 
Machine Learning e Artificial Intelligence para desenvolvedores .NET
Machine Learning e Artificial Intelligence para desenvolvedores .NETMachine Learning e Artificial Intelligence para desenvolvedores .NET
Machine Learning e Artificial Intelligence para desenvolvedores .NETRenato Haddad
 
BSDDAY 2019 - Data Science e Artificial Intelligence usando Freebsd
BSDDAY 2019 - Data Science e Artificial Intelligence usando FreebsdBSDDAY 2019 - Data Science e Artificial Intelligence usando Freebsd
BSDDAY 2019 - Data Science e Artificial Intelligence usando FreebsdMauro Risonho de Paula Assumpcao
 
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 RFabrício Barth
 
Análise de performance usando as estatísticas do PostgreSQL
Análise de performance usando as estatísticas do PostgreSQLAnálise de performance usando as estatísticas do PostgreSQL
Análise de performance usando as estatísticas do PostgreSQLMatheus de Oliveira
 
Map reduce novas abordagens para o processo de datamining em grandes volumn...
Map reduce   novas abordagens para o processo de datamining em grandes volumn...Map reduce   novas abordagens para o processo de datamining em grandes volumn...
Map reduce novas abordagens para o processo de datamining em grandes volumn...João Gabriel Lima
 
Modelos de dados
Modelos de dadosModelos de dados
Modelos de dadosaeasantos
 
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 Marcos Vinicius Fidelis
 
01 banco de dados-basico
01 banco de dados-basico01 banco de dados-basico
01 banco de dados-basicoAmadeo Santos
 
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big DataDeep Tech Brasil
 
Scaling bayesian network parameter learning with Hadoop
Scaling bayesian network parameter learning with HadoopScaling bayesian network parameter learning with Hadoop
Scaling bayesian network parameter learning with HadoopJoão Gabriel Lima
 
Monitoracao Inteligente na Globo.com
Monitoracao Inteligente na Globo.comMonitoracao Inteligente na Globo.com
Monitoracao Inteligente na Globo.comDenis Vieira
 

Similar to Data Mining e Machine Learning com Python - Mateus Grellert - Tchelinux Pelotas 2018 (20)

Guia completo para definição de estatística de modelos e algoritmos de machin...
Guia completo para definição de estatística de modelos e algoritmos de machin...Guia completo para definição de estatística de modelos e algoritmos de machin...
Guia completo para definição de estatística de modelos e algoritmos de machin...
 
Machine Learning e Artificial Intelligence para desenvolvedores .NET
Machine Learning e Artificial Intelligence para desenvolvedores .NETMachine Learning e Artificial Intelligence para desenvolvedores .NET
Machine Learning e Artificial Intelligence para desenvolvedores .NET
 
BSDDAY 2019 - Data Science e Artificial Intelligence usando Freebsd
BSDDAY 2019 - Data Science e Artificial Intelligence usando FreebsdBSDDAY 2019 - Data Science e Artificial Intelligence usando Freebsd
BSDDAY 2019 - Data Science e Artificial Intelligence usando Freebsd
 
Computacao
ComputacaoComputacao
Computacao
 
Modelos de previsão de Ocorrências
Modelos de previsão de OcorrênciasModelos de previsão de Ocorrências
Modelos de previsão de Ocorrências
 
Desvendando os mistérios do Data Science
Desvendando os mistérios do Data ScienceDesvendando os mistérios do Data Science
Desvendando os mistérios do Data Science
 
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
 
Artc 1249307788 43
Artc 1249307788 43Artc 1249307788 43
Artc 1249307788 43
 
Data mining
Data miningData mining
Data mining
 
Análise de performance usando as estatísticas do PostgreSQL
Análise de performance usando as estatísticas do PostgreSQLAnálise de performance usando as estatísticas do PostgreSQL
Análise de performance usando as estatísticas do PostgreSQL
 
Map reduce novas abordagens para o processo de datamining em grandes volumn...
Map reduce   novas abordagens para o processo de datamining em grandes volumn...Map reduce   novas abordagens para o processo de datamining em grandes volumn...
Map reduce novas abordagens para o processo de datamining em grandes volumn...
 
Modelos de dados
Modelos de dadosModelos de dados
Modelos de dados
 
Analise Algoritmos
Analise AlgoritmosAnalise Algoritmos
Analise Algoritmos
 
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
 
Sistemas de Recomendação
Sistemas de RecomendaçãoSistemas de Recomendação
Sistemas de Recomendação
 
01 banco de dados-basico
01 banco de dados-basico01 banco de dados-basico
01 banco de dados-basico
 
Tsg web mining
Tsg web miningTsg web mining
Tsg web mining
 
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
 
Scaling bayesian network parameter learning with Hadoop
Scaling bayesian network parameter learning with HadoopScaling bayesian network parameter learning with Hadoop
Scaling bayesian network parameter learning with Hadoop
 
Monitoracao Inteligente na Globo.com
Monitoracao Inteligente na Globo.comMonitoracao Inteligente na Globo.com
Monitoracao Inteligente na Globo.com
 

More from Tchelinux

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Tchelinux
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeTchelinux
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Tchelinux
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Tchelinux
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeTchelinux
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...Tchelinux
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Tchelinux
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...Tchelinux
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Tchelinux
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeTchelinux
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeTchelinux
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Tchelinux
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...Tchelinux
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...Tchelinux
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Tchelinux
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Tchelinux
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.Tchelinux
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Tchelinux
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygameTchelinux
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Tchelinux
 

More from Tchelinux (20)

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes.
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygame
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?
 

Data Mining e Machine Learning com Python - Mateus Grellert - Tchelinux Pelotas 2018

  • 1. Data Mining e Machine Learning com Python Prof. Mateus Grellert Universidade Católica de Pelotas
  • 2. Introdução Link para download da palestra e documentos úteis https://tinyurl.com/tchelinux-grellert QR Code PROF. MATEUS GRELLERT 2
  • 3. Introdução Tanto Data Mining quando Machine Learning são ferramentas da Ciência de Dados A Ciência de Dados estuda métodos de extração de conhecimento com base em informações coletadas de diferentes fontes O objetivo é buscar a relação entre valores observáveis (computáveis) e não observáveis (não computáveis) Também usamos os termos atributos e desfecho/classe para valores observáveis e não observáveis respectivamente PROF. MATEUS GRELLERT 3
  • 4. Introdução PROF. MATEUS GRELLERT 4 Bancos de Dados Técnicas de Processamento e Análise Algoritmos de Modelagem Machine Learning Data Mining Bibliotecas e software Ciência de Dados
  • 5. Data Mining x Machine Learning Exemplos de aplicações que utilizam DM/ML Reconhecimento de objetos/ações Análise de sentimento Diagnóstico de doenças Prevenção de desastres naturais Sistemas de recomendação Sistemas autônomos PROF. MATEUS GRELLERT 5
  • 6. Mas afinal de onde vêm os dados? Existem diversas fontes públicas que fornecem dados para análise: UCI Machine Learning Repository Kaggle Youtube-8M APIs como Twitter Streaming ... Fontes de Dados PROF. MATEUS GRELLERT 6
  • 7. Tipos de Dados Os dados são normalmente categorizados conforme a faixa de valores que eles representam, podendo ser: Dados categóricos: são aqueles que assumem um subconjunto finito de valores. Exemplo: a variável “Choveu” somente assume os valores V ou F. Dados numéricos: assumem uma faixa contínua de valores. Exemplo: temperatura pode assumir qualquer valor entre (-273, inf) PROF. MATEUS GRELLERT 7
  • 8. Ferramentas de DM/ML OK, já tenho os dados. Como começo a desenvolver aplicações de DM/ML? Hoje em dia, existem duas linguagens que se destacam para esse propósito: Python e R Algumas Bibliotecas em Python úteis para desenvolvimento de aplicações DM/ML numpy pandas scipy PROF. MATEUS GRELLERT 8 scikit-learn matplotlib nltk seaborn imblearn pickle
  • 9. Fluxo de projeto integrando DM e ML: Desenvolvimento de Aplicações DM/ML PROF. MATEUS GRELLERT 9 Banco de Dados 1. Limpeza/ Processamento 3. Transformação 2. Visualização e Análise 4. Treinamento 5. Avaliação 6. Refinamento Modelo Preditivo Data Mining Machine Learning
  • 10. Acessando um Banco em Python Duas formas comuns de acessar bancos em Python com Pandas PROF. MATEUS GRELLERT 10
  • 11. Exemplo de Banco em CSV PROF. MATEUS GRELLERT 11 Vamos ver como fica na prática usando um banco cujo desfecho é a diabetes em mulheres indígenas (Pima Indians Dataset) Fonte: https://www.kaggle.com/uciml/pima-indians-diabetes-database atributos desfecho
  • 12. Acessando um Banco em Python Quando usamos Pandas, o banco fica armazenado em uma estrutura chamada Dataframe, que é organizada em linhas e colunas identificadas PROF. MATEUS GRELLERT 12
  • 13. Fluxo de projeto integrando DM e ML: Desenvolvimento de Aplicações DM/ML PROF. MATEUS GRELLERT 13 Banco de Dados 1. Limpeza/ Processamento Data Mining Machine Learning
  • 14. A primeira tarefa que realizamos é o tratamento dos dados armazenados no banco Dependendo de como os dados são adquiridos e representados, essa tarefa pode ser até mesmo desconsiderada Existem duas situações que exigem atenção: Dados não estruturados: se estivermos trabalhando com esse tipo de dado, essa etapa vai ser bem mais complexa Dados não preenchidos ou mal preenchidos: normalmente são mais simples de tratar 1 – Limpeza e Pré-processamento PROF. MATEUS GRELLERT 14
  • 15. 1 – Limpeza e Pré-processamento – missing values Podemos simplesmente remover as amostras com dados não preenchidos, mas isso pode eliminar exemplos importantes de treinamento Uma alternativa para isso é usar a imputação de dados A técnica consiste em substituir os valores faltantes em cada coluna por um valor neutro como a média (dados numéricos), a mediana ou a moda (dados categóricos) Alguns estatísticos criticam essa abordagem por gerar um desvio padrão subestimado Melhor imputar ou remover? Depende, vale sempre testar os dois casos PROF. MATEUS GRELLERT 15
  • 16. 1 – Limpeza e Pré-processamento – Imputação PROF. MATEUS GRELLERT 16 detectamos colunas com valores nulos pelo método isnull.any() para imputar dados em colunas com valores nulos, usamos o método fillna(val) val é o valor que vai substituir. Nesse caso usamos a média (calculada pelo método mean() )
  • 17. Fluxo de projeto integrando DM e ML: Desenvolvimento de Aplicações DM/ML PROF. MATEUS GRELLERT 17 Banco de Dados 1. Limpeza/ Processamento 2. Visualização e Análise Modelo Preditivo Data Mining Machine Learning
  • 18. Visualização e Análise de Dados Permite avaliar de forma visual a distribuição dos dados Para dados categóricos, usamos o histograma de valores, que representa quantas vezes cada valor ocorreu Para dados numéricos, podemos usar histogramas, ou a função densidade de probabilidade (PDF) ou semelhante É interessante agrupar os histogramas/PDFs de acordo com o valor do desfecho (vamos ver o exemplo pra ficar claro) PROF. MATEUS GRELLERT 18
  • 19. Visualização e Análise de Dados A visualização vai permitir uma análise inicial de que dados são úteis para prever o nosso desfecho Dados úteis são aqueles que nos permitem separar os grupos de desfecho de forma homogênea (idealmente linear) PROF. MATEUS GRELLERT 19 Fonte: http://www.cs.uccs.edu/~jkalita/work/cs587/2014/03SimpleNets.pdf
  • 20. Visualização e Análise de Dados 20 Código para plotar histogramas usando o método plot.hist() do pandas agrupados pelo desfecho de diabetes (coluna “Outcome”) Usamos groupby(“Outcome”) para agrupar os dados primeiro
  • 21. Visualização e Análise de Dados PROF. MATEUS GRELLERT 21 - O nível de glicose pode ser útil para separar os desfechoss de diabetes. - Na região (50, 100) existe maior ocorrência de casos negativos. - Na região (150, 200) de casos positivos
  • 22. Fluxo de projeto integrando DM e ML: Desenvolvimento de Aplicações DM/ML PROF. MATEUS GRELLERT 22 Banco de Dados 1. Limpeza/ Processamento 3. Transformação 2. Visualização e Análise Modelo Preditivo Data Mining Machine Learning
  • 23. Transformação de Dados Consiste em tratar os dados para: aumentar a qualidade da informação de entrada reduzir o número de atributos para gerar modelos mais simples (Curse of Dimensionality) normalizar os valores para a mesma escala (necessário para algumas técnicas) PROF. MATEUS GRELLERT 23
  • 24. Transformação de Dados – Normalização Normalizar os atributos é necessário para que algumas técnicas funcionem corretamente (PCA e SVMs são exemplos clássicos) Para isso, mapeamos os valores para uma nova faixa de representação Standard Scaling: para cada atributo, subtraímos a média e dividimos pela variância. Isso faz com que todos os atributos tenham média zero e variância unitária. PROF. MATEUS GRELLERT 24
  • 25. Transformação de Dados – PCA Um transformação comum para aumentar a qualidade e reduzir o conjunto de atributos se baseia no método Principal Component Analysis (PCA) O PCA combina os atributos linearmente, buscando por componentes que maximizam a variância da distribuição dos dados e que são ortogonais entre si PROF. MATEUS GRELLERT 25 1o componente principal (máxima variância) Fonte: adaptado de https://gerardnico.com/data_mining/pca 2o componente principal
  • 26. Transformação de Dados – Norm. + PCA PROF. MATEUS GRELLERT 26 Código em Python usando os métodos StandardScaler() e PCA()
  • 27. Transformação de Dados – Norm. + PCA PROF. MATEUS GRELLERT 27 Dados normalizados geram uma distribuição PCA mais separável!
  • 28. Fluxo de projeto integrando DM e ML: Desenvolvimento de Aplicações DM/ML PROF. MATEUS GRELLERT 28 Banco de Dados 1. Limpeza/ Processamento 3. Transformação 2. Visualização e Análise 4. Treinamento Modelo Preditivo Data Mining Machine Learning
  • 29. 4 – Treinamento Consiste em treinar modelos preditivos usando um algoritmo de Machine Learning Existem diferentes algoritmos, cada um com suas vantagens e desvantagens Primeiro precisamos selecionar os algoritmos de acordo com nosso desfecho: Para desfecho categórico: usamos técnicas de classificação Para desfecho numérico: usamos técnicas de regressão PROF. MATEUS GRELLERT 29
  • 30. 4 – Treinamento Desfecho Algoritmo Scikit-learn Categórico Regressão Logística sklearn.linear_model.LogisticRegression Árvores de Decisão sklearn.tree.DecisionTreeClassifier SVMs de classificação sklearn.svm.SVC Redes Neurais sklearn.neural_network.MLPClassifier Numérico Regressão Linear sklearn.linear_model.LinearRegression SVMs de regressão sklearn.svm.SVR Redes Neurais sklearn.neural_network.MLPClassifier Regressor baseado em SGD sklearn.linear_model.SGDRegressor PROF. MATEUS GRELLERT 30
  • 31. 4 – Treinamento – Árvores de Decisão Árvores de Decisão são ótimos modelos iniciais. São eficientes para muitos casos e fáceis de interpretar Para qualquer classificador, sempre vamos treiná-lo pelo método fit(X,y) Para aplicar o modelo a uma entrada X, usamos o método predict(X) que retorna um y predito. PROF. MATEUS GRELLERT 31 Saída:
  • 32. Glucose ≤ 127.5 gini = 0.454 samples = 768 value = [500, 268] class = ~diabetes Age ≤ 28.5 gini = 0.313 samples = 485 value = [391, 94] class = ~diabetes True BMI ≤ 30.2 gini = 0.474 samples = 283 value = [109, 174] class = diabetes False BMI ≤ 30.95 gini = 0.155 samples = 271 value = [248, 23] class = ~diabetes Glucose ≤ 103.5 gini = 0.443 samples = 214 value = [143, 71] class = ~diabetes gini = 0.026 samples = 151 value = [149, 2] class = ~diabetes gini = 0.289 samples = 120 value = [99, 21] class = ~diabetes gini = 0.32 samples = 90 value = [72, 18] class = ~diabetes gini = 0.489 samples = 124 value = [71, 53] class = ~diabetes gini = 0.452 samples = 81 value = [53, 28] class = ~diabetes Glucose ≤ 157.5 gini = 0.401 samples = 202 value = [56, 146] class = diabetes gini = 0.476 samples = 113 value = [44, 69] class = diabetes gini = 0.233 samples = 89 value = [12, 77] class = diabetes 4 – Treinamento – Árvores de Decisão Árvore obtida com o data set “Pima Indians Diabetes” PROF. MATEUS GRELLERT 32 Atributo mais importante fica na raiz da árvore As decisões ficam sempre nas folhas. A árvore é percorrida de acordo com os testes lógicos feitos em cada nó.
  • 33. Fluxo de projeto integrando DM e ML: Desenvolvimento de Aplicações DM/ML PROF. MATEUS GRELLERT 33 Banco de Dados 1. Limpeza/ Processamento 3. Transformação 2. Visualização e Análise 4. Treinamento 5. Avaliação Modelo Preditivo Data Mining Machine Learning
  • 34. 5 – Avaliação A avaliação de desempenho de um modelo pode ser feita de várias formas Uma forma bastante comum é simplesmente computar a taxa de acertos do modelo com relação a uma saída de referência, chamado de acurácia !"" = ∑(&'()*== &()!+) |&| Outras formas podem ser consideradas quando os erros possuem pesos diferentes. Exemplo: diagnóstico de câncer PROF. MATEUS GRELLERT 34
  • 35. 5 – Avaliação Acurácia da nossa Árvore para o data set “Pima” PROF. MATEUS GRELLERT 35
  • 36. 5 – Avaliação – Overfitting 100% de acerto? A minha árvore é perfeita!! Não é bem assim... isso pode ter ocorrido por causa de um fenômeno conhecido como Overfitting Overfitting: ocorre quando o modelo funciona muito bem para os dados de treino, mas perde desempenho quando outras amostras são testadas Vamos usar uma técnica mais confiável PROF. MATEUS GRELLERT 36
  • 37. 5 – Avaliação – Validação Cruzada Vamos checar o desempenho de nossa árvore usando uma técnica mais confiável chamada Validação Cruzada (Cross Validation – CV) A CV separa o conjunto de treino em N subpartições de tamanho igual. N-1 subpartições são usadas para treino e 1 para teste. PROF. MATEUS GRELLERT 37Fonte: https://www.kaggle.com/dansbecker/cross-validation
  • 38. 5 – Avaliação – Validação Cruzada PROF. MATEUS GRELLERT 38 O método para CV é: cross_val_score(clf, X, y, cv) clf é o classificador treinado cv é número de subpartições Notem que a acurácia da CV é muito menor! Isso mostra que precisamos refinar nosso treinamento
  • 39. Fluxo de projeto integrando DM e ML: Desenvolvimento de Aplicações DM/ML PROF. MATEUS GRELLERT 39 Banco de Dados 1. Limpeza/ Processamento 3. Transformação 2. Visualização e Análise 4. Treinamento 5. Avaliação 6. Refinamento Modelo Preditivo Data Mining Machine Learning
  • 40. 6 – Refinamento Cada algoritmo de classificação possui parâmetros de treino que alteram o modelo gerado Dependendo dos parâmetros, vamos ter modelos melhores ou piores A etapa de refinamento consiste em explorar diferentes valores para esses parâmetros, a fim de achar a melhor combinação PROF. MATEUS GRELLERT 40
  • 41. Depois de passar horas treinando modelos, a melhor forma de não passar por todo esse trabalho de novo é salvar o objeto scikit-learn num arquivo Para isso, existe uma biblioteca chamada pickle, pela qual conseguimos salvar objetos e depois recarregá-los na memória pickle.dump( objeto, arquivo_binário ) : para salvar objeto = pickle.load( arquivo_binário ) : para carregar Salvando Modelos PROF. MATEUS GRELLERT 41
  • 42. Salvando Modelos Código para salvar um classificador treinado como uma Rede Neural: PROF. MATEUS GRELLERT 42
  • 43. Sumarizando Tarefa Método Lib Abrir banco em CSV dataset = read_csv( path, sep = “t” ) Pandas Detectar dados inválidos dataset.isnull( ).any( ) Pandas Imputar dados inválidos dataset.fillna( valor ) Pandas Computar correlação entre colunas df_correlacao = dataset.corr() Pandas Plotar correlação heatmap(df_correlacao) Seaborn Plotar histograma da coluna atributo dataset[atributo].plot.hist( ) Pandas Agrupado por desfecho dataset.groupby("Outcome")[atributo].plot.hist( ) Pandas Normalizar dados de X StandardScaler().fit_transform(X) Scikit-learn PROF. MATEUS GRELLERT 43
  • 44. Sumarizando Tarefa Método Lib PCA de 3 componentes Xt = PCA(n_components=3).fit_transform(X) Scikit-learn Selecionar K melhores atributos best = SelectKBest( k = K ).fit( X, y ) Scikit-learn Treinar Dec. Tree clf = DecisionTreeClassifier().fit( X, y ) Scikit-learn Obter resultado de CV com 5 subpartições scores = cross_val_score(clf, X, y, cv=5) Scikit-learn Concatenar objetos scikit- learn pipe = Pipeline( [ ( 'scaling', StandardScaler() ), ('clf', DecisionTreeClassifier()) ] ) Scikit-learn Testar combinações de parâmetros com CV-5 gs_clf = GridSearchCV(pipe, params, cv = 5) Scikit-learn Salvar modelo final dump(objeto, arquivo_binario) Pandas Ler o modelo modelo = load(arquivo_binario) Pandas PROF. MATEUS GRELLERT 44
  • 45. Obrigado! Data Mining e Machine Learning com Python https://tinyurl.com/tchelinux-grellert