Machine Learning Con Python Aprendizaje Supervisado (Spanish Edition) (Ligdimar González (González, Ligdimar) )
Machine Learning Con Python Aprendizaje Supervisado (Spanish Edition) (Ligdimar González (González, Ligdimar) )
Machine Learning Con Python Aprendizaje Supervisado (Spanish Edition) (Ligdimar González (González, Ligdimar) )
Aprendizaje Supervisado
Ligdi González
2019
INDICE
Capítulo 1
INTRODUCCIÓN
MACHINE LEARNING CON PYTHON
Capítulo 2
PREPARAR EL ENTORNO DE PYTHON
PYTHON
LIBRERÍAS PARA LA CIENCIA DE DATOS
LIBRERÍAS PARA LA VISUALIZACIÓN DE DATOS
LIBRERÍAS PARA MACHINE LEARNING
INSTALAR EL ENTORNO DE PYTHON
TRABAJANDO CON EL IDE SPYDER
TRABAJANDO CON EL IDE JUPYTER NOTEBOOK
Capítulo 3
CURSOS INTENSIVOS DE PYTHON Y SCIPY
CURSO INTENSIVO DE PYTHON
CURSO INTENSIVO DE NUMPY
CURSO INTENSIVO DE PANDAS
CURSO INTENSIVO DE MATPLOTLIB
Capítulo 4
CARGAR LOS DATOS
CONSIDERACIONES DE LOS ARCHIVOS CSV
CONJUNTO DE DATOS: DIABETES DE LOS INDIOS PIMA
CARGAR ARCHIVOS CSV UTILIZANDO PYTHON
CARGAR ARCHIVOS UTILIZANDO PYTHON
Capítulo 5
ENTENDIENDO LOS DATOS
VERIFICAR LOS DATOS
DIMENSIONANDO LOS DATOS
TIPOS DE DATOS
DESCRIPCIÓN ESTADÍSTICA
DISTRIBUCIÓN DE CLASES (PROBLEMAS DE CLASIFICACIÓN)
CORRELACIÓN ENTRE CARACTERÍSTICAS
CONSIDERACIONES ADICIONALES
Capítulo 6
VISUALIZANDO LOS DATOS
GRÁFICAR CON UNA SOLA VARIABLES
GRÁFICAR CON VARIAS VARIABLES
Capítulo 7
PROCESAMIENTO DE LOS DATOS
SEPARACIÓN DE LOS DATOS
ESTANDARIZACIÓN DE LOS DATOS
NORMALIZACIÓN DE LOS DATOS
ELIMINACIÓN DE COLUMNAS
Capítulo 8
SELECCIONANDO CARACTERÍSTICAS
IMPORTANCIA DE LAS CARACTERÍSTICAS
MÉTODOS DE FILTRO
MÉTODOS DE ENVOLTURA
MÉTODOS INTEGRADOS
Capítulo 9
ALGORITMOS DE CLASIFICACIÓN
REGRESIÓN LOGÍSTICA
K - VECINOS MÁS CERCANOS
MÁQUINAS DE VECTORES DE SOPORTE
BAYESIANO INGENUO (NAIVE BAYES)
ÁRBOLES DE DECISIÓN CLASIFICACIÓN
BOSQUES ALEATORIOS CLASIFICACIÓN
Capítulo 10
MÉTRICAS DE RENDIMIENTO ALGORITMOS DE CLASIFICACIÓN
MATRIZ DE CONFUSIÓN
REPORTE DE CLASIFICACIÓN
ÁREA BAJO LA CURVA
Capítulo 11
ALGORITMOS DE REGRESIÓN
REGRESIÓN LINEAL
REGRESIÓN POLINOMEAL
VECTORES DE SOPORTE REGRESIÓN
ÁRBOLES DE DECISIÓN REGRESIÓN
BOSQUES ALEATORIOS REGRESIÓN
Capítulo 12
MÉTRICAS DE RENDIMIENTO ALGORITMOS DE REGRESIÓN
ERROR CUADRÁTICO MEDIO (RMSE)
ERROR ABSOLUTO MEDIO (MAE)
Capítulo 13
PROYECTO DE MACHINE LEARNING - CLASIFICACIÓN
DEFINICIÓN DEL PROBLEMA
IMPORTAR LAS LIBRERÍAS
CARGAR EL CONJUNTO DE DATOS
ENTENDIENDO LOS DATOS
VISUALIZANDO LOS DATOS
SEPARACIÓN DE LOS DATOS
SELECCIONANDO CARACTERÍSTICAS
PROCESAMIENTO DE LOS DATOS
SEPARACIÓN DE LOS DATOS
APLICACIÓN DE LOS ALGORITMOS DE CLASIFICACIÓN
Capítulo 14
PROYECTO DE MACHINE LEARNING - REGRESIÓN
DEFINICIÓN DEL PROBLEMA
IMPORTAR LAS LIBRERÍAS
CARGAR EL CONJUNTO DE DATOS
ENTENDIENDO LOS DATOS
VISUALIZANDO LOS DATOS
SEPARACIÓN DE LOS DATOS
SEPARACIÓN DE LOS DATOS
APLICACIÓN DE LOS ALGORITMOS DE REGRESIÓN
Capítulo 15
CONTINUAR APRENDIENDO MACHINE LEARNING
CONSTRUIR PLANTILLAS PARA PROYECTOS
CONJUNTOS DE DATOS PARA PRÁCTICA
Capítulo 16
OBTENER MÁS INFORMACIÓN
CONSEJO GENERAL
AYUDA CON PYTHON
AYUDA CON SCIPY Y NUMPY
AYUDA CON MATPLOTLIB
AYUDA CON PANDAS
AYUDA CON SCIKIT-LEARN
Capítulo 1
INTRODUCCIÓN
Este libro es una guía para aprender Machine Learning aplicado con
Python. Se descubrirá, paso a paso, el proceso que se puede usar para
comenzar en Machine Learning con el ecosistema de Python.
Cada una de las lecciones están diseñadas para leerse de principio a fin
en orden, y mostrar exactamente cómo completar cada tarea en un proyecto
de Machine Learning. Por supuesto, se puede dedicar a capítulos
específicos, posteriormente, para refrescar los conocimientos. Los capítulos
están estructurados para demostrar las librerías y funciones y mostrar
técnicas específicas para una tarea de Machine Learning.
PYTHON
Python lidera en lenguajes de desarrollo de Machine Learning debido a
su simplicidad y facilidad de aprendizaje. Python es utilizado por más y
más científicos de datos y desarrolladores para la construcción y análisis de
modelos. Además, es un éxito entre los principiantes que son nuevos en
Machine Learning.
A diferencia de otros lenguajes de programación para Machine
Learning, como R o MATLAB, el procesamiento de datos y las expresiones
matemáticas científicas no están integradas en el lenguaje en sí, pero las
librerías como SciPy, NumPy y Pandas, ofrecen una funcionalidad
equivalente en una sintaxis posiblemente más accesible.
SciPy
NumPy
Pandas
Matplotlib
Scikit-learn
http://bit.ly/2Qmt2Zu
Una vez que inicie Spyder deberas ver una ventana de editor abierto en
el lado izquierdo y una ventana de consola de Python en el lado inferior
derecho. Por su parte, el panel ubicado en la parte superior derecha se usa
un explorador de variables, un explorador de archivos y un navegador de
ayuda. Al igual que la mayoría de los IDE, se puede cambiar qué paneles
son visibles y su diseño dentro de la ventana.
Se puede comenzar a trabajar con Spyder inmediatamente en la ventana
de la consola. De manera predeterminada, Spyder proporciona una consola
IPython que se puede usar para interactuar directamente con el motor de
Python. Funciona, esencialmente, de la misma manera que funciona en la
línea de comando, la gran diferencia es que Spyder puede inspeccionar los
contenidos del motor de Python y puede hacer otras cosas como mostrar
variables y sus contenidos dentro del explorador de variables.
http://bit.ly/2MxKDvb
http://bit.ly/2JEOBnR
Entre las diferencias que tiene NumPy y las listas propias que ofrece
Python para manejar los datos se encuentran que, NumPy ocupa menos
memoria en comparación a las listas de Python, a su vez es bastante rápido
en términos de ejecución y no se requiere mucho esfuerzo en la
programación para ejecutar las rutinas. Por estas razones NumPy es mucho
más fácil y conveniente su uso en el desarrollo de los algoritmos de Machine
Learning.
Sabiendo todo esto, se crea dos matrices una unidimensional y otra
bidimensional, esto utilizando por supuesto NumPy.
http://bit.ly/2MSJkqu
http://bit.ly/2QiAN2v
La manera en que se crea este DataFrame será la misma para todas las
estructuras.
http://bit.ly/2yibciB
http://bit.ly/2NFsYCa
http://bit.ly/2CwmX99
http://bit.ly/2AuS57z
Capítulo 4
CARGAR LOS DATOS
Encabezado de archivo
Delimitador
http://bit.ly/2wqG0g6
Descripción Comando
HTML read_html
MS EXCEL read_excel
JSON read_json
SQL read_sql
Capítulo 5
ENTENDIENDO LOS DATOS
Una vez cargados los datos deben ser comprendidos para obtener los
mejores resultados. En este capítulo se explicará varias formas en que se
puede usar Python para comprender mejor los datos de Machine Learning.
TIPOS DE DATOS
Conocer el tipo de dato de cada característica es importante. Conociendo
esta información se puede hacer una idea si se deban convertir los datos
originales en otros formatos para que sean más fácil su implementación
junto a los algoritmos de Machine Learning.
El resultado es una lista con cada una de las columnas del conjunto de
datos, en donde se específica el tipo de datos que se maneja.
DESCRIPCIÓN ESTADÍSTICA
La descripción estadística se refiere a la información que se puede
obtener de los datos referentes a propiedades estadísticas de cada
característica. Para implementarlo solamente se debe utilizar la función
describe() de Pandas, y las propiedades que devuelve son las siguientes:
☐ Conteo
☐ Media
☐ Desviación estándar
☐ Valor mínimo
☐ 25%
☐ 50%
☐ 75%
☐ Valor máximo
CONSIDERACIONES ADICIONALES
Los puntos acá tratados son solamente algunos consejos que se deben
considerar al momento de revisar los datos, adicionalmente a estos, se debe
tomar en consideración lo siguiente:
☐ Histogramas
☐ Diagrama de cajas o Box Plot
Histograma
http://bit.ly/2XgTTOg
☐ Matriz de correlación
Matriz de correlación
http://bit.ly/2XgTTOg
Capítulo 7
PROCESAMIENTO DE LOS DATOS
Como se puede observar al ejecutar el código genera una matriz del tipo
NumPy con los datos estandarizados, en caso de que se quieran convertir los
datos en DataFrame de Pandas se debe ejecutar las siguientes líneas de
código adicionales.
http://bit.ly/2Hjq2f4
http://bit.ly/2H63A9R
Igual que en el caso anterior, al ejecutar el código genera una matriz del
tipo NumPy con los datos normalizados, en caso de que se quieran convertir
los datos en DataFrame de Pandas se debe ejecutar las siguientes líneas de
código adicionales.
Resultado una vez ejecutado el código anterior:
http://bit.ly/2Hjq2f4
http://bit.ly/2H63A9R
ELIMINACIÓN DE COLUMNAS
Otra forma de procesar los datos es eliminando columnas con datos que
no son necesarios para el análisis. La función a utilizar para cumplir con esta
forma es drop, junto con el nombre de la columna a eliminar.
http://bit.ly/2Hjq2f4
http://bit.ly/2H63A9R
Capítulo 8
SELECCIONANDO CARACTERÍSTICAS
1. Método de filtro
2. Método de envoltura
3. Métodos integrados
MÉTODOS DE FILTRO
La siguiente imagen describe mejor los métodos de selección de
características basados en filtros:
http://bit.ly/2C0BojO
MÉTODOS DE ENVOLTURA
Al igual que los métodos de filtro, se muestra una gráfica en donde se
explica mejor este método:
Como se puede observar, un método de envoltura necesita un algoritmo
de Machine Learning y utiliza su rendimiento como criterio de evaluación.
Este método busca una característica que sea más adecuada para el algoritmo
y tiene como objetivo mejorar el rendimiento.
http://bit.ly/2C0BojO
MÉTODOS INTEGRADOS
Combina las cualidades de los métodos de filtro y envoltura. Se
implementa mediante algoritmos que tienes sus propios métodos de
selección de características incorporados.
http://bit.ly/2C0BojO
Capítulo 9
ALGORITMOS DE CLASIFICACIÓN
1. Regresión logística
2. K Vecinos más cercanos
3. Máquinas de vectores de soporte
4. Naive bayes
5. Árboles de decisión clasificación
6. Bosques aleatorios clasificación
REGRESIÓN LOGÍSTICA
La Regresión Logística es un método estadístico para predecir clases
binarias. El resultado o variable objetivo es de naturaleza dicotómica.
Dicotómica significa que solo hay dos clases posibles. Por ejemplo, se puede
utilizar para problemas de detección de cáncer o calcular la probabilidad de
que ocurra un evento.
La Regresión Logística es uno de los algoritmos de Machine Learning
más simples y más utilizados para la clasificación de dos clases. Es fácil de
implementar y se puede usar como línea de base para cualquier problema de
clasificación binaria. La Regresión Logística describe y estima la relación
entre una variable binaria dependiente y las variables independientes.
Igual que los casos anteriores, para este algoritmo se define el algoritmo
a implementar, seguidamente se entrena utilizando los datos de
entrenamiento y finalmente se realiza una predicción, bien sea con los datos
de prueba o con nueva data.
1. Matriz de confusión
2. Reporte de clasificación
3. Área bajo la curva
MATRIZ DE CONFUSIÓN
La matriz de confusión es una de las métricas más intuitivas y sencillas
que se utiliza para encontrar la precisión y exactitud del modelo. Se utiliza
para el problema de clasificación donde la salida puede ser de dos o más
tipos de clases.
http://bit.ly/2LQkSet
REPORTE DE CLASIFICACIÓN
La librería scikit-learn proporciona un informe muy conveniente cuando
se trabaja en problemas de clasificación, este da una idea rápida de la
precisión de un modelo utilizando una serie de medidas. La función
classification_report() muestra la precisión, la sensibilidad, la puntuación F1
y el soporte para cada clase.
http://bit.ly/2MfsS8J
http://bit.ly/2ETCL60
http://bit.ly/2MfsS8J
http://bit.ly/2ETCL60
Capítulo 11
ALGORITMOS DE REGRESIÓN
1. Regresión lineal
2. Regresión polinomeal
3. Vectores de soporte regresión
4. Árboles de decisión regresión
5. Bosques aleatorios regresión
REGRESIÓN LINEAL
La regresión lineal es una técnica paramétrica utilizada para predecir
variables continuas, dependientes, dado un conjunto de variables
independientes. Es de naturaleza paramétrica porque hace ciertas
suposiciones basadas en el conjunto de datos. Si el conjunto de datos sigue
esas suposiciones, la regresión arroja resultados increíbles, de lo contrario,
tiene dificultades para proporcionar una precisión convincente.
Resultado una vez ejecutado el código anterior:
http://bit.ly/2RpwDGK
http://bit.ly/2Su2aHM
REGRESIÓN POLINOMEAL
La regresión polinomial es un caso especial de la regresión lineal,
extiende el modelo lineal al agregar predictores adicionales, obtenidos al
elevar cada uno de los predictores originales a una potencia. El método
estándar para extender la regresión lineal a una relación no lineal entre las
variables dependientes e independientes, ha sido reemplazar el modelo lineal
con una función polinomial.
http://bit.ly/2H889RX
VECTORES DE SOPORTE REGRESIÓN
Los vectores de soporte regresión utiliza los mismos principios que los
de clasificación, con solo algunas diferencias menores. En primer lugar,
dado que la salida es un número real, se vuelve muy difícil predecir la
información disponible, que tiene infinitas posibilidades, sin embargo, la
idea principal es siempre la misma: minimizar el error, individualizar el
hiperplano que maximiza el margen, teniendo en cuenta que se tolera parte
del error.
http://bit.ly/2CY3xbH
http://bit.ly/2TEDkG2
http://bit.ly/2tHfP3U
http://bit.ly/2tStiGi
http://bit.ly/2FTuYoA
http://bit.ly/2PhGwpT
Indica el ajuste absoluto del modelo a los datos, cuán cerca están los
puntos de datos observados de los valores predichos del modelo. El error
cuadrático medio o RMSE es una medida absoluta de ajuste.
http://bit.ly/2TzzKNY
Para este parámetro un valor de 0.0 indica que no hay error, es decir las
predicciones son perfectas.
http://bit.ly/2TzzKNY
Capítulo 13
PROYECTO DE MACHINE LEARNING - CLASIFICACIÓN
Este conjunto describe los registros médicos de los indios Pima y si cada
paciente tendrá un inicio de diabetes dentro de los cinco años. Como tal es
un problema de clasificación.
SELECCIONANDO CARACTERÍSTICAS
Como se observo la variable X cuenta con 8 columnas, para este caso se
aplicará el procedimiento para seleccionar las 5 características que tengan
mayor influencia en la variable dependiente. Para este ejemplo se utilizará el
método de filtro.
Columna 0 – pregnancies
Columna 1 – glucose
Columna 4 – insulin
Columna 5 – bmi
Columna 7 – age
Por lo tanto, se convierte ahora las variables X con solo estas 5
columnas.
Para este caso solamente se estandarizarán los datos, ya que los mismos
se encuentran en distintas escalas y esto puede ocasionar errores en el
análisis.
Regresión Logística
Naive Bayes
No todos los casos son así, en ocasiones cuando se está trabajando con
un problema de clasificación, los resultados, después de implementar varios
algoritmos, son distintos entre ellos, por lo que acá se selecciona el
algoritmo con el que se obtengan los mejores resultados.
Capítulo 14
PROYECTO DE MACHINE LEARNING - REGRESIÓN
Regresión Lineal
Regresión Polinomial
En este capítulo encontrarás áreas en las que podrás practicar las nuevas
habilidades adquiridas de Machine Learning con Python.
Otra página que cuenta con muy buenos conjuntos de datos para
practicar es Kaggle. Acá, puedes descargar y practicar las habilidades
aprendidas, pero también puedes participar en competencias. En una
competencia, el organizador te proporciona un conjunto de datos de
entrenamiento, un conjunto de datos de prueba en el que debes hacer
predicciones, una medida de rendimiento y un límite de tiempo. Luego, los
competidores trabajan para crear el modelo más preciso posible. Los
ganadores a menudo reciben premios en efectivo.
CONSEJO GENERAL
En general, en la página LigdiGonzalez podrás encontrar mucha más
información sobre Machine Learning. Desde información teórica como
ejercicios prácticos, de esta forma podrás aumentar tus habilidades dentro
de este tema. Toda la información contenida acá es en español.
http://bit.ly/2JbWcaX
Otro recurso muy útil son los sitios de preguntas y respuestas, como
StackOverflow. Se puede buscar mensajes de error y problemas que se
tenga y encontrar ejemplos de códigos e ideas que pueden ayudar en los
proyectos. Esta página se encuentra tanto en español como en inglés,
aunque en está ultima se encuentra la mayor cantidad de información.
Notas de SciPy:
http://scipy-lectures.org/
Ligdi González
2019
This le was downloaded from Z-Library project
Z-Access
https://wikipedia.org/wiki/Z-Library
ffi
fi