SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
Computação Científica
   com Python
    A cobra também é inteligente!




                                    1
Membro do Muriçoca Labs - Labs de Projetos com Machine Learning




                                                                  2
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
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
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
Uso de software facilita muito!



  012*2-#"+,-$3$
   4)*(".)5"+,-$     !"#$%&'$()*
  4(5657$%8%         +,$-./$0&1(**




   !"#"$%-"./*)*$     !"#"$%&'()*)+,-$

  .'/,'#$%          !"#$%&'()"()$%
.'/0"1'23'*         *('+,"()$%*--%




                    Marcel Caraciolo - @marcelcaraciolo
                                                          6
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
Aquisição de Dados




http://archive.ics.uci.edu/ml/

                                          Repositórios de Dados
                                            UCI, MovieLens, AWS, KDD, etc.

                                            Marcel Caraciolo - @marcelcaraciolo
                                                                                  9
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
Aquisição de Dados




    WEB



                     11
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
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
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
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
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
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
Plotando com o PyLab


                                !!!"#$%$&'()*+,&*-"*./+*01"

$ ipython --pylab

>>> plot(x,sin(x))

>>> plot(x,cos(x))

>>> legend([‘sin’, ‘cos’])




                                                                  20




                                  Marcel Caraciolo - @marcelcaraciolo
                                                                        18
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
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
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
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
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
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
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
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
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
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
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
Explorando o Scipy

!"#$%&'()*&+,-#./0123'
         Clusterização (scipy.cluster)
!   !"#$%&'(')*%+'




                                Marcel Caraciolo - @marcelcaraciolo
                                                                      30
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
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
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
Computação Científica
   com Python
      A cobra também é inteligente!




  marcel{@orygens, @muricoca} . com
                                      34

Mais conteúdo relacionado

Mais procurados

Perl Moderno, dia1
Perl Moderno, dia1Perl Moderno, dia1
Perl Moderno, dia1garux
 
Introdução ao c# para iniciantes
Introdução ao c# para iniciantesIntrodução ao c# para iniciantes
Introdução ao c# para iniciantesTiago
 
Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP Luis Gustavo Almeida
 
Busca textual com solr e sunspot no rails
Busca textual com solr e sunspot no railsBusca textual com solr e sunspot no rails
Busca textual com solr e sunspot no railsMaurício Linhares
 
Jug bizus (4)
Jug   bizus (4)Jug   bizus (4)
Jug bizus (4)JugVale
 
Hibernate efetivo (COALTI-2014 / ALJUG)
Hibernate efetivo (COALTI-2014 / ALJUG)Hibernate efetivo (COALTI-2014 / ALJUG)
Hibernate efetivo (COALTI-2014 / ALJUG)Rafael Ponte
 

Mais procurados (7)

Perl Moderno, dia1
Perl Moderno, dia1Perl Moderno, dia1
Perl Moderno, dia1
 
Introdução ao c# para iniciantes
Introdução ao c# para iniciantesIntrodução ao c# para iniciantes
Introdução ao c# para iniciantes
 
Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP
 
Busca textual com solr e sunspot no rails
Busca textual com solr e sunspot no railsBusca textual com solr e sunspot no rails
Busca textual com solr e sunspot no rails
 
Jug bizus (4)
Jug   bizus (4)Jug   bizus (4)
Jug bizus (4)
 
Jug bizus
Jug   bizusJug   bizus
Jug bizus
 
Hibernate efetivo (COALTI-2014 / ALJUG)
Hibernate efetivo (COALTI-2014 / ALJUG)Hibernate efetivo (COALTI-2014 / ALJUG)
Hibernate efetivo (COALTI-2014 / ALJUG)
 

Destaque

Python e Aprendizagem de Máquina (Inteligência Artificial)
Python e Aprendizagem de Máquina (Inteligência Artificial)Python e Aprendizagem de Máquina (Inteligência Artificial)
Python e Aprendizagem de Máquina (Inteligência Artificial)Marcel Caraciolo
 
Como Python está mudando a forma de aprendizagem à distância no Brasil
Como Python está mudando a forma de aprendizagem à distância no BrasilComo Python está mudando a forma de aprendizagem à distância no Brasil
Como Python está mudando a forma de aprendizagem à distância no BrasilMarcel Caraciolo
 
Recommender Systems with Ruby (adding machine learning, statistics, etc)
Recommender Systems with Ruby (adding machine learning, statistics, etc)Recommender Systems with Ruby (adding machine learning, statistics, etc)
Recommender Systems with Ruby (adding machine learning, statistics, etc)Marcel Caraciolo
 
PyFoursquare: Python Library for Foursquare
PyFoursquare: Python Library for FoursquarePyFoursquare: Python Library for Foursquare
PyFoursquare: Python Library for FoursquareMarcel Caraciolo
 
Redes Neurais e Python
Redes Neurais e PythonRedes Neurais e Python
Redes Neurais e Pythonpugpe
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em PythonLuciano Ramalho
 
Python para iniciantes
Python para iniciantesPython para iniciantes
Python para iniciantesrichardsonlima
 
Benchy: Lightweight framework for Performance Benchmarks
Benchy: Lightweight framework for Performance Benchmarks Benchy: Lightweight framework for Performance Benchmarks
Benchy: Lightweight framework for Performance Benchmarks Marcel Caraciolo
 
Crab - A Python Framework for Building Recommendation Systems
Crab - A Python Framework for Building Recommendation SystemsCrab - A Python Framework for Building Recommendation Systems
Crab - A Python Framework for Building Recommendation SystemsMarcel Caraciolo
 
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...Marcel Caraciolo
 
Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolsoJean Lopes
 
Recomendação de Conteúdo para Redes Sociais Educativas
Recomendação de Conteúdo para Redes Sociais EducativasRecomendação de Conteúdo para Redes Sociais Educativas
Recomendação de Conteúdo para Redes Sociais EducativasMarcel Caraciolo
 
Crab: A Python Framework for Building Recommender Systems
Crab: A Python Framework for Building Recommender Systems Crab: A Python Framework for Building Recommender Systems
Crab: A Python Framework for Building Recommender Systems Marcel Caraciolo
 
Content Recommendation Based on Data Mining in Adaptive Social Networks
Content Recommendation Based on Data Mining  in Adaptive Social NetworksContent Recommendation Based on Data Mining  in Adaptive Social Networks
Content Recommendation Based on Data Mining in Adaptive Social NetworksMarcel Caraciolo
 
Palestra: Cientista de Dados – Dominando o Big Data com Software Livre
Palestra: Cientista de Dados – Dominando o Big Data com Software LivrePalestra: Cientista de Dados – Dominando o Big Data com Software Livre
Palestra: Cientista de Dados – Dominando o Big Data com Software LivreAmbiente Livre
 
Introduction to Crab - Python Framework for Building Recommender Systems
Introduction to Crab - Python Framework for Building Recommender SystemsIntroduction to Crab - Python Framework for Building Recommender Systems
Introduction to Crab - Python Framework for Building Recommender SystemsMarcel Caraciolo
 
Python 3.x - Ihh.. E agora ? Como faço ?
Python 3.x - Ihh.. E agora ? Como faço ?Python 3.x - Ihh.. E agora ? Como faço ?
Python 3.x - Ihh.. E agora ? Como faço ?Marcel Caraciolo
 

Destaque (20)

Python e Aprendizagem de Máquina (Inteligência Artificial)
Python e Aprendizagem de Máquina (Inteligência Artificial)Python e Aprendizagem de Máquina (Inteligência Artificial)
Python e Aprendizagem de Máquina (Inteligência Artificial)
 
Big Data com Python
Big Data com PythonBig Data com Python
Big Data com Python
 
Como Python está mudando a forma de aprendizagem à distância no Brasil
Como Python está mudando a forma de aprendizagem à distância no BrasilComo Python está mudando a forma de aprendizagem à distância no Brasil
Como Python está mudando a forma de aprendizagem à distância no Brasil
 
Recommender Systems with Ruby (adding machine learning, statistics, etc)
Recommender Systems with Ruby (adding machine learning, statistics, etc)Recommender Systems with Ruby (adding machine learning, statistics, etc)
Recommender Systems with Ruby (adding machine learning, statistics, etc)
 
PyFoursquare: Python Library for Foursquare
PyFoursquare: Python Library for FoursquarePyFoursquare: Python Library for Foursquare
PyFoursquare: Python Library for Foursquare
 
Redes Neurais e Python
Redes Neurais e PythonRedes Neurais e Python
Redes Neurais e Python
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
 
Python para iniciantes
Python para iniciantesPython para iniciantes
Python para iniciantes
 
Benchy: Lightweight framework for Performance Benchmarks
Benchy: Lightweight framework for Performance Benchmarks Benchy: Lightweight framework for Performance Benchmarks
Benchy: Lightweight framework for Performance Benchmarks
 
Crab - A Python Framework for Building Recommendation Systems
Crab - A Python Framework for Building Recommendation SystemsCrab - A Python Framework for Building Recommendation Systems
Crab - A Python Framework for Building Recommendation Systems
 
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
 
Aprendendo python
Aprendendo pythonAprendendo python
Aprendendo python
 
Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolso
 
Recomendação de Conteúdo para Redes Sociais Educativas
Recomendação de Conteúdo para Redes Sociais EducativasRecomendação de Conteúdo para Redes Sociais Educativas
Recomendação de Conteúdo para Redes Sociais Educativas
 
Crab: A Python Framework for Building Recommender Systems
Crab: A Python Framework for Building Recommender Systems Crab: A Python Framework for Building Recommender Systems
Crab: A Python Framework for Building Recommender Systems
 
Content Recommendation Based on Data Mining in Adaptive Social Networks
Content Recommendation Based on Data Mining  in Adaptive Social NetworksContent Recommendation Based on Data Mining  in Adaptive Social Networks
Content Recommendation Based on Data Mining in Adaptive Social Networks
 
Palestra: Cientista de Dados – Dominando o Big Data com Software Livre
Palestra: Cientista de Dados – Dominando o Big Data com Software LivrePalestra: Cientista de Dados – Dominando o Big Data com Software Livre
Palestra: Cientista de Dados – Dominando o Big Data com Software Livre
 
Introduction to Crab - Python Framework for Building Recommender Systems
Introduction to Crab - Python Framework for Building Recommender SystemsIntroduction to Crab - Python Framework for Building Recommender Systems
Introduction to Crab - Python Framework for Building Recommender Systems
 
Mining Scipy Lectures
Mining Scipy LecturesMining Scipy Lectures
Mining Scipy Lectures
 
Python 3.x - Ihh.. E agora ? Como faço ?
Python 3.x - Ihh.. E agora ? Como faço ?Python 3.x - Ihh.. E agora ? Como faço ?
Python 3.x - Ihh.. E agora ? Como faço ?
 

Semelhante a Introdução ao Python Científico com Scipy e Numpy

Introdução ao framework CakePHP
Introdução ao framework CakePHPIntrodução ao framework CakePHP
Introdução ao framework CakePHPigorpimentel
 
Módulo 5 análise das demonstrações contábeis
Módulo 5   análise das demonstrações contábeisMódulo 5   análise das demonstrações contábeis
Módulo 5 análise das demonstrações contábeisPUC Minas
 
Methodologies background hiberno romanesque metalwork
Methodologies background hiberno romanesque metalworkMethodologies background hiberno romanesque metalwork
Methodologies background hiberno romanesque metalworkMartin Brown
 
Otimização e Escalabilidade
Otimização e EscalabilidadeOtimização e Escalabilidade
Otimização e Escalabilidademetzen
 
EXIGÊNCIAS DE CERTIDÕES NEGATIVAS PARA LEVANTAMENTO DE VALORES DECORRENTES DE...
EXIGÊNCIAS DE CERTIDÕES NEGATIVAS PARA LEVANTAMENTO DE VALORES DECORRENTES DE...EXIGÊNCIAS DE CERTIDÕES NEGATIVAS PARA LEVANTAMENTO DE VALORES DECORRENTES DE...
EXIGÊNCIAS DE CERTIDÕES NEGATIVAS PARA LEVANTAMENTO DE VALORES DECORRENTES DE...MARCO AURÉLIO BICALHO DE ABREU CHAGAS
 
Apresentações alta performance
Apresentações alta performanceApresentações alta performance
Apresentações alta performanceCésar Ribeiro
 
Pgads42
Pgads42Pgads42
Pgads42csmp
 
Pg2
Pg2Pg2
Pg2csmp
 
Curso de Gestão de Comunicação Empresarial e Relações Públicas
Curso de Gestão de Comunicação Empresarial e Relações PúblicasCurso de Gestão de Comunicação Empresarial e Relações Públicas
Curso de Gestão de Comunicação Empresarial e Relações PúblicasSustentare Escola de Negócios
 
Pythonbasico
PythonbasicoPythonbasico
PythonbasicoUFT
 
Introdução a python módulo a
Introdução a python   módulo aIntrodução a python   módulo a
Introdução a python módulo aJader Gabriel
 

Semelhante a Introdução ao Python Científico com Scipy e Numpy (20)

Introdução ao framework CakePHP
Introdução ao framework CakePHPIntrodução ao framework CakePHP
Introdução ao framework CakePHP
 
346
346346
346
 
346
346346
346
 
Ms05-resmat
Ms05-resmatMs05-resmat
Ms05-resmat
 
3
33
3
 
Módulo 5 análise das demonstrações contábeis
Módulo 5   análise das demonstrações contábeisMódulo 5   análise das demonstrações contábeis
Módulo 5 análise das demonstrações contábeis
 
apostila.pdf
apostila.pdfapostila.pdf
apostila.pdf
 
Methodologies background hiberno romanesque metalwork
Methodologies background hiberno romanesque metalworkMethodologies background hiberno romanesque metalwork
Methodologies background hiberno romanesque metalwork
 
Otimização e Escalabilidade
Otimização e EscalabilidadeOtimização e Escalabilidade
Otimização e Escalabilidade
 
EXIGÊNCIAS DE CERTIDÕES NEGATIVAS PARA LEVANTAMENTO DE VALORES DECORRENTES DE...
EXIGÊNCIAS DE CERTIDÕES NEGATIVAS PARA LEVANTAMENTO DE VALORES DECORRENTES DE...EXIGÊNCIAS DE CERTIDÕES NEGATIVAS PARA LEVANTAMENTO DE VALORES DECORRENTES DE...
EXIGÊNCIAS DE CERTIDÕES NEGATIVAS PARA LEVANTAMENTO DE VALORES DECORRENTES DE...
 
Apresentações alta performance
Apresentações alta performanceApresentações alta performance
Apresentações alta performance
 
Pgads42
Pgads42Pgads42
Pgads42
 
Pg2
Pg2Pg2
Pg2
 
Bd racismo
Bd racismoBd racismo
Bd racismo
 
Curso de Gestão de Comunicação Empresarial e Relações Públicas
Curso de Gestão de Comunicação Empresarial e Relações PúblicasCurso de Gestão de Comunicação Empresarial e Relações Públicas
Curso de Gestão de Comunicação Empresarial e Relações Públicas
 
Atm
AtmAtm
Atm
 
Pythonbasico
PythonbasicoPythonbasico
Pythonbasico
 
Python introdução
Python   introduçãoPython   introdução
Python introdução
 
Pythonbasico
PythonbasicoPythonbasico
Pythonbasico
 
Introdução a python módulo a
Introdução a python   módulo aIntrodução a python   módulo a
Introdução a python módulo a
 

Mais de Marcel Caraciolo

Como interpretar seu próprio genoma com Python
Como interpretar seu próprio genoma com PythonComo interpretar seu próprio genoma com Python
Como interpretar seu próprio genoma com PythonMarcel Caraciolo
 
Joblib: Lightweight pipelining for parallel jobs (v2)
Joblib:  Lightweight pipelining for parallel jobs (v2)Joblib:  Lightweight pipelining for parallel jobs (v2)
Joblib: Lightweight pipelining for parallel jobs (v2)Marcel Caraciolo
 
Construindo softwares de bioinformática para análises clínicas : Desafios e...
Construindo softwares  de bioinformática  para análises clínicas : Desafios e...Construindo softwares  de bioinformática  para análises clínicas : Desafios e...
Construindo softwares de bioinformática para análises clínicas : Desafios e...Marcel Caraciolo
 
Como Python ajudou a automatizar o nosso laboratório v.2
Como Python ajudou a automatizar o nosso laboratório v.2Como Python ajudou a automatizar o nosso laboratório v.2
Como Python ajudou a automatizar o nosso laboratório v.2Marcel Caraciolo
 
Como Python pode ajudar na automação do seu laboratório
Como Python pode ajudar na automação do  seu laboratórioComo Python pode ajudar na automação do  seu laboratório
Como Python pode ajudar na automação do seu laboratórioMarcel Caraciolo
 
Python on Science ? Yes, We can.
Python on Science ?   Yes, We can.Python on Science ?   Yes, We can.
Python on Science ? Yes, We can.Marcel Caraciolo
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Marcel Caraciolo
 
Opensource - Como começar e dá dinheiro ?
Opensource - Como começar e dá dinheiro ?Opensource - Como começar e dá dinheiro ?
Opensource - Como começar e dá dinheiro ?Marcel Caraciolo
 
Benchy, python framework for performance benchmarking of Python Scripts
Benchy, python framework for performance benchmarking  of Python ScriptsBenchy, python framework for performance benchmarking  of Python Scripts
Benchy, python framework for performance benchmarking of Python ScriptsMarcel Caraciolo
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Marcel Caraciolo
 
Construindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com PythonConstruindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com PythonMarcel Caraciolo
 
Python, A pílula Azul da programação
Python, A pílula Azul da programaçãoPython, A pílula Azul da programação
Python, A pílula Azul da programaçãoMarcel Caraciolo
 
Novas Tendências para a Educação a Distância: Como reinventar a educação ?
Novas Tendências para a Educação a Distância: Como reinventar a educação ?Novas Tendências para a Educação a Distância: Como reinventar a educação ?
Novas Tendências para a Educação a Distância: Como reinventar a educação ?Marcel Caraciolo
 
Aula WebCrawlers com Regex - PyCursos
Aula WebCrawlers com Regex - PyCursosAula WebCrawlers com Regex - PyCursos
Aula WebCrawlers com Regex - PyCursosMarcel Caraciolo
 
Arquivos Zip com Python - Aula PyCursos
Arquivos Zip com Python - Aula PyCursosArquivos Zip com Python - Aula PyCursos
Arquivos Zip com Python - Aula PyCursosMarcel Caraciolo
 
Sistemas de Recomendação: Como funciona e Onde Se aplica?
Sistemas de Recomendação: Como funciona e Onde Se aplica?Sistemas de Recomendação: Como funciona e Onde Se aplica?
Sistemas de Recomendação: Como funciona e Onde Se aplica?Marcel Caraciolo
 
Construindo Comunidades Open-Source Bem Sucedidas: Experiências do PUG-PE
Construindo Comunidades Open-Source Bem Sucedidas: Experiências do PUG-PEConstruindo Comunidades Open-Source Bem Sucedidas: Experiências do PUG-PE
Construindo Comunidades Open-Source Bem Sucedidas: Experiências do PUG-PEMarcel Caraciolo
 
Sistemas de Recomendação e Mobilidade
Sistemas de Recomendação e MobilidadeSistemas de Recomendação e Mobilidade
Sistemas de Recomendação e MobilidadeMarcel Caraciolo
 

Mais de Marcel Caraciolo (18)

Como interpretar seu próprio genoma com Python
Como interpretar seu próprio genoma com PythonComo interpretar seu próprio genoma com Python
Como interpretar seu próprio genoma com Python
 
Joblib: Lightweight pipelining for parallel jobs (v2)
Joblib:  Lightweight pipelining for parallel jobs (v2)Joblib:  Lightweight pipelining for parallel jobs (v2)
Joblib: Lightweight pipelining for parallel jobs (v2)
 
Construindo softwares de bioinformática para análises clínicas : Desafios e...
Construindo softwares  de bioinformática  para análises clínicas : Desafios e...Construindo softwares  de bioinformática  para análises clínicas : Desafios e...
Construindo softwares de bioinformática para análises clínicas : Desafios e...
 
Como Python ajudou a automatizar o nosso laboratório v.2
Como Python ajudou a automatizar o nosso laboratório v.2Como Python ajudou a automatizar o nosso laboratório v.2
Como Python ajudou a automatizar o nosso laboratório v.2
 
Como Python pode ajudar na automação do seu laboratório
Como Python pode ajudar na automação do  seu laboratórioComo Python pode ajudar na automação do  seu laboratório
Como Python pode ajudar na automação do seu laboratório
 
Python on Science ? Yes, We can.
Python on Science ?   Yes, We can.Python on Science ?   Yes, We can.
Python on Science ? Yes, We can.
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3
 
Opensource - Como começar e dá dinheiro ?
Opensource - Como começar e dá dinheiro ?Opensource - Como começar e dá dinheiro ?
Opensource - Como começar e dá dinheiro ?
 
Benchy, python framework for performance benchmarking of Python Scripts
Benchy, python framework for performance benchmarking  of Python ScriptsBenchy, python framework for performance benchmarking  of Python Scripts
Benchy, python framework for performance benchmarking of Python Scripts
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?
 
Construindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com PythonConstruindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com Python
 
Python, A pílula Azul da programação
Python, A pílula Azul da programaçãoPython, A pílula Azul da programação
Python, A pílula Azul da programação
 
Novas Tendências para a Educação a Distância: Como reinventar a educação ?
Novas Tendências para a Educação a Distância: Como reinventar a educação ?Novas Tendências para a Educação a Distância: Como reinventar a educação ?
Novas Tendências para a Educação a Distância: Como reinventar a educação ?
 
Aula WebCrawlers com Regex - PyCursos
Aula WebCrawlers com Regex - PyCursosAula WebCrawlers com Regex - PyCursos
Aula WebCrawlers com Regex - PyCursos
 
Arquivos Zip com Python - Aula PyCursos
Arquivos Zip com Python - Aula PyCursosArquivos Zip com Python - Aula PyCursos
Arquivos Zip com Python - Aula PyCursos
 
Sistemas de Recomendação: Como funciona e Onde Se aplica?
Sistemas de Recomendação: Como funciona e Onde Se aplica?Sistemas de Recomendação: Como funciona e Onde Se aplica?
Sistemas de Recomendação: Como funciona e Onde Se aplica?
 
Construindo Comunidades Open-Source Bem Sucedidas: Experiências do PUG-PE
Construindo Comunidades Open-Source Bem Sucedidas: Experiências do PUG-PEConstruindo Comunidades Open-Source Bem Sucedidas: Experiências do PUG-PE
Construindo Comunidades Open-Source Bem Sucedidas: Experiências do PUG-PE
 
Sistemas de Recomendação e Mobilidade
Sistemas de Recomendação e MobilidadeSistemas de Recomendação e Mobilidade
Sistemas de Recomendação e Mobilidade
 

Introdução ao Python Científico com Scipy e Numpy

  • 1. Computação Científica com Python A cobra também é inteligente! 1
  • 2. Membro do Muriçoca Labs - Labs de Projetos com Machine Learning 2
  • 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. 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. 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. Uso de software facilita muito! 012*2-#"+,-$3$ 4)*(".)5"+,-$ !"#$%&'$()* 4(5657$%8% +,$-./$0&1(** !"#"$%-"./*)*$ !"#"$%&'()*)+,-$ .'/,'#$% !"#$%&'()"()$% .'/0"1'23'* *('+,"()$%*--% Marcel Caraciolo - @marcelcaraciolo 6
  • 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
  • 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. 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
  • 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. 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. 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. 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. 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. 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. Plotando com o PyLab !!!"#$%$&'()*+,&*-"*./+*01" $ ipython --pylab >>> plot(x,sin(x)) >>> plot(x,cos(x)) >>> legend([‘sin’, ‘cos’]) 20 Marcel Caraciolo - @marcelcaraciolo 18
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Explorando o Scipy !"#$%&'()*&+,-#./0123' Clusterização (scipy.cluster) ! !"#$%&'(')*%+' Marcel Caraciolo - @marcelcaraciolo 30
  • 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. 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. 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. Computação Científica com Python A cobra também é inteligente! marcel{@orygens, @muricoca} . com 34