Your SlideShare is downloading. ×
0
Machine Learning usando scikits.learn<br />Marcelo Gomes Pereira de Lacerda<br />Engenharia da Computação<br />Escola Poli...
Roteiro<br />Elementos Básicos<br />Aprendizagem Supervisionada<br />Seleção de Modelo<br />Aprendizagem Não-Supervisionad...
Elementos Básicos<br />Base de dados (features = Array 2D, labelsArray 1D)<br />Estimator<br />Evaluator<br />PUG-PE - Jul...
Aprendizagem Supervisionada<br />Encontrar relação entre dois datasets: X e Y<br />A aprendizagem ocorre sob “orientações”...
Aprendizagem Supervisionada<br />Classificação<br />PUG-PE - Julho de 2011<br />
Aprendizagem Supervisionada<br />Regressão<br />PUG-PE - Julho de 2011<br />
K-NearestNeighborClassifier (KNN)<br />PUG-PE - Julho de 2011<br />
K-NearestNeighborClassifier (KNN)<br />PUG-PE - Julho de 2011<br />import numpy as np<br />from scikits.learn import datas...
K-NearestNeighborClassifier (KNN)<br />PUG-PE - Julho de 2011<br />fromscikits.learn.neighborsimportNeighborsClassifier<br...
Regressão Linear<br />y = xb + e<br />y = variável alvo<br />x = dado<br />b = coeficiente<br />e = ruído da observação<br...
Regressão Linear<br />PUG-PE - Julho de 2011<br />fromscikits.learnimportlinear_model<br />diabetes = datasets.load_diabet...
Regressão para Classificação<br />Regressão Linear não é recomendada<br />Dá muito peso a elementos distantes da fronteira...
Regressão para Classificação<br />PUG-PE - Julho de 2011<br />logistic = linear_model.LogisticRegression(C=1e5)<br />logis...
SupportVector Machines (SVM)<br />Achar a combinação de amostras de treinamento de forma que maximize a margem entre as cl...
SupportVector Machines (SVM)<br />SVC = SupportVectorClassification<br />SVR = SupportVectorRegression<br />PUG-PE - Julho...
SupportVector Machines (SVM)<br />Outros Kernels<br />svc = svm.SVC(kernel='linear')<br />svc = svm.SVC(kernel='poly',degr...
Seleção de Modelo<br />PUG-PE - Julho de 2011<br />
Seleção de Modelo<br /> Medição da qualidade de predição do modelo através do método score<br />Dica: Implementar K-FoldCr...
Seleção de Modelo<br />PUG-PE - Julho de 2011<br />>>> importnumpy as np<br />>>> X_folds = np.array_split(X_digits, 10)<b...
Seleção de Modelo<br />O scikits.learn dá uma mãozinha!<br />Ou... Melhor ainda!<br />PUG-PE - Julho de 2011<br />>>> kfol...
Seleção de Modelo<br />Cross-ValidationGenerators<br />KFold(n, k)<br />StratifiedKFold(y, k)<br />LeaveOneOut(n)<br />Lea...
Aprendizagem Não-Supervisionada<br />PUG-PE - Julho de 2011<br />
K-Means (Clusterização “Plana”)<br />PUG-PE - Julho de 2011<br />>>> fromscikits.learnimport cluster, datasets<br />>>> ir...
K-Means (Clusterização “Plana”)<br />Desempenho do K-Means depende da inicialização dos clusters<br />scikits.learn cuida ...
PCA (Principal Componente Analysis)<br />PUG-PE - Julho de 2011<br />
PCA (Principal Componente Analysis)<br />PUG-PE - Julho de 2011<br />>>> x1 = np.random.normal(size=100)<br />>>> x2 = np....
Conclusão<br />PUG-PE - Julho de 2011<br />    =<br />
Fonte<br />http://gaelvaroquaux.github.com/scikit-learn-tutorial/<br />PUG-PE - Julho de 2011<br />
OBRIGADO!<br />PUG-PE - Julho de 2011<br />
Upcoming SlideShare
Loading in...5
×

Machine learning usando scikits

2,427

Published on

Apresentação usada no XIV encontro do PUG-PE.

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,427
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
19
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Machine learning usando scikits"

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

    Clipping is a handy way to collect important slides you want to go back to later.

×