SlideShare uma empresa Scribd logo
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

PDF
Construindo Soluções Científicas com Big Data & MapReduce
PDF
(A13) LabMM3 - JavaScript - Arrays multidimensionais
PDF
(A12) LabMM3 - JavaScript - Arrays
PDF
Introdução a python módulo b
PDF
Tcc apresentacao1
PDF
Fugindo das armadilhas do MVC
PDF
Proxy, Man-In-The-Middle e testes
Construindo Soluções Científicas com Big Data & MapReduce
(A13) LabMM3 - JavaScript - Arrays multidimensionais
(A12) LabMM3 - JavaScript - Arrays
Introdução a python módulo b
Tcc apresentacao1
Fugindo das armadilhas do MVC
Proxy, Man-In-The-Middle e testes

Mais procurados (7)

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

Destaque (20)

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

Semelhante a Computação Científica com Python, Numpy e Scipy (20)

PDF
Introdução ao framework CakePHP
PDF
346
PDF
346
PDF
Livro_VersãoPublicada_STL_ excelavancado.pdf
PDF
Ms05-resmat
PDF
PDF
Módulo 5 análise das demonstrações contábeis
PDF
apostila.pdf
PDF
Methodologies background hiberno romanesque metalwork
PPTX
Otimização e Escalabilidade
PDF
EXIGÊNCIAS DE CERTIDÕES NEGATIVAS PARA LEVANTAMENTO DE VALORES DECORRENTES DE...
PDF
Apresentações alta performance
DOCX
Pg2
DOCX
Pgads42
PDF
PDF
Curso de Gestão de Comunicação Empresarial e Relações Públicas
PDF
Introdução a python módulo a
PDF
Pythonbasico
 
PDF
Introdução ao framework CakePHP
346
346
Livro_VersãoPublicada_STL_ excelavancado.pdf
Ms05-resmat
Módulo 5 análise das demonstrações contábeis
apostila.pdf
Methodologies background hiberno romanesque metalwork
Otimização e Escalabilidade
EXIGÊNCIAS DE CERTIDÕES NEGATIVAS PARA LEVANTAMENTO DE VALORES DECORRENTES DE...
Apresentações alta performance
Pg2
Pgads42
Curso de Gestão de Comunicação Empresarial e Relações Públicas
Introdução a python módulo a
Pythonbasico
 

Mais de Marcel Caraciolo (18)

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

Último (16)

PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Arquitetura de computadores - Memórias Secundárias
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
COBITxITIL-Entenda as diferença em uso governança TI
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Custos e liquidação no SAP Transportation Management, TM130 Col18
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Processos na gestão de transportes, TM100 Col18
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Arquitetura de computadores - Memórias Secundárias
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14

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

  • 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