Successfully reported this slideshow.
Your SlideShare is downloading. ×

Computação Científica com Python, Numpy e Scipy

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 34 Ad

Computação Científica com Python, Numpy e Scipy

Download to read offline

Palestra sobre Computação Científica com Python, Scipy e Numpy ministrada durante o XVI Encontro do Grupo de Usuários de Python de Pernambuco, Recife - Pernambuco - 03/09/2011 por Marcel Pinheiro Caraciolo

Palestra sobre Computação Científica com Python, Scipy e Numpy ministrada durante o XVI Encontro do Grupo de Usuários de Python de Pernambuco, Recife - Pernambuco - 03/09/2011 por Marcel Pinheiro Caraciolo

Advertisement
Advertisement

More Related Content

Viewers also liked (20)

Advertisement

More from Marcel Caraciolo (18)

Advertisement

Recently uploaded (20)

Computação Científica com Python, Numpy e Scipy

  1. 1. Computação Científica com Python A cobra também é inteligente! 1
  2. 2. Membro do Muriçoca Labs - Labs de Projetos com Machine Learning 2
  3. 3. O que é Python ? 6=7%#E!)")F#C>)&& G."#A$%)F.&H&.8IA%.*1&-=$:#.$)7,J& !"#$%&'()*+&)*,'& !"#$%&$'()*') -."&#&#$&/0121345& +,-$,&(&./-) &&!"#$%&#& *')&01-)#23'0) 444)5-()%(&) 6"#1&7') 6"(+0'6)') 89:"0)*') 444);(&) &+,'#*',) <"<0"-1':&) 444)=)+&:-1'6) $"$&#1') +>):90:%0-?) +&*,/-444) *&*-6?+,-:'66 :%+!A*1*.:BA%*1-#7A*1"ACAD1,& &('#1-?) "#1',8&:'@) 6)%!7.%7#819:#;+1<=>;+1;+?@1,& Marcel Caraciolo - @marcelcaraciolo 3
  4. 4. Ciclo de Desenvolvimento em P&D 3#%$/$()967*2$2 !"#$%&'$()* <&/59;&=967*2 +,$-.$/&0(12 3(:;&/$28*/2 345&/&67*28$2 .98*/2 .98*/2 Marcel Caraciolo - @marcelcaraciolo 4
  5. 5. Ciclo de Desenvolvimento em P&D 3#%$/$()967*2$2 !"#$%&'$()* <&/59;&=967*2 +,$-.$/&0(12 3(:;&/$28*/2 345&/&67*28$2 .98*/2 .98*/2 Marcel Caraciolo - @marcelcaraciolo 5
  6. 6. Uso de software facilita muito! 012*2-#"+,-$3$ 4)*(".)5"+,-$ !"#$%&'$()* 4(5657$%8% +,$-./$0&1(** !"#"$%-"./*)*$ !"#"$%&'()*)+,-$ .'/,'#$% !"#$%&'()"()$% .'/0"1'23'* *('+,"()$%*--% Marcel Caraciolo - @marcelcaraciolo 6
  7. 7. Uso de Python facilita mais ainda!! 23+%+/.-4(/)5) ! 6$%#-0$7-4(/ !"#$%&'$()*+ 6#.*').'57+, ,-$./0$1&2(++ 4/8.+,1, ,-.-)!/-01%$%) !"#$%$&'()*+),-*(%) 2$34/+, !"#$%&$'()#*+, (-54/+,1+ -./*"0+,1, Marcel Caraciolo - @marcelcaraciolo 7
  8. 8. 8
  9. 9. Aquisição de Dados http://archive.ics.uci.edu/ml/ Repositórios de Dados UCI, MovieLens, AWS, KDD, etc. Marcel Caraciolo - @marcelcaraciolo 9
  10. 10. Usando o loadtxt() from numpy import loadtxt def class2int(s): ! if s == 'Iris-setosa': ! ! return 1 ! elif s == 'Iris-versicolor': ! ! return 0 http://archive.ics.uci.edu/ml/datasets/Iris ! else: ! ! return 2 %n1, n2, n3, n4, class 5.1,3.5,1.4,0.2,Iris-setosa 4.9,3.0,1.4,0.2,Iris-setosa 4.7,3.2,1.3,0.2,Iris-setosa ary1 = loadtxt('iris.data', delimiter=',', 4.6,3.1,1.5,0.2,Iris-setosa 5.0,3.6,1.4,0.2,Iris-setosa converters={4: lambda s: class2int(s)}, 5.4,3.9,1.7,0.4,Iris-setosa skiprows=1) 4.6,3.4,1.4,0.3,Iris-setosa ... print ary1 http://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html#numpy.loadtxt Marcel Caraciolo - @marcelcaraciolo 10
  11. 11. Aquisição de Dados WEB 11
  12. 12. Bibliotecas como BeautifulSoap <html> <body> <table> <tr> from BeautifulSoup import BeautifulSoup <td> 3.0 </td> soup = BeautifulSoup(''.join(html)) <td> 4.0 </td> table = soup.find('table') </tr> 3.0 4.0 <tr>   <td> 5.0 6.2 rows = table.findAll('tr') 5.0 </td> for tr in rows: <td> 6.2 cols = tr.findAll('td') </td> for td in cols: </tr> </table> text = ''.join(td.find(text=True)) </body> </html> print text+"|", print $ sudo aptitude install python-beautifulsoup Marcel Caraciolo - @marcelcaraciolo 12
  13. 13. Análise dos Dados !"#$%& '()$%& ! "#$%&$'#()*( ! >?)&8#()*(-8'#($@A*8( +*,,-.*$'-/(0-,-( *.(=B'C#$(0-,-( 1#.0&'-23#( ',-:-8C-,(1#.( 14*$561-( A*'#,*/(*(.-',4D*/( ! 789*:,-(;4$*-,<( ! E-/*-)#(*.("F(:*.( =,#1*//-.*$'#( #G.4D-)#( !!"#$%&&'''()*+$,(-./!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"#$%&&012$,()*+$,(-./! Marcel Caraciolo - @marcelcaraciolo 13
  14. 14. História do Numpy e Scipy Criado por Eric Jones e Travis Oliphant em 2001 Atualmente mantida por uma comunidade de usuários http://conference.scipy.org/scipy2011/ http://enthought.com Marcel Caraciolo - @marcelcaraciolo 14
  15. 15. Numpy e Scipy como ambiente científico Capaz de competir com outros softwares matemáticos como Matlab, Octave, R, Scilab, etc. Ipython - http://ipython.org/ Ferramenta essencial para todo desenvolvedor que vai trabalhar com Python + Scipy + Numpy + Matplotlib Marcel Caraciolo - @marcelcaraciolo 15
  16. 16. Numpy e Scipy como ambiente científico Comparando com o Matlab http://www.scipy.org/NumPy_for_Matlab_Users Scipy/Numpy Matlab Python com múltiplos argumentos, Definição de função de Matlab bem valores default, etc. restrita Programação Orientada a Objetos Programação Procedural Gratuito Pago Marcel Caraciolo - @marcelcaraciolo 16
  17. 17. Numpy e Scipy como ambiente científico Mas eu gosto de plotar gráficos! Matplotlib - http://matplotlib.sourceforge.net/ Python 2D Plotting library MATLAB plotting framework - matplotlib.pyplot http://www.scipy.org/Cookbook/Matplotlib Marcel Caraciolo - @marcelcaraciolo 17
  18. 18. Plotando com o PyLab !!!"#$%$&'()*+,&*-"*./+*01" $ ipython --pylab >>> plot(x,sin(x)) >>> plot(x,cos(x)) >>> legend([‘sin’, ‘cos’]) 20 Marcel Caraciolo - @marcelcaraciolo 18
  19. 19. Funcionalidades do Scipy Organizado em subpacotes, abrangendo vários domínios da !"#$%&#'(%)')*+,)&,-$%./ computação científica ! !"#$%&'$()*+,*-./0$1)2+-3*$/"$%#+%()*45"&)-*(),6%&)-* ($*1),0.2$78)*1&+%269&1$ Marcel Caraciolo - @marcelcaraciolo 19
  20. 20. Mas por onde começo ? Scipy e Numpy disponível para diversas plataformas http://new.scipy.org/download.html !"#$%&%'()*+)#*,-+.&)# ! ou !"#$%&'()*&+#($,-./'0&$121&+#3'2'-)'(&$01)13,241( 5))$677-'89("#$%9,2:7+,8-0,1+95)40& $ !sudo apt-get install python-numpy ! ,; $ sudo apt-get install python-scipy ! !"#$%&#'()*#!++'",#-.)$)/0", ! !"#$%&#'()*#!++'",#-.)$*1(", 5))$677-;4$%9("#$%9,2:7 5))$6778889("#$%9,2: Marcel Caraciolo - @marcelcaraciolo 20
  21. 21. Explorando o Numpy !"#$%&'()%*%*+,-./ Arrays e Matrizes ! !""#$% >>> import numpy as np ! &#'"()*% >>> a = np.array([0,1,2,3,4,5], [10,11,12,13,14,15], 0 1 2 3 4 5 [20,21,22,23,24,25], [30,31,32,33,34,35], 10 11 12 13 14 15 [40,41,42,43,44,45], 20 21 22 23 24 25 [50,51,52,53,54,55])   30 31 32 33 34 35 !!!"#$%&'()* !""!#$%&'()*+ 40 41 42 43 44 45 50 51 52 53 54 55 !!!"#$+(&+(* !""!#$%%))'(),*'((((((( %,)'(,,**+ !!!"#$(&,* !""!#$%-'.-'--'&-')-',-*+ !!!"#$%&&%'&&%( #))#*+$$%,'"%%'"%-('" $-,'"-%'"--((. Marcel Caraciolo - @marcelcaraciolo 21
  22. 22. Explorando o Numpy !"#$%&'()%*%*+,-./ Arrays e Matrizes ! !""#$% >>> import &#'"()*% numpy !as np >>> a = np.matrix([0,1,2,3,4,5], 0 1 2 3 4 5 [10,11,12,13,14,15], [20,21,22,23,24,25], 10 11 12 13 14 15 [30,31,32,33,34,35], 20 21 22 23 24 25 [40,41,42,43,44,45], [50,51,52,53,54,55]) 30 31 32 33 34 35   40 41 42 43 44 45 >>> m_t = a.transpose() 50 51 52 53 54 55 >>> mask = a < 30 >>> a[mask] #Matriz com valores < 30 Marcel Caraciolo - @marcelcaraciolo 22
  23. 23. Explorando o Numpy !"#$%&'()%*%*+,-./ e Matrizes Operação de Arrays ! !"#$%&'#()*+,)-$$%.()#)/%0$12#( ! 3$1%&4+)5#)6#0+$#( numpy.zeros((M,N)) Vetor MxN de zeros numpy.ones((M,N)) Vetor MxN de ums numpy.empty((M,N)) Vetor MxN vazio (qualquer valor) numpy.zeros_like(m) Vetor de zeros com formato de m numpy.ones_like(m) Vetor de ums com formato de m numpy.empty_like(m) Vetor de vazio com formato de m numpy.random.random((M,N)) Vetor com valores aleatórios numpy.identity(N) Matriz Identidade, N x N numpy.array([(1,2,3),(4,5,6)]) Especifica os valores da matriz numpy.matrix([[1,2,3],[4,5,6]]) Especifica os valores da matriz numpy.arange(0.,1.,.3) Vetor com Inicio I, fim F, passo P numpy.linspace(0.1, 1, 10) Vetor com N valores de I à F Marcel Caraciolo - @marcelcaraciolo 23
  24. 24. Explorando o Numpy Arrays e Matrizes >>> import numpy as np >>> a = np.array([1,2,3], [4,5,6], [7,8,9])   >>> np.mean(a[0,:]) #media >>> np.std(a[:,1]) #desvio-padrao >>> np.min(a) #minimo >>> np.max(a) #maximo >>> b = a.T #transposta >>> m = np.dot(a,b) #multipl. >>> r = np.random.random((100,00)) >>> i = np.linalg.inv(r) #inversa >>> eigval, eigvec = numpy.linalg.eig(r) #auto-vetores Marcel Caraciolo - -@marcelcaraciolo Marcel Caraciolo @marcelcaraciolo 24
  25. 25. Explorando o Scipy Álgebra Linear (scipy.linalg) >>> import numpy as np >>> a = np.array([1,2,3], [4,5,6], [7,8,9])   >>> np.mean(a[0,:]) >>> np.std(a[:,1]) >>> np.min(a) >>> np.max(a) >>> b = a.T >>> m = np.dot(a,b) >>> r = np.random.random((100,00)) >>> i = np.linalg.inv(r) >>> eigval, eigvec = numpy.linalg.eig(r) Marcel Caraciolo - @marcelcaraciolo 25
  26. 26. Explorando o Scipy Álgebra Linear (scipy.linalg) Resolvendo sistemas de equações >>> import numpy as np >>> from scipy import linalg >>> a = np.matrix(‘1 1 1; 1 -2 2; 0 1 2’) >>> b = np.matrix(‘0;4;2’) #Resolve a eq ax= b >>> x = linalg.solve(a,b) >>> print x Marcel Caraciolo - @marcelcaraciolo 26
  27. 27. Explorando o Scipy Estatísticas (scipy.stats) >>> from scipy import stats # 100 random values from a Poisson distribution with mu = 1.0 >>> s = stats.norm.rvs(loc=0.0,scale=1.0, size=100) # basic statistics from the matrix. >>> n, min_max, mean, var, skew, kurt = stats.describe(s) >>> print("Number of elements: {0:d}".format(n)) >>> print("Minimum: {0:8.6f} Maximum: {1:8.6f}".format(min_max[0], min_max[1])) >>> print("Mean: {0:8.6f}".format(mean)) >>> print("Variance: {0:8.6f}".format(var)) >>> print("Skew : {0:8.6f}".format(skew)) >>> print("Kurtosis: {0:8.6f}".format(kurt)) Marcel Caraciolo - @marcelcaraciolo 27
  28. 28. Explorando o Scipy Clusterização (scipy.cluster) !"#$%&'()*+,-./$0(1230"#$%&'4 Algoritmos de Agrupamento ! !"#$%&'($)*+,*!#%-./(,0'$ ! !'-/"(,0',1*/.,0/)*$*!"#$%&'()!"#*+,%'- Atualmente, apenas o K-Means ! ./012,341(+$(%52$&+,6%+1(&71('85$29,',1&%+1 Marcel Caraciolo - @marcelcaraciolo 28
  29. 29. Explorando o Scipy !"#$%&'()*+,-./$0(1230"#$%&'4 Clusterização (scipy.cluster) ! !"#$%&' ( ) * !"#$%&'+, 01 2#,3&4+5#6+ - . 7859$,$:56;<,2#,3&:++;=;3:>?',#,2#,2;+5@A3;:+ / Fonte: http://www.slideshare.net/santiagosilas/computao-cientfica-com-numpy-e-scipy-7797060 Marcel Caraciolo - @marcelcaraciolo 29
  30. 30. Explorando o Scipy !"#$%&'()*&+,-#./0123' Clusterização (scipy.cluster) ! !"#$%&'(')*%+' Marcel Caraciolo - @marcelcaraciolo 30
  31. 31. Projetos Scikits Projetos interessantes usando o Scipy/Numpy Scikit-learn http://scikit-learn.sourceforge.net/stable/ Toolkit de aprendizagem de máquina com algoritmos como PCA, SVM, Bayes, etc. Divisi2 http://csc.media.mit.edu/docs/divisi2/ Toolkit para representação de matrizes esparsas e uso de SVD Pandas http://statsmodels.sourceforge.net/ Toolkit para trabalho com dados estatísticos com Scipy e Numpy Sympy - http://code.google.com/p/sympy/ Toolkit para manipulação para matemática simbólica *Crab https://github.com/muricoca/crab Toolkit para construção de sistemas de recomendação com Scipy e Numpy Marcel Caraciolo - @marcelcaraciolo 31
  32. 32. Clusterização (scipy.cluster) !"#$%&'()*+,-./$0(1230"#$%&'4 Algoritmos de Agrupamento ! !"#$%&'($)*+,*!#%-./(,0'$ ! !'-/"(,0',1*/.,0/)*$*!"#$%&'()!"#*+,%'- Atualmente, apenas o K-Means ! ./012,341(+$(%52$&+,6%+1(&71('85$29,',1&%+1 Marcel Caraciolo - @marcelcaraciolo 32
  33. 33. Dúvidas? 1. Documentação http://docs.scipy.org/doc/ 1I. Tutoriais http://scipy-lectures.github.com/ III. Listas de Discussão http://www.scipy.org/Mailing_Lists http://pyscience-brasil.wikidot.com/ IV. Livros Computação Científica com Python por Flávio Coelho, Editora Lulu.com Marcel Caraciolo - @marcelcaraciolo 33
  34. 34. Computação Científica com Python A cobra também é inteligente! marcel{@orygens, @muricoca} . com 34

×