Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2
Machine Learning es aprendizaje automático
3
Programación tradicional VS Machine Learning
Programación tradicional
Datos
Computadora Resultado
Programa
Machine Learning
Datos
Computadora Programa
Resultado
4
Programación tradicional VS Machine Learning
Un ejemplo:
el SPAM
5
Multidisciplinar
6
Ejemplo de aplicación
Detección de fraude en tarjetas de crédito
7
Ejemplo de aplicación
Recomendaciones de compra
8
Otros ejemplos de aplicación
9
Principales categorías de ML
• Clasificación
• Regresión
• Segmentación (Clustering)
• Asociación
10
Clasificación
Objetivo: Predecir una categoría
Soleado
Ventoso
Lluvioso 11
Nublado
Otros ejemplos de clasificación
• Propensión de compra
• Clasificación de un tumor como benignos o malignos (Binaria)
• Determinación de riesgo (alto, medio, bajo) para una solicitud
de préstamo.
• Sentimiento en las redes sociales como positivo, negativo o
neutro
12
Regresión
Objetivo: Predecir un valor numérico
13
Otros ejemplos de regresión
• Pronóstico de ventas
• Valor de cliente a futuro
• Predecir cantidad de lluvia
14
Segmentación (Clustering)
Objetivo: Organizar en grupos homogéneos
Poco valor
Valor Medio
Alto valor 15
Otros ejemplos de segmentación
16
Asociación
17
Otros ejemplos de asociación
18
Aprendizaje supervisado y no supervisado
Supervisado No Supervisado
Target Sin Target
Clasificación Segmentación
Regresión Asociación
19
Aplicaciones
Tipologías de problemas
20
Python para Analisis de Datos
Introducción a las librerías de Python para
análisis de datos
Contenido del Tutorial
Graficar datos
Estadística descriptiva
Estadística Inferencial
22
Librerías de Python para Análisis de Datos
y muchas más…
23
Librerías de Python para Análisis de Datos
NumPy:
Introduce objetos multidimensionales vectores(array) y matrices ,
también tiene funciones avanzadas de matemáticas y estadísticas.
Link: http://www.numpy.org/
24
Python Libraries for Data Science
SciPy:
Conjunto de algoritmos para algebra lineal, ecuaciones diferenciales,
integración numérica, optimización, estadística y más.
Construido en NumPy
Link: https://www.scipy.org/scipylib/
25
Python Libraries for Data Science
Pandas:
Agrega estructura de datos y herramientas diseñadas para trabajar
con tablas similar a series y DataFrame de R.
Tiene herramientas de manipulación de datos: manipulación:
reorganización, unión, ordenación, sustracción, agregación etc.
Link: http://pandas.pydata.org/
26
Python Libraries for Data Science
SciKit-Learn:
Tiene algoritmos de machine learning: clasificación, regresión,
clustering, validación de modelos, etc.
Link: http://scikit-learn.org/
27
Python Libraries for Data Science
matplotlib:
Es la librería 2D de python, tiene figuras de calidad y gran cantidad de
formatos.
Link: https://matplotlib.org/
28
Python Libraries for Data Science
Seaborn:
Basado en matpltlib
Link: https://seaborn.pydata.org/
29
Herramientas de trabajo
• https://colab.research.google.com/
30
Inicia Jupyter notebook
31
Importando librerias en Python
32
Leyendo datos con pandas
33
Leyendo datos en colab.research.google.com
from google.colab import files
In [ ]: import pandas as pd
import io
uploaded = files.upload()
for fn in uploaded.keys():
In [ ]: print('User uploaded file "{name}" with length {length}
bytes'.format(name=fn, length=len(uploaded[fn])))
Ejemplo de salida:
df = pd.read_csv(io.StringIO(uploaded['iris.csv'].decode('utf-8')))
In [ ]:
df.head()
34
Explorando data frames
Out[3]:
35
Manos a la obra Ejercicios
36
Tipos de datos en un Data Frame
datetime64, timedelta[ns] N/A (but see the datetime module Valores que indican tiempo.
in Python’s standard library)
37
Tipos de datos en un Data Frame
Out[4]: dtype('int64')
38
Data Frames: Atributos
df.attribute description
dtypes Lista los tipos de las columnas
columns Lista los nombres de las columnas
axes Listas las etiquetas de las filas y los nombres de las columnas
ndim Numero de dimensiones
size Numero de elementos
shape Devuelve una tuple indicando las dimensiones
values Representación de los datos de numpy
39
Ejercicios
40
Metodos Data Frames
A diferencia de los atributos, los métodos de python tienen paréntesis.
Todos los atributos y métodos se pueden listar con la función dir() función: dir(df)
41
Ejercicios
42
Seleccionando una columna en un Data Frame
43
Ejercicios
conteo);
44
Data Frames: Método groupby
Usando el método "agrupar por" podemos:
• Dividir los datos en grupos según algunos criterios.
• Calcular estadísticas (o aplicar una función) a cada grupo.
• Similar a la función dplyr () en R
In [ ]:
#Group data using rank
df_rank = df.groupby(['rank'])
In [ ]: #Calculate mean value for each numeric column per each group
df_rank.mean()
45
Data Frames: Método groupby
Una vez creado el objeto groupby, podemos calcular varias estadísticas para cada
grupo:
Nota:
Si se utilizan corchetes individuales para especificar la columna (por ejemplo, salario), entonces la salida es
un objeto de la Serie Pandas. Cuando se usan corchetes dobles, la salida es un marco de datos
46
Data Frames: Método groupby
47
Data Frame: Filtros
Para crear subconjutos de los datos podemos aplicar indexación booleana. Esta
indexación se conoce comúnmente como un filtro. Por ejemplo, si queremos
filtrar las filas en las que el valor del salario es mayor que $ 120K:
48
Data Frames: Particionar
49
Data Frames: Particionar
In [ ]:
#Select column salary:
df['salary']
Cuando necesitamos seleccionar más de una columna y / o hacer que la salida sea
un DataFrame, debemos usar corchetes dobles:
50
Data Frames: Seleccionando Filas
Observe que la primera fila tiene una posición 0 y se omite el último valor del rango:
Entonces, para el rango de 0:10, las primeras 10 filas se devuelven con las posiciones
que comienzan con 0 y terminan con 9
51
Data Frames: Método loc
Si necesitamos seleccionar un rango de filas, usando sus etiquetas podemos usar el
método loc:
In [ ]: #Select rows by their labels:
df_sub.loc[10:20,['rank','sex','salary']]
Out[ ]:
52
Data Frames: Método iloc
Out[ ]:
53
Data Frames: Método iloc (resumen)
54
Data Frames: Ordenación
Out[ ]:
55
Data Frames: Sorting
Out[ ]:
56
Valores Faltantes
Out[ ]:
57
Valores Faltantes
df.method() description
dropna() Elimina observaciones con faltantes
58
Valores Faltantes
• Al sumar los datos, los valores faltantes serán tratados como cero
• Si faltan todos los valores, la suma será igual a NaN
• Los métodos cumsum () y cumprod () ignoran los valores faltantes pero los
conservan en las matrices resultantes
• Los valores que faltan en el método GroupBy están excluidos (como en R)
• Muchos métodos de estadística descriptiva tienen la opción skipna para
controlar si se deben excluir los datos faltantes. Este valor se establece en True
de forma predeterminada (a diferencia de R)
59
Funciones de agregación en Pandas
Funciones comunes:
min, max
count, sum, prod
mean, median, mode, mad
std, var
60
Funciones de agregación en Pandas
Out[ ]:
61
Estadística descriptiva básica
df.method() description
describe Estadisticas basicas(count, mean, std, min, quantiles, max)
skew asimetria
kurt curtosis
62
Gráficos para explorar datos
In [ ]: %matplotlib inline
63
Gráficos
Descripción
distplot histograma
barplot estimación de la tendencia central de una variable numérica
violinplot similar a boxplot, también muestra la densidad de
probabilidad de los datos
jointplot Grafico de dispersión
regplot Grafica de regresión
pairplot Pairplot
boxplot boxplot
swarmplot Grafico de dispersión categórico
factorplot Grafico general categórico
64
Análisis estadístico básico
Statsmodel y Scikit-learn - ambos tienen un número de función para el
análisis estadístico la primera de ellas se utiliza principalmente para análisis
regular usando las fórmulas de estilo R, mientras que scikit-learn más es a la
medida para el aprendizaje de máquina.
Statsmodels:
regresiones lineales
ANOVA
prueba de hipótesis y mucho más...
Scikit-learn:
máquinas de soporte vectorial
kmeans
aleatorio bosques
muchos más...
65
Construyendo Sistemas de Machine Learning
con Python
“Life is short
you need Python”
--
Bruce Eckel
Dataset
Training
Testing
• 0 Fold Train Accuracy:0.716667,
Test Accuracy:0.733333
• 1 Fold Train Accuracy:0.766667,
Test Accuracy:0.633333
• 2 Fold Train Accuracy:0.783333,
Test Accuracy:0.566667
• 3 Fold Train Accuracy:0.691667,
Test Accuracy:0.866667
• 4 Fold Train Accuracy:0.741667,
Test Accuracy:0.733333
From Logistic Regression
to Support Vector Machine
sklearn.svm.SVC LogisticRegression
• C: Penalty parameter. • C: Penalty parameter.
• Kernel: rbf, poly, linear. • penalty: l1 or l2.
• Degree: for polynomial kernel. • fit_intercept:
• Gamma: for rbf kernel. • solve: lbfgs, lblinear, netwon-cg.
• Etc. • Etc.
• Vowpal Wabbit
• Microsoft Research and (previously) Yahoo! Research
• Fast and scalable tool for learning linear model.
• Mahout on Hadoop.
• MlLib on Spark.
• Petuum.
• Play with more UCI datasets.
• archive.ics.uci.edu/ml