SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Introducci´on al aprendizaje estad´ıstico con Python
4to Encuentro Regional de Software Libre.
Talca, Octubre 2013.
Dr. Sergio Hern´andez.
shernandez@ucm.cl
Facultad de Ciencias de la Ingenier´ıa
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Introducci´on
El t´ermino Aprendizaje Estad´ıstico se refiere a un coonjunto de
t´ecnicas y modelos para analizar conjuntos de datos complejos.
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Introducci´on
El t´ermino Aprendizaje Estad´ıstico se refiere a un coonjunto de
t´ecnicas y modelos para analizar conjuntos de datos complejos.
Con la explosi´on de los datos grandes (a.k.a. Big Data), ha
resurgido el inter´es en utliizar estas t´ecnicas en problemas de miner´ıa
de datos con aplicaciones en marketing, finanzas, agricultura de
precisi´on as´ı como otras ´areas donde se requiera alg´un proceso de
reconocimiento de patrones.
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Python para datos grandes
Big Data Volumen
VelocidadVariedad
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Python para datos grandes
Big Data
Volumen
Pydoop
mrjob
HadooPy
Velocidad
Cython
PyCUDA
NumbaPro
Variedad
NoSQL
HappyBase
HDF5
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
NumPy
NumPy es el coraz´on de de los paquetes de Python para realizar
computaci´on cient´ıfica. Agrega la capacidad para modelar matrices como
arreglos N-dimensionales y realizar operaciones de ´algebra lineal sobre
ellos.
Aw = b


3 6 −5
1 −3 2
5 −1 4




w1
w2
w3

 =


12
−2
10


#!/ usr/bin/ python
import numpy as np
A=np.array ([[3,6,-5],
[1,-3,2],
[5 , -1 ,4]])
b=np.array ([12 , -2 ,10])
w=np.linalg.inv(A).dot(b)
print(w)
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
SciPy y Scikit-Learn
SciPy Es un paquete de computaci´on cient´ıfica que utiliza NumPy para
resolver problemas num´ericos en ingenier´ıa y ciencias, tales como
optimizaci´on, integraci´on, c´alculo de valores propios, etc.
y = wt
x + N(0, σ2
)
E(w) =
n
i=1
(yi − wt
xi )2
(XT
X) ˆw = Xy
ˆw = (XT
X)−1
Xy
#!/ usr/bin/ python
import numpy as np
from sklearn import linear_model
from sklearn.datasets. samples_generator
import make_regression
X, y = make_regression (n_samples =100 ,
n_features =2, n_informative =1, noise
=50)
regr = linear_model . LinearRegression ()
regr.fit(X, y)
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
SciPy y Scikit-Learn
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Conteo de personas en video
Clustering de im´agenes
Scikits
Existe una variedad de add-ons para SciPy denominados SciKits1
,
los cuales se encuentran bajo licencias OSI (Open Source Initiative).
1http://scikits.appspot.com/
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Conteo de personas en video
Clustering de im´agenes
Scikits
Existe una variedad de add-ons para SciPy denominados SciKits1
,
los cuales se encuentran bajo licencias OSI (Open Source Initiative).
Las diferencias entre los SciKits con SciPy y NumPy son:
Los SciKits son m´as espec´ıficos que SciPy y NumPy.
Los paquetes incluidos en SciKits tienen licencias GPL (o similares),
las cuales son incompatibles con las licencias BSD de SciPy.
Los paquetes podr´ıan ser incluidos en la distribuci´on de SciPy pero
est´an a´un siendo desarrollados.
1http://scikits.appspot.com/
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Conteo de personas en video
Clustering de im´agenes
Scikits
Existe una variedad de add-ons para SciPy denominados SciKits1
,
los cuales se encuentran bajo licencias OSI (Open Source Initiative).
Las diferencias entre los SciKits con SciPy y NumPy son:
Los SciKits son m´as espec´ıficos que SciPy y NumPy.
Los paquetes incluidos en SciKits tienen licencias GPL (o similares),
las cuales son incompatibles con las licencias BSD de SciPy.
Los paquetes podr´ıan ser incluidos en la distribuci´on de SciPy pero
est´an a´un siendo desarrollados.
Algunos SciKits proveen m´etodos y modelos para aplicaciones en
ingenier´ıa aeron´autica, hidrolog´ıa, observaci´on de la tierra y
procesamiento de im´agentes entre otros.
1http://scikits.appspot.com/
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Conteo de personas en video
Clustering de im´agenes
SciKit Image
Una de las ventajas de usar SciPy y los SciKits es que podemos
combinar las habilidades de cada paquete por separado de modo de
realizar aplicaciones m´as complejas que las que incorpora el toolkit
original.
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Conteo de personas en video
Clustering de im´agenes
SciKit Image
Una de las ventajas de usar SciPy y los SciKits es que podemos
combinar las habilidades de cada paquete por separado de modo de
realizar aplicaciones m´as complejas que las que incorpora el toolkit
original.
Un ejemplo es el SciKit-Image, el cual extiende SciPy incorporando
t´ecnicas de visi´on computacional y procesamiento de im´agenes.
0 50 100 150 200 250 300 350
0
50
100
150
200
250
300
0 50 100 150 200 250 300 350
0
50
100
150
200
250
300
#!/ usr/bin/ python
from skimage import data , io , filter
image = data.coins ()
edges = filter.sobel(image)
io.imshow(edges)
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Conteo de personas en video
Clustering de im´agenes
Detecci´on y conteo de personas en video (Trabajo de Tesis
de Arturo Rojas)
HOG2
(Histograma de Gradientes Orientados) es un poderoso
descriptor que permite detectar objetos en im´agenes.
Input image Histogram of Oriented Gradients
Input image Histogram of Oriented Gradients
Input image Histogram of Oriented Gradients
#!/ usr/bin/ python
from skimage import data , io , filter
from skimage.feature import hog
from skimage import data , color , exposure
coll = io. ImageCollection (data_dir + ’/*.
png ’)
rgb_image = coll [1]
image = color.rgb2gray(rgb_image)
fd , hog_image = hog(image , orientations =8,
pixels_per_cell =(4, 4),
cells_per_block =(1, 1), visualise=True
)
2Dalal, N. and Triggs, B., ”Histograms of Oriented Gradients for Human Detection” IEEE Computer Society Conference on
Computer Vision and Pattern Recognition, 2005, San Diego, CA, USA.Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Conteo de personas en video
Clustering de im´agenes
Regresi´on log´ıstica
Utilizando el descriptor HOG es posible entrenar un modelo estad´ıstico
que pueda discriminar escenas que contienen personas de otras que no
contienen personas.
p = σ(wt
x)
σ(wt
x) =
1
1 + exp(−wtx)
y ∼ Bernoulli(p)
#!/ usr/bin/ python
from sklearn. linear_model import
LogisticRegression
from sklearn. preprocessing import
StandardScaler
X=loadtxt(’train.csv ’)
X = StandardScaler (). fit_transform (X
)
y=loadtxt(’target.csv’)
C=1e0
classifier= LogisticRegression (C=C,
penalty=’l1’, tol =0.001)
classifier.fit(X, y)
coef=classifier.coef_.ravel ()
plt.imshow(coef.reshape (68 ,66) ,
interpolation =’nearest ’,cmap=’
binary ’,vmax=1,vmin =0)
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Conteo de personas en video
Clustering de im´agenes
Regresi´on log´ıstica
0 10 20 30 40 50 60
0
10
20
30
40
50
60
Figure : Coeficientes estimados con el modelo de regresi´on log´ıstica
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Conteo de personas en video
Clustering de im´agenes
Regresi´on de Poisson
Aparte de detectar la presencia o no presencia de una persona, ahora se
requiere contar (estimar el n´umero) de personas en una escena. Para esto
hacemos uso de la distribuci´on de Poisson3
.
λ = exp(wt
x)
y ∼ Poisson(λ)
#!/ usr/bin/ python
import numpy as np
import statsmodels.api as sm
from sklearn. preprocessing import
StandardScaler
X=loadtxt(’train.csv ’)
X = StandardScaler (). fit_transform (X
)
y=loadtxt(’target.csv’)
count = sm.Poisson(X, y)
count.fit(method="newton")
3Chan, A. B., and N. Vasconcelos.”Counting people with low-level features and Bayesian regression” IEEE transactions on image
processing: a publication of the IEEE Signal Processing Society 21.4 (2012): 2160.
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Conteo de personas en video
Clustering de im´agenes
Estimaci´on de la madurez fen´olica de la uva (Trabajo de
Tesis de David Andrade)
LDA (Latent Dirichlet Allocation) es un modelo generativo para datos
discretos que permite modelar distribuciones traslapadas
(intercambiables) de color 4
.
α ∼ Dirichlet(λα)
zn ∼ Multinomial(α)
β ∼ Dirichlet(λβ)
wn ∼ p(wn|zn, β)
#!/ usr/bin/ python
import numpy
lambda = numpy.ones (10, dtype=numpy.
float_)
for d in xrange (1000):
alpha = numpy.random.mtrand.
dirichlet(lambda)
samples = numpy.random.multinomial
(100 , topicDist)
wn = numpy.zeros (25, dtype=numpy.
int_)
for t in xrange (10):
wn += numpy.random.multinomial(
samples[t],topics[t])
4FONDEF IDeA CA12i10236 Estimaci´on de la Madurez Fen´olica del la Uva basada en Im´agenes de la SemillaDr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Conteo de personas en video
Clustering de im´agenes
Latent Dirichlet Allocation
0 5 10 15 20
0
2
4
6
8
Figure : Ejemplo de un modelo
generativo para distribuciones de color.
En este ejemplo se consideran 10
t´opicos y una cuantizaci´on de 25 bins.
Figure : Muestras aleatorias del modelo
generativo para distribuciones de color.
Cada fila representa una im´agen cuya
distribuci´on de color proviene de una
mezcla de distribuciones multinomiales.
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Conteo de personas en video
Clustering de im´agenes
Cuantizaci´on de im´agenes
Imagen Original
Figure : Imagen original de semillas de
uva
0 50 100 150 200 250 3000.000
0.002
0.004
0.006
0.008
0.010
0.012
0.014 Histograma, 256 bins
0 20 40 60 80 100 120 1400.000
0.002
0.004
0.006
0.008
0.010
0.012
0.014 Histograma, 128 bins
0 10 20 30 40 50 60 700.000
0.002
0.004
0.006
0.008
0.010
0.012
0.014 Histograma, 64 bins
0 5 10 15 20 25 30 350.000
0.002
0.004
0.006
0.008
0.010
0.012 Histograma, 32 bins
Figure : Cuantizaciones de color
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Python en la investigaci´on reproducible
Python permite crear un pipeline desde la generaci´on de datos y
extracci´on de caracter´ısticas hasta los modelos estad´ısticos que se
utilizan para explicar los datos.
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Python en la investigaci´on reproducible
Python permite crear un pipeline desde la generaci´on de datos y
extracci´on de caracter´ısticas hasta los modelos estad´ısticos que se
utilizan para explicar los datos.
A nivel de investigaci´on, esto permite reproducir los resultados
obtenidos por distintos cient´ıficos y de esta manera validar que los
resultados son conmensurables.
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Python en la investigaci´on reproducible
Python permite crear un pipeline desde la generaci´on de datos y
extracci´on de caracter´ısticas hasta los modelos estad´ısticos que se
utilizan para explicar los datos.
A nivel de investigaci´on, esto permite reproducir los resultados
obtenidos por distintos cient´ıficos y de esta manera validar que los
resultados son conmensurables.
https://github.com/sherna90/mlcode
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python

Más contenido relacionado

Similar a Aprendizaje Estadístico con Python - 4to Encuentro Software libre 2013

INTERFAZ GRÁFICA PARA OPENCV EN PYTHON
INTERFAZ GRÁFICA PARA OPENCV EN PYTHONINTERFAZ GRÁFICA PARA OPENCV EN PYTHON
INTERFAZ GRÁFICA PARA OPENCV EN PYTHONRainer Arencibia
 
Prueba informatica
Prueba informaticaPrueba informatica
Prueba informaticaJuan Gunsha
 
Introduccin a la ingeniera de sistemas up load
Introduccin a la ingeniera de sistemas up loadIntroduccin a la ingeniera de sistemas up load
Introduccin a la ingeniera de sistemas up loadalejo2118
 
Introduccin a la ingeniera de sistemas up load
Introduccin a la ingeniera de sistemas up loadIntroduccin a la ingeniera de sistemas up load
Introduccin a la ingeniera de sistemas up loadalejo2118
 
Introduccin a la ingeniera de sistemas up load
Introduccin a la ingeniera de sistemas up loadIntroduccin a la ingeniera de sistemas up load
Introduccin a la ingeniera de sistemas up loadalejo2118
 
Presentacion II jornadas de Lógica, Computación e Inteligencia Artificial
Presentacion II jornadas de Lógica, Computación e Inteligencia ArtificialPresentacion II jornadas de Lógica, Computación e Inteligencia Artificial
Presentacion II jornadas de Lógica, Computación e Inteligencia ArtificialJoaquín Borrego-Díaz
 
Introducción a la Programación Orientada a Objetos
Introducción a la Programación Orientada a ObjetosIntroducción a la Programación Orientada a Objetos
Introducción a la Programación Orientada a ObjetosDEDTE
 
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdfCEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdfLuis Beltran
 
Inteligencia artificia 2010 ii
Inteligencia artificia 2010 iiInteligencia artificia 2010 ii
Inteligencia artificia 2010 iiSilencerz
 
Plan anual didactico
Plan anual didacticoPlan anual didactico
Plan anual didacticoPaul Paucar
 

Similar a Aprendizaje Estadístico con Python - 4to Encuentro Software libre 2013 (20)

INTERFAZ GRÁFICA PARA OPENCV EN PYTHON
INTERFAZ GRÁFICA PARA OPENCV EN PYTHONINTERFAZ GRÁFICA PARA OPENCV EN PYTHON
INTERFAZ GRÁFICA PARA OPENCV EN PYTHON
 
Entrega4-Julián_Delgado-Icesi
Entrega4-Julián_Delgado-IcesiEntrega4-Julián_Delgado-Icesi
Entrega4-Julián_Delgado-Icesi
 
Entrega5
Entrega5Entrega5
Entrega5
 
Cursos IDILab 2015
Cursos IDILab 2015Cursos IDILab 2015
Cursos IDILab 2015
 
Transparencia Trabajo Fin de Máster
Transparencia Trabajo Fin de MásterTransparencia Trabajo Fin de Máster
Transparencia Trabajo Fin de Máster
 
Esrructurhenry2b
Esrructurhenry2bEsrructurhenry2b
Esrructurhenry2b
 
Prueba informatica
Prueba informaticaPrueba informatica
Prueba informatica
 
Introduccin a la ingeniera de sistemas up load
Introduccin a la ingeniera de sistemas up loadIntroduccin a la ingeniera de sistemas up load
Introduccin a la ingeniera de sistemas up load
 
Introduccin a la ingeniera de sistemas up load
Introduccin a la ingeniera de sistemas up loadIntroduccin a la ingeniera de sistemas up load
Introduccin a la ingeniera de sistemas up load
 
Introduccin a la ingeniera de sistemas up load
Introduccin a la ingeniera de sistemas up loadIntroduccin a la ingeniera de sistemas up load
Introduccin a la ingeniera de sistemas up load
 
Presentacion II jornadas de Lógica, Computación e Inteligencia Artificial
Presentacion II jornadas de Lógica, Computación e Inteligencia ArtificialPresentacion II jornadas de Lógica, Computación e Inteligencia Artificial
Presentacion II jornadas de Lógica, Computación e Inteligencia Artificial
 
P informatica
P informaticaP informatica
P informatica
 
2 intro poo
2 intro poo2 intro poo
2 intro poo
 
Introducción a la Programación Orientada a Objetos
Introducción a la Programación Orientada a ObjetosIntroducción a la Programación Orientada a Objetos
Introducción a la Programación Orientada a Objetos
 
Prueba informatica1
Prueba informatica1Prueba informatica1
Prueba informatica1
 
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdfCEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
 
Arduino (2).pdf
Arduino (2).pdfArduino (2).pdf
Arduino (2).pdf
 
Inteligencia artificia 2010 ii
Inteligencia artificia 2010 iiInteligencia artificia 2010 ii
Inteligencia artificia 2010 ii
 
poo
poopoo
poo
 
Plan anual didactico
Plan anual didacticoPlan anual didactico
Plan anual didactico
 

Aprendizaje Estadístico con Python - 4to Encuentro Software libre 2013

  • 1. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones Introducci´on al aprendizaje estad´ıstico con Python 4to Encuentro Regional de Software Libre. Talca, Octubre 2013. Dr. Sergio Hern´andez. shernandez@ucm.cl Facultad de Ciencias de la Ingenier´ıa Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 2. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones Introducci´on El t´ermino Aprendizaje Estad´ıstico se refiere a un coonjunto de t´ecnicas y modelos para analizar conjuntos de datos complejos. Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 3. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones Introducci´on El t´ermino Aprendizaje Estad´ıstico se refiere a un coonjunto de t´ecnicas y modelos para analizar conjuntos de datos complejos. Con la explosi´on de los datos grandes (a.k.a. Big Data), ha resurgido el inter´es en utliizar estas t´ecnicas en problemas de miner´ıa de datos con aplicaciones en marketing, finanzas, agricultura de precisi´on as´ı como otras ´areas donde se requiera alg´un proceso de reconocimiento de patrones. Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 4. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones Python para datos grandes Big Data Volumen VelocidadVariedad Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 5. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones Python para datos grandes Big Data Volumen Pydoop mrjob HadooPy Velocidad Cython PyCUDA NumbaPro Variedad NoSQL HappyBase HDF5 Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 6. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones NumPy NumPy es el coraz´on de de los paquetes de Python para realizar computaci´on cient´ıfica. Agrega la capacidad para modelar matrices como arreglos N-dimensionales y realizar operaciones de ´algebra lineal sobre ellos. Aw = b   3 6 −5 1 −3 2 5 −1 4     w1 w2 w3   =   12 −2 10   #!/ usr/bin/ python import numpy as np A=np.array ([[3,6,-5], [1,-3,2], [5 , -1 ,4]]) b=np.array ([12 , -2 ,10]) w=np.linalg.inv(A).dot(b) print(w) Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 7. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones SciPy y Scikit-Learn SciPy Es un paquete de computaci´on cient´ıfica que utiliza NumPy para resolver problemas num´ericos en ingenier´ıa y ciencias, tales como optimizaci´on, integraci´on, c´alculo de valores propios, etc. y = wt x + N(0, σ2 ) E(w) = n i=1 (yi − wt xi )2 (XT X) ˆw = Xy ˆw = (XT X)−1 Xy #!/ usr/bin/ python import numpy as np from sklearn import linear_model from sklearn.datasets. samples_generator import make_regression X, y = make_regression (n_samples =100 , n_features =2, n_informative =1, noise =50) regr = linear_model . LinearRegression () regr.fit(X, y) Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 8. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones SciPy y Scikit-Learn Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 9. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones Conteo de personas en video Clustering de im´agenes Scikits Existe una variedad de add-ons para SciPy denominados SciKits1 , los cuales se encuentran bajo licencias OSI (Open Source Initiative). 1http://scikits.appspot.com/ Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 10. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones Conteo de personas en video Clustering de im´agenes Scikits Existe una variedad de add-ons para SciPy denominados SciKits1 , los cuales se encuentran bajo licencias OSI (Open Source Initiative). Las diferencias entre los SciKits con SciPy y NumPy son: Los SciKits son m´as espec´ıficos que SciPy y NumPy. Los paquetes incluidos en SciKits tienen licencias GPL (o similares), las cuales son incompatibles con las licencias BSD de SciPy. Los paquetes podr´ıan ser incluidos en la distribuci´on de SciPy pero est´an a´un siendo desarrollados. 1http://scikits.appspot.com/ Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 11. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones Conteo de personas en video Clustering de im´agenes Scikits Existe una variedad de add-ons para SciPy denominados SciKits1 , los cuales se encuentran bajo licencias OSI (Open Source Initiative). Las diferencias entre los SciKits con SciPy y NumPy son: Los SciKits son m´as espec´ıficos que SciPy y NumPy. Los paquetes incluidos en SciKits tienen licencias GPL (o similares), las cuales son incompatibles con las licencias BSD de SciPy. Los paquetes podr´ıan ser incluidos en la distribuci´on de SciPy pero est´an a´un siendo desarrollados. Algunos SciKits proveen m´etodos y modelos para aplicaciones en ingenier´ıa aeron´autica, hidrolog´ıa, observaci´on de la tierra y procesamiento de im´agentes entre otros. 1http://scikits.appspot.com/ Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 12. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones Conteo de personas en video Clustering de im´agenes SciKit Image Una de las ventajas de usar SciPy y los SciKits es que podemos combinar las habilidades de cada paquete por separado de modo de realizar aplicaciones m´as complejas que las que incorpora el toolkit original. Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 13. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones Conteo de personas en video Clustering de im´agenes SciKit Image Una de las ventajas de usar SciPy y los SciKits es que podemos combinar las habilidades de cada paquete por separado de modo de realizar aplicaciones m´as complejas que las que incorpora el toolkit original. Un ejemplo es el SciKit-Image, el cual extiende SciPy incorporando t´ecnicas de visi´on computacional y procesamiento de im´agenes. 0 50 100 150 200 250 300 350 0 50 100 150 200 250 300 0 50 100 150 200 250 300 350 0 50 100 150 200 250 300 #!/ usr/bin/ python from skimage import data , io , filter image = data.coins () edges = filter.sobel(image) io.imshow(edges) Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 14. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones Conteo de personas en video Clustering de im´agenes Detecci´on y conteo de personas en video (Trabajo de Tesis de Arturo Rojas) HOG2 (Histograma de Gradientes Orientados) es un poderoso descriptor que permite detectar objetos en im´agenes. Input image Histogram of Oriented Gradients Input image Histogram of Oriented Gradients Input image Histogram of Oriented Gradients #!/ usr/bin/ python from skimage import data , io , filter from skimage.feature import hog from skimage import data , color , exposure coll = io. ImageCollection (data_dir + ’/*. png ’) rgb_image = coll [1] image = color.rgb2gray(rgb_image) fd , hog_image = hog(image , orientations =8, pixels_per_cell =(4, 4), cells_per_block =(1, 1), visualise=True ) 2Dalal, N. and Triggs, B., ”Histograms of Oriented Gradients for Human Detection” IEEE Computer Society Conference on Computer Vision and Pattern Recognition, 2005, San Diego, CA, USA.Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 15. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones Conteo de personas en video Clustering de im´agenes Regresi´on log´ıstica Utilizando el descriptor HOG es posible entrenar un modelo estad´ıstico que pueda discriminar escenas que contienen personas de otras que no contienen personas. p = σ(wt x) σ(wt x) = 1 1 + exp(−wtx) y ∼ Bernoulli(p) #!/ usr/bin/ python from sklearn. linear_model import LogisticRegression from sklearn. preprocessing import StandardScaler X=loadtxt(’train.csv ’) X = StandardScaler (). fit_transform (X ) y=loadtxt(’target.csv’) C=1e0 classifier= LogisticRegression (C=C, penalty=’l1’, tol =0.001) classifier.fit(X, y) coef=classifier.coef_.ravel () plt.imshow(coef.reshape (68 ,66) , interpolation =’nearest ’,cmap=’ binary ’,vmax=1,vmin =0) Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 16. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones Conteo de personas en video Clustering de im´agenes Regresi´on log´ıstica 0 10 20 30 40 50 60 0 10 20 30 40 50 60 Figure : Coeficientes estimados con el modelo de regresi´on log´ıstica Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 17. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones Conteo de personas en video Clustering de im´agenes Regresi´on de Poisson Aparte de detectar la presencia o no presencia de una persona, ahora se requiere contar (estimar el n´umero) de personas en una escena. Para esto hacemos uso de la distribuci´on de Poisson3 . λ = exp(wt x) y ∼ Poisson(λ) #!/ usr/bin/ python import numpy as np import statsmodels.api as sm from sklearn. preprocessing import StandardScaler X=loadtxt(’train.csv ’) X = StandardScaler (). fit_transform (X ) y=loadtxt(’target.csv’) count = sm.Poisson(X, y) count.fit(method="newton") 3Chan, A. B., and N. Vasconcelos.”Counting people with low-level features and Bayesian regression” IEEE transactions on image processing: a publication of the IEEE Signal Processing Society 21.4 (2012): 2160. Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 18. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones Conteo de personas en video Clustering de im´agenes Estimaci´on de la madurez fen´olica de la uva (Trabajo de Tesis de David Andrade) LDA (Latent Dirichlet Allocation) es un modelo generativo para datos discretos que permite modelar distribuciones traslapadas (intercambiables) de color 4 . α ∼ Dirichlet(λα) zn ∼ Multinomial(α) β ∼ Dirichlet(λβ) wn ∼ p(wn|zn, β) #!/ usr/bin/ python import numpy lambda = numpy.ones (10, dtype=numpy. float_) for d in xrange (1000): alpha = numpy.random.mtrand. dirichlet(lambda) samples = numpy.random.multinomial (100 , topicDist) wn = numpy.zeros (25, dtype=numpy. int_) for t in xrange (10): wn += numpy.random.multinomial( samples[t],topics[t]) 4FONDEF IDeA CA12i10236 Estimaci´on de la Madurez Fen´olica del la Uva basada en Im´agenes de la SemillaDr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 19. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones Conteo de personas en video Clustering de im´agenes Latent Dirichlet Allocation 0 5 10 15 20 0 2 4 6 8 Figure : Ejemplo de un modelo generativo para distribuciones de color. En este ejemplo se consideran 10 t´opicos y una cuantizaci´on de 25 bins. Figure : Muestras aleatorias del modelo generativo para distribuciones de color. Cada fila representa una im´agen cuya distribuci´on de color proviene de una mezcla de distribuciones multinomiales. Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 20. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones Conteo de personas en video Clustering de im´agenes Cuantizaci´on de im´agenes Imagen Original Figure : Imagen original de semillas de uva 0 50 100 150 200 250 3000.000 0.002 0.004 0.006 0.008 0.010 0.012 0.014 Histograma, 256 bins 0 20 40 60 80 100 120 1400.000 0.002 0.004 0.006 0.008 0.010 0.012 0.014 Histograma, 128 bins 0 10 20 30 40 50 60 700.000 0.002 0.004 0.006 0.008 0.010 0.012 0.014 Histograma, 64 bins 0 5 10 15 20 25 30 350.000 0.002 0.004 0.006 0.008 0.010 0.012 Histograma, 32 bins Figure : Cuantizaciones de color Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 21. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones Python en la investigaci´on reproducible Python permite crear un pipeline desde la generaci´on de datos y extracci´on de caracter´ısticas hasta los modelos estad´ısticos que se utilizan para explicar los datos. Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 22. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones Python en la investigaci´on reproducible Python permite crear un pipeline desde la generaci´on de datos y extracci´on de caracter´ısticas hasta los modelos estad´ısticos que se utilizan para explicar los datos. A nivel de investigaci´on, esto permite reproducir los resultados obtenidos por distintos cient´ıficos y de esta manera validar que los resultados son conmensurables. Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
  • 23. Introducci´on Modelos estad´ısticos Aplicaciones de aprendizaje estad´ıstico en visi´on computacional Conclusiones Python en la investigaci´on reproducible Python permite crear un pipeline desde la generaci´on de datos y extracci´on de caracter´ısticas hasta los modelos estad´ısticos que se utilizan para explicar los datos. A nivel de investigaci´on, esto permite reproducir los resultados obtenidos por distintos cient´ıficos y de esta manera validar que los resultados son conmensurables. https://github.com/sherna90/mlcode Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python