SlideShare uma empresa Scribd logo
1 de 29
Machine Learning usando scikits.learn Marcelo Gomes Pereira de Lacerda Engenharia da Computação Escola Politécnica de Pernambuco Universidade de Pernambuco PUG-PE - Julho de 2011
Roteiro Elementos Básicos Aprendizagem Supervisionada Seleção de Modelo Aprendizagem Não-Supervisionada Conclusão PUG-PE - Julho de 2011
Elementos Básicos Base de dados (features = Array 2D, labelsArray 1D) Estimator Evaluator PUG-PE - Julho de 2011
Aprendizagem Supervisionada Encontrar relação entre dois datasets: X e Y A aprendizagem ocorre sob “orientações” do humano, o qual diz se uma resposta dada pelo modelo está correta ou não e qual a resposta certa. X => Array 2D. Ex.: [[1,2,3],[3,4,5],[5,6,7]] Y => Array 1D (na maioria dos casos). Ex.: [0,0,1] fit(X,Y) predict(p) PUG-PE - Julho de 2011
Aprendizagem Supervisionada Classificação PUG-PE - Julho de 2011
Aprendizagem Supervisionada Regressão PUG-PE - Julho de 2011
K-NearestNeighborClassifier (KNN) PUG-PE - Julho de 2011
K-NearestNeighborClassifier (KNN) PUG-PE - Julho de 2011 import numpy as np from scikits.learn import datasets iris = datasets.load_iris() iris_X = iris.data iris_y = iris.target np.random.seed(0) indices = np.random.permutation(len(iris_X)) iris_X_train = iris_X[indices[:-10]] iris_y_train = iris_y[indices[:-10]] iris_X_test  = iris_X[indices[-10:]] iris_y_test  = iris_y[indices[-10:]]
K-NearestNeighborClassifier (KNN) PUG-PE - Julho de 2011 fromscikits.learn.neighborsimportNeighborsClassifier knn = NeighborsClassifier() printknn.fit(iris_X_train, iris_y_train) NeighborsClassifier(n_neighbors=5, window_size=1, algorithm=auto) printknn.predict(iris_X_test) array([1, 2, 1, 0, 0, 0, 2, 1, 2, 0])
Regressão Linear y = xb + e y = variável alvo x = dado b = coeficiente e = ruído da observação PUG-PE - Julho de 2011
Regressão Linear PUG-PE - Julho de 2011 fromscikits.learnimportlinear_model diabetes = datasets.load_diabetes() diabetes_X_train = diabetes.data[:-20] diabetes_X_test  = diabetes.data[-20:] diabetes_y_train = diabetes.target[:-20] diabetes_y_test  = diabetes.target[-20:] regr = linear_model.LinearRegression() regr.fit(diabetes_X_train, diabetes_y_train) regr.predict(diabetes_X_test) [1,2.6,-1.67,3,...,2.45]
Regressão para Classificação Regressão Linear não é recomendada Dá muito peso a elementos distantes da fronteira de decisão! Solução: Regressão Logística (Sigmóide) PUG-PE - Julho de 2011
Regressão para Classificação PUG-PE - Julho de 2011 logistic = linear_model.LogisticRegression(C=1e5) logistic.fit(iris_X_train, iris_y_train) LogisticRegression(C=100000.0, intercept_scaling=1, dual=False, fit_intercept=True, penalty='l2', tol=0.0001)
SupportVector Machines (SVM) Achar a combinação de amostras de treinamento de forma que maximize a margem entre as classes PUG-PE - Julho de 2011
SupportVector Machines (SVM) SVC = SupportVectorClassification SVR = SupportVectorRegression PUG-PE - Julho de 2011 fromscikits.learnimportsvm svc = svm.SVC(kernel='linear') svc.fit(iris_X_train, iris_y_train)
SupportVector Machines (SVM) Outros Kernels svc = svm.SVC(kernel='linear') svc = svm.SVC(kernel='poly',degree=3) svc = svm.SVC(kernel='rbf') PUG-PE - Julho de 2011
Seleção de Modelo PUG-PE - Julho de 2011
Seleção de Modelo  Medição da qualidade de predição do modelo através do método score Dica: Implementar K-FoldCrossValidation para obter resultados mais precisos. PUG-PE - Julho de 2011 >>> fromscikits.learnimportdatasets, svm >>> digits = datasets.load_digits() >>> X_digits = digits.data >>> y_digits = digits.target >>> svc = svm.SVC() >>> svc.fit(X_digits[:-100], y_digits[:-100]).score(X_digits[-100:], y_digits[-100:]) 0.97999999999999998
Seleção de Modelo PUG-PE - Julho de 2011 >>> importnumpy as np >>> X_folds = np.array_split(X_digits, 10) >>> y_folds = np.array_split(y_digits, 10) >>> scores = list() >>> for k in range(10): ...     X_train = list(X_folds) ...     X_test  = X_train.pop(k) ...     X_train = np.concatenate(X_train) ...     y_train = list(y_folds) ...     y_test  = y_train.pop(k) ...     y_train = np.concatenate(y_train) ...     scores.append(svc.fit(X_train, y_train).score(X_test, y_test)) >>> printscores [0.9555555555555556, 1.0, 0.93333333333333335, 0.99444444444444446, 0.98333333333333328, 0.98888888888888893, 0.99444444444444446, 0.994413407821229, 0.97206703910614523, 0.96089385474860334]
Seleção de Modelo O scikits.learn dá uma mãozinha! Ou... Melhor ainda! PUG-PE - Julho de 2011 >>> kfold = cross_val.KFold(len(X_digits), k=3) >>> [svc.fit(X_digits[train], y_digits[train]).score(X_digits[test], y_digits[test]) ...          for train, test in kfold] [0.95530726256983245, 1.0, 0.93296089385474856, 0.98324022346368711, 0.98882681564245811, 0.98882681564245811, 0.994413407821229, 0.994413407821229, 0.97206703910614523, 0.95161290322580649] >>> cross_val.cross_val_score(svc, X_digits, y_digits, cv=kfold, n_jobs=-1) array([ 0.95530726, 1., 0.93296089, 0.98324022, 0.98882682,         0.98882682,  0.99441341,  0.99441341,  0.97206704, 0.9516129 ])
Seleção de Modelo Cross-ValidationGenerators KFold(n, k) StratifiedKFold(y, k) LeaveOneOut(n) LeaveOneLabelOut(labels) PUG-PE - Julho de 2011
Aprendizagem Não-Supervisionada PUG-PE - Julho de 2011
K-Means (Clusterização “Plana”) PUG-PE - Julho de 2011 >>> fromscikits.learnimport cluster, datasets >>> iris = datasets.load_iris() >>> X_iris = iris.data >>> y_iris = iris.target >>> k_means = cluster.KMeans(k=3) >>> k_means.fit(X_iris)  KMeans(verbose=0, k=3, max_iter=300, init='k-means++',... >>> printk_means.labels_[::10] [1 1 1 1 1 0 0 0 0 0 2 2 2 2 2] >>> printy_iris[::10] [0 0 0 0 0 1 1 1 1 1 2 2 2 2 2]
K-Means (Clusterização “Plana”) Desempenho do K-Means depende da inicialização dos clusters scikits.learn cuida disso por debaixo dos panos! PUG-PE - Julho de 2011
PCA (Principal Componente Analysis) PUG-PE - Julho de 2011
PCA (Principal Componente Analysis) PUG-PE - Julho de 2011 >>> x1 = np.random.normal(size=100) >>> x2 = np.random.normal(size=100) >>> x3 = x1 + x2 >>> X = np.c_[x1, x2, x3] >>> fromscikits.learnimportdecomposition >>> pca = decomposition.PCA() >>> pca.fit(X) >>> printpca.explained_variance_ [  2.77227227e+00,   1.14228495e+00,   2.66364138e-32] >>> X_reduced = pca.fit_transform(X, n_components=2) >>> X_reduced.shape (100, 2)
Conclusão PUG-PE - Julho de 2011     =
Fonte http://gaelvaroquaux.github.com/scikit-learn-tutorial/ PUG-PE - Julho de 2011
OBRIGADO! PUG-PE - Julho de 2011

Mais conteúdo relacionado

Destaque

Python Debugger - PUG-PE
Python Debugger - PUG-PE Python Debugger - PUG-PE
Python Debugger - PUG-PE Arthur Alvim
 
Apresentando o I Toró de Palestras do PUG-PE
Apresentando o I Toró de Palestras do PUG-PEApresentando o I Toró de Palestras do PUG-PE
Apresentando o I Toró de Palestras do PUG-PEMarcel Caraciolo
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Developmentpugpe
 
Rain Toolbox - Previsão de Chuvas
Rain Toolbox -  Previsão de ChuvasRain Toolbox -  Previsão de Chuvas
Rain Toolbox - Previsão de Chuvaspugpe
 
Criando comunidades bem sucedidas
Criando comunidades bem sucedidasCriando comunidades bem sucedidas
Criando comunidades bem sucedidaspugpe
 
Migrando do App Engine para o Heroku
Migrando do App Engine para o HerokuMigrando do App Engine para o Heroku
Migrando do App Engine para o HerokuFilipe Ximenes
 
Blender Com Python
Blender Com PythonBlender Com Python
Blender Com Pythonpugpe
 
Pyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para WebPyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para WebNielson Santana
 
Qml + Python
Qml + PythonQml + Python
Qml + Pythonpugpe
 
Palestra sobre Inteligência Coletiva
Palestra sobre Inteligência ColetivaPalestra sobre Inteligência Coletiva
Palestra sobre Inteligência Coletivapugpe
 
Computação Científica com Python
Computação Científica com PythonComputação Científica com Python
Computação Científica com PythonHugo Serrano
 
Python na formacao_de_jovens
Python na formacao_de_jovensPython na formacao_de_jovens
Python na formacao_de_jovensMarcos Egito
 
NoSQL com Cassandra e Python
NoSQL com Cassandra e PythonNoSQL com Cassandra e Python
NoSQL com Cassandra e Pythonpugpe
 
Clustering com numpy e cython
Clustering com numpy e cythonClustering com numpy e cython
Clustering com numpy e cythonAnderson Dantas
 
Peça seu código em casamento: Votos, Tópicos e TDD
Peça seu código em casamento: Votos, Tópicos e TDDPeça seu código em casamento: Votos, Tópicos e TDD
Peça seu código em casamento: Votos, Tópicos e TDDRafael Carício
 
Desenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app engineDesenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app enginepugpe
 
Construindo uma startup em 54 horas com Python
Construindo uma startup em 54 horas com PythonConstruindo uma startup em 54 horas com Python
Construindo uma startup em 54 horas com Pythonpugpe
 

Destaque (20)

Python Debugger - PUG-PE
Python Debugger - PUG-PE Python Debugger - PUG-PE
Python Debugger - PUG-PE
 
Apresentando o I Toró de Palestras do PUG-PE
Apresentando o I Toró de Palestras do PUG-PEApresentando o I Toró de Palestras do PUG-PE
Apresentando o I Toró de Palestras do PUG-PE
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Development
 
Rain Toolbox - Previsão de Chuvas
Rain Toolbox -  Previsão de ChuvasRain Toolbox -  Previsão de Chuvas
Rain Toolbox - Previsão de Chuvas
 
Criando comunidades bem sucedidas
Criando comunidades bem sucedidasCriando comunidades bem sucedidas
Criando comunidades bem sucedidas
 
Migrando do App Engine para o Heroku
Migrando do App Engine para o HerokuMigrando do App Engine para o Heroku
Migrando do App Engine para o Heroku
 
Blender Com Python
Blender Com PythonBlender Com Python
Blender Com Python
 
Pyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para WebPyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para Web
 
Qml + Python
Qml + PythonQml + Python
Qml + Python
 
Arduino e python
Arduino e pythonArduino e python
Arduino e python
 
Pep 8
Pep 8Pep 8
Pep 8
 
Palestra sobre Inteligência Coletiva
Palestra sobre Inteligência ColetivaPalestra sobre Inteligência Coletiva
Palestra sobre Inteligência Coletiva
 
Computação Científica com Python
Computação Científica com PythonComputação Científica com Python
Computação Científica com Python
 
Python na formacao_de_jovens
Python na formacao_de_jovensPython na formacao_de_jovens
Python na formacao_de_jovens
 
NoSQL com Cassandra e Python
NoSQL com Cassandra e PythonNoSQL com Cassandra e Python
NoSQL com Cassandra e Python
 
Clustering com numpy e cython
Clustering com numpy e cythonClustering com numpy e cython
Clustering com numpy e cython
 
Peça seu código em casamento: Votos, Tópicos e TDD
Peça seu código em casamento: Votos, Tópicos e TDDPeça seu código em casamento: Votos, Tópicos e TDD
Peça seu código em casamento: Votos, Tópicos e TDD
 
Pug
PugPug
Pug
 
Desenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app engineDesenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app engine
 
Construindo uma startup em 54 horas com Python
Construindo uma startup em 54 horas com PythonConstruindo uma startup em 54 horas com Python
Construindo uma startup em 54 horas com Python
 

Semelhante a Machine learning usando scikits

Fuzzy C-Means na Seleção de Currículos - Projeto de Aplicação
Fuzzy C-Means na Seleção de Currículos - Projeto de AplicaçãoFuzzy C-Means na Seleção de Currículos - Projeto de Aplicação
Fuzzy C-Means na Seleção de Currículos - Projeto de AplicaçãoHenrique Rocha
 
Generalização, validação e comparação de resultados
Generalização, validação e comparação de resultadosGeneralização, validação e comparação de resultados
Generalização, validação e comparação de resultadosLuís Nunes
 
Aprendizagem Supervisionada II
Aprendizagem Supervisionada IIAprendizagem Supervisionada II
Aprendizagem Supervisionada IILuís Nunes
 
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áticatdc-globalcode
 
[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áticaEiti Kimura
 
Análise de Viga através de NX Nastran e Matlab (Galerkin)
Análise de Viga através de NX Nastran e Matlab (Galerkin)Análise de Viga através de NX Nastran e Matlab (Galerkin)
Análise de Viga através de NX Nastran e Matlab (Galerkin)Ivan Soares
 
aula-2-estrutura-e-politica-salarial.ppt
aula-2-estrutura-e-politica-salarial.pptaula-2-estrutura-e-politica-salarial.ppt
aula-2-estrutura-e-politica-salarial.pptNatanael Ferreira
 
Analise de riscos_nr10
Analise de riscos_nr10Analise de riscos_nr10
Analise de riscos_nr10Tatiane Lopes
 
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 Javaaceiro
 
Análise exploratória e modelação com r parte 3
Análise exploratória e modelação com r  parte 3Análise exploratória e modelação com r  parte 3
Análise exploratória e modelação com r parte 3Lucas Castro
 
Aprendizagem Supervisionada I
Aprendizagem Supervisionada IAprendizagem Supervisionada I
Aprendizagem Supervisionada ILuís Nunes
 
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana  6: Matrizes multidimensionais, estratégias de resolução de problemasSemana  6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemasManuel Menezes de Sequeira
 
Bootstrap Evaluation in R - Source Code
Bootstrap Evaluation in R -  Source CodeBootstrap Evaluation in R -  Source Code
Bootstrap Evaluation in R - Source CodeMichel Alves
 

Semelhante a Machine learning usando scikits (20)

Fuzzy C-Means na Seleção de Currículos - Projeto de Aplicação
Fuzzy C-Means na Seleção de Currículos - Projeto de AplicaçãoFuzzy C-Means na Seleção de Currículos - Projeto de Aplicação
Fuzzy C-Means na Seleção de Currículos - Projeto de Aplicação
 
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
 
Generalização, validação e comparação de resultados
Generalização, validação e comparação de resultadosGeneralização, validação e comparação de resultados
Generalização, validação e comparação de resultados
 
Aprendizagem Supervisionada II
Aprendizagem Supervisionada IIAprendizagem Supervisionada II
Aprendizagem Supervisionada II
 
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
 
Computacao cientifica
Computacao cientificaComputacao cientifica
Computacao cientifica
 
[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
 
Análise de Viga através de NX Nastran e Matlab (Galerkin)
Análise de Viga através de NX Nastran e Matlab (Galerkin)Análise de Viga através de NX Nastran e Matlab (Galerkin)
Análise de Viga através de NX Nastran e Matlab (Galerkin)
 
Diagrama de Classe
Diagrama de ClasseDiagrama de Classe
Diagrama de Classe
 
0001
00010001
0001
 
000003 complexidade
000003 complexidade000003 complexidade
000003 complexidade
 
MRO predict
MRO predictMRO predict
MRO predict
 
aula-2-estrutura-e-politica-salarial.ppt
aula-2-estrutura-e-politica-salarial.pptaula-2-estrutura-e-politica-salarial.ppt
aula-2-estrutura-e-politica-salarial.ppt
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
Analise de riscos_nr10
Analise de riscos_nr10Analise de riscos_nr10
Analise de riscos_nr10
 
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
 
Análise exploratória e modelação com r parte 3
Análise exploratória e modelação com r  parte 3Análise exploratória e modelação com r  parte 3
Análise exploratória e modelação com r parte 3
 
Aprendizagem Supervisionada I
Aprendizagem Supervisionada IAprendizagem Supervisionada I
Aprendizagem Supervisionada I
 
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana  6: Matrizes multidimensionais, estratégias de resolução de problemasSemana  6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
 
Bootstrap Evaluation in R - Source Code
Bootstrap Evaluation in R -  Source CodeBootstrap Evaluation in R -  Source Code
Bootstrap Evaluation in R - Source Code
 

Machine learning usando scikits

  • 1. Machine Learning usando scikits.learn Marcelo Gomes Pereira de Lacerda Engenharia da Computação Escola Politécnica de Pernambuco Universidade de Pernambuco PUG-PE - Julho de 2011
  • 2. Roteiro Elementos Básicos Aprendizagem Supervisionada Seleção de Modelo Aprendizagem Não-Supervisionada Conclusão PUG-PE - Julho de 2011
  • 3. Elementos Básicos Base de dados (features = Array 2D, labelsArray 1D) Estimator Evaluator PUG-PE - Julho de 2011
  • 4. Aprendizagem Supervisionada Encontrar relação entre dois datasets: X e Y A aprendizagem ocorre sob “orientações” do humano, o qual diz se uma resposta dada pelo modelo está correta ou não e qual a resposta certa. X => Array 2D. Ex.: [[1,2,3],[3,4,5],[5,6,7]] Y => Array 1D (na maioria dos casos). Ex.: [0,0,1] fit(X,Y) predict(p) PUG-PE - Julho de 2011
  • 6. Aprendizagem Supervisionada Regressão PUG-PE - Julho de 2011
  • 8. K-NearestNeighborClassifier (KNN) PUG-PE - Julho de 2011 import numpy as np from scikits.learn import datasets iris = datasets.load_iris() iris_X = iris.data iris_y = iris.target np.random.seed(0) indices = np.random.permutation(len(iris_X)) iris_X_train = iris_X[indices[:-10]] iris_y_train = iris_y[indices[:-10]] iris_X_test = iris_X[indices[-10:]] iris_y_test = iris_y[indices[-10:]]
  • 9. K-NearestNeighborClassifier (KNN) PUG-PE - Julho de 2011 fromscikits.learn.neighborsimportNeighborsClassifier knn = NeighborsClassifier() printknn.fit(iris_X_train, iris_y_train) NeighborsClassifier(n_neighbors=5, window_size=1, algorithm=auto) printknn.predict(iris_X_test) array([1, 2, 1, 0, 0, 0, 2, 1, 2, 0])
  • 10. Regressão Linear y = xb + e y = variável alvo x = dado b = coeficiente e = ruído da observação PUG-PE - Julho de 2011
  • 11. Regressão Linear PUG-PE - Julho de 2011 fromscikits.learnimportlinear_model diabetes = datasets.load_diabetes() diabetes_X_train = diabetes.data[:-20] diabetes_X_test = diabetes.data[-20:] diabetes_y_train = diabetes.target[:-20] diabetes_y_test = diabetes.target[-20:] regr = linear_model.LinearRegression() regr.fit(diabetes_X_train, diabetes_y_train) regr.predict(diabetes_X_test) [1,2.6,-1.67,3,...,2.45]
  • 12. Regressão para Classificação Regressão Linear não é recomendada Dá muito peso a elementos distantes da fronteira de decisão! Solução: Regressão Logística (Sigmóide) PUG-PE - Julho de 2011
  • 13. Regressão para Classificação PUG-PE - Julho de 2011 logistic = linear_model.LogisticRegression(C=1e5) logistic.fit(iris_X_train, iris_y_train) LogisticRegression(C=100000.0, intercept_scaling=1, dual=False, fit_intercept=True, penalty='l2', tol=0.0001)
  • 14. SupportVector Machines (SVM) Achar a combinação de amostras de treinamento de forma que maximize a margem entre as classes PUG-PE - Julho de 2011
  • 15. SupportVector Machines (SVM) SVC = SupportVectorClassification SVR = SupportVectorRegression PUG-PE - Julho de 2011 fromscikits.learnimportsvm svc = svm.SVC(kernel='linear') svc.fit(iris_X_train, iris_y_train)
  • 16. SupportVector Machines (SVM) Outros Kernels svc = svm.SVC(kernel='linear') svc = svm.SVC(kernel='poly',degree=3) svc = svm.SVC(kernel='rbf') PUG-PE - Julho de 2011
  • 17. Seleção de Modelo PUG-PE - Julho de 2011
  • 18. Seleção de Modelo Medição da qualidade de predição do modelo através do método score Dica: Implementar K-FoldCrossValidation para obter resultados mais precisos. PUG-PE - Julho de 2011 >>> fromscikits.learnimportdatasets, svm >>> digits = datasets.load_digits() >>> X_digits = digits.data >>> y_digits = digits.target >>> svc = svm.SVC() >>> svc.fit(X_digits[:-100], y_digits[:-100]).score(X_digits[-100:], y_digits[-100:]) 0.97999999999999998
  • 19. Seleção de Modelo PUG-PE - Julho de 2011 >>> importnumpy as np >>> X_folds = np.array_split(X_digits, 10) >>> y_folds = np.array_split(y_digits, 10) >>> scores = list() >>> for k in range(10): ... X_train = list(X_folds) ... X_test = X_train.pop(k) ... X_train = np.concatenate(X_train) ... y_train = list(y_folds) ... y_test = y_train.pop(k) ... y_train = np.concatenate(y_train) ... scores.append(svc.fit(X_train, y_train).score(X_test, y_test)) >>> printscores [0.9555555555555556, 1.0, 0.93333333333333335, 0.99444444444444446, 0.98333333333333328, 0.98888888888888893, 0.99444444444444446, 0.994413407821229, 0.97206703910614523, 0.96089385474860334]
  • 20. Seleção de Modelo O scikits.learn dá uma mãozinha! Ou... Melhor ainda! PUG-PE - Julho de 2011 >>> kfold = cross_val.KFold(len(X_digits), k=3) >>> [svc.fit(X_digits[train], y_digits[train]).score(X_digits[test], y_digits[test]) ... for train, test in kfold] [0.95530726256983245, 1.0, 0.93296089385474856, 0.98324022346368711, 0.98882681564245811, 0.98882681564245811, 0.994413407821229, 0.994413407821229, 0.97206703910614523, 0.95161290322580649] >>> cross_val.cross_val_score(svc, X_digits, y_digits, cv=kfold, n_jobs=-1) array([ 0.95530726, 1., 0.93296089, 0.98324022, 0.98882682, 0.98882682, 0.99441341, 0.99441341, 0.97206704, 0.9516129 ])
  • 21. Seleção de Modelo Cross-ValidationGenerators KFold(n, k) StratifiedKFold(y, k) LeaveOneOut(n) LeaveOneLabelOut(labels) PUG-PE - Julho de 2011
  • 23. K-Means (Clusterização “Plana”) PUG-PE - Julho de 2011 >>> fromscikits.learnimport cluster, datasets >>> iris = datasets.load_iris() >>> X_iris = iris.data >>> y_iris = iris.target >>> k_means = cluster.KMeans(k=3) >>> k_means.fit(X_iris) KMeans(verbose=0, k=3, max_iter=300, init='k-means++',... >>> printk_means.labels_[::10] [1 1 1 1 1 0 0 0 0 0 2 2 2 2 2] >>> printy_iris[::10] [0 0 0 0 0 1 1 1 1 1 2 2 2 2 2]
  • 24. K-Means (Clusterização “Plana”) Desempenho do K-Means depende da inicialização dos clusters scikits.learn cuida disso por debaixo dos panos! PUG-PE - Julho de 2011
  • 25. PCA (Principal Componente Analysis) PUG-PE - Julho de 2011
  • 26. PCA (Principal Componente Analysis) PUG-PE - Julho de 2011 >>> x1 = np.random.normal(size=100) >>> x2 = np.random.normal(size=100) >>> x3 = x1 + x2 >>> X = np.c_[x1, x2, x3] >>> fromscikits.learnimportdecomposition >>> pca = decomposition.PCA() >>> pca.fit(X) >>> printpca.explained_variance_ [ 2.77227227e+00, 1.14228495e+00, 2.66364138e-32] >>> X_reduced = pca.fit_transform(X, n_components=2) >>> X_reduced.shape (100, 2)
  • 27. Conclusão PUG-PE - Julho de 2011 =
  • 29. OBRIGADO! PUG-PE - Julho de 2011