Ciencia de los datos

Tutorial de aprendizaje automático con Scikit-learn

Tutorial de aprendizaje automático con Scikit-learn

En esta lección de Machine Learning con scikit-learn, aprenderemos varios aspectos de este excelente paquete de Python que nos permite aplicar capacidades simples y complejas de Machine Learning en un conjunto diverso de datos junto con funcionalidades para probar la hipótesis que establecemos.

El paquete scikit-learn contiene herramientas simples y eficientes para aplicar la minería de datos y el análisis de datos en conjuntos de datos y estos algoritmos están disponibles para ser aplicados en diferentes contextos. Es un paquete de código abierto disponible bajo una licencia BSD, lo que significa que podemos usar esta biblioteca incluso comercialmente. Está construido sobre matplotlib, NumPy y SciPy, por lo que es de naturaleza versátil. Usaremos Anaconda con el cuaderno Jupyter para presentar ejemplos en esta lección.

Que proporciona scikit-learn?

La biblioteca scikit-learn se centra completamente en el modelado de datos. Tenga en cuenta que no hay funcionalidades importantes presentes en scikit-learn cuando se trata de cargar, manipular y resumir datos. Estos son algunos de los modelos populares que nos proporciona scikit-learn:

Instalar Python scikit-learn

Solo una nota antes de comenzar el proceso de instalación, usamos un entorno virtual para esta lección que hicimos con el siguiente comando:

pitón -m virtualenv scikit
fuente scikit / bin / enable

Una vez que el entorno virtual está activo, podemos instalar la biblioteca pandas dentro del entorno virtual para que se puedan ejecutar los ejemplos que creamos a continuación:

pip instalar scikit-learn

O podemos usar Conda para instalar este paquete con el siguiente comando:

conda instalar scikit-learn

Vemos algo como esto cuando ejecutamos el comando anterior:

Una vez que la instalación se complete con Conda, podremos usar el paquete en nuestros scripts de Python como:

importar sklearn

Comencemos a usar scikit-learn en nuestros scripts para desarrollar increíbles algoritmos de aprendizaje automático.

Importación de conjuntos de datos

Una de las cosas interesantes de scikit-learn es que viene precargado con conjuntos de datos de muestra con los que es fácil comenzar rápidamente. Los conjuntos de datos son los iris y digitos conjuntos de datos para la clasificación y el precios de la vivienda en boston conjunto de datos para técnicas de regresión. En esta sección, veremos cómo cargar y comenzar a usar el conjunto de datos de iris.

Para importar un conjunto de datos, primero tenemos que importar el módulo correcto y luego obtener la retención del conjunto de datos:

desde sklearn importar conjuntos de datos
iris = conjuntos de datos.load_iris ()
dígitos = conjuntos de datos.load_digits ()
digitos.datos

Una vez que ejecutemos el fragmento de código anterior, veremos el siguiente resultado:

Toda la salida se elimina por brevedad. Este es el conjunto de datos que usaremos principalmente en esta lección, pero la mayoría de los conceptos se pueden aplicar a todos los conjuntos de datos en general.

Un dato curioso es saber que hay varios módulos presentes en el scikit ecosistema, uno de los cuales es aprender utilizado para algoritmos de aprendizaje automático. Consulte esta página para ver muchos otros módulos presentes.

Explorando el conjunto de datos

Ahora que hemos importado el conjunto de datos de dígitos proporcionado a nuestro script, deberíamos comenzar a recopilar información básica sobre el conjunto de datos y eso es lo que haremos aquí. Estas son las cosas básicas que debe explorar mientras busca información sobre un conjunto de datos:

Escribamos un breve fragmento de código para extraer la información anterior de nuestro conjunto de datos:

print ('Destino:', dígitos.objetivo)
print ('Teclas:', dígitos.llaves())
print ('Descripción:', dígitos.DESCR)

Una vez que ejecutemos el fragmento de código anterior, veremos el siguiente resultado:

Tenga en cuenta que los dígitos variables no son sencillos. Cuando imprimimos el conjunto de datos de dígitos, en realidad contenía matrices numerosas. Veremos como podemos acceder a estos arreglos. Para esto, tome nota de las claves disponibles en la instancia de dígitos que imprimimos en el último fragmento de código.

Comenzaremos obteniendo la forma de los datos de la matriz, que son las filas y columnas que tiene la matriz. Para esto, primero necesitamos obtener los datos reales y luego obtener su forma:

digits_set = dígitos.datos
imprimir (digits_set.forma)

Una vez que ejecutemos el fragmento de código anterior, veremos el siguiente resultado:

Esto significa que tenemos 1797 muestras presentes en nuestro conjunto de datos junto con 64 características de datos (o columnas). Además, también tenemos algunas etiquetas de destino que visualizaremos aquí con la ayuda de matplotlib. Aquí hay un fragmento de código que nos ayuda a hacerlo:

importar matplotlib.pyplot como plt
# Fusionar las imágenes y las etiquetas de destino como una lista
images_and_labels = lista (zip (dígitos.imágenes, dígitos.objetivo))
para el índice, (imagen, etiqueta) en enumerate (images_and_labels [: 8]):
# inicializar una subtrama de 2X4 en la posición i + 1-th
plt.subtrama (2, 4, índice + 1)
# No es necesario trazar ningún eje
plt.eje ('apagado')
# Mostrar imágenes en todas las subtramas
plt.imshow (imagen, cmap = plt.cm.gray_r, interpolation = 'más cercano')
# Agrega un título a cada subtrama
plt.title ('Entrenamiento:' + str (etiqueta))
plt.show()

Una vez que ejecutemos el fragmento de código anterior, veremos el siguiente resultado:

Observe cómo comprimimos las dos matrices NumPy juntas antes de trazarlas en una cuadrícula de 4 por 2 sin información de ejes. Ahora, estamos seguros de la información que tenemos sobre el conjunto de datos con el que estamos trabajando.

Ahora que sabemos que tenemos 64 características de datos (que son muchas características por cierto), es un desafío visualizar los datos reales. Aunque tenemos una solución para esto.

Análisis de componentes principales (PCA)

Este no es un tutorial sobre PCA, pero déjanos dar una pequeña idea de lo que es. Como sabemos que para reducir la cantidad de características de un conjunto de datos, tenemos dos técnicas:

  1. Eliminación de características
  2. Extracción de características

Si bien la primera técnica enfrenta el problema de las características de datos perdidos incluso cuando podrían haber sido importantes, la segunda técnica no sufre el problema, ya que con la ayuda de PCA, construimos nuevas características de datos (menos en número) donde combinamos las variables de entrada de tal manera que podamos dejar de lado las variables "menos importantes" y al mismo tiempo conservar las partes más valiosas de todas las variables.

Como se esperaba, PCA nos ayuda a reducir la alta dimensionalidad de los datos que es un resultado directo de describir un objeto usando muchas características de datos. No solo los dígitos, sino muchos otros conjuntos de datos prácticos tienen un gran número de características que incluyen datos institucionales financieros, datos meteorológicos y económicos de una región, etc. Cuando realizamos PCA en el conjunto de datos de dígitos, nuestro objetivo será encontrar solo 2 características que tengan la mayoría de las características del conjunto de datos.

Escribamos un fragmento de código simple para aplicar PCA en el conjunto de datos de dígitos para obtener nuestro modelo lineal de solo 2 características:

de sklearn.PCA de importación de descomposición
feature_pca = PCA (n_components = 2)
datos_reducidos_ aleatorio = feature_pca.fit_transform (dígitos.datos)
model_pca = PCA (n_components = 2)
pca_datos_reducidos = pca_modelo.fit_transform (dígitos.datos)
reducido_data_pca.forma
imprimir (datos_reducidos_aleatorio)
imprimir (datos_reducidos_pca)

Una vez que ejecutemos el fragmento de código anterior, veremos el siguiente resultado:

[[-1.2594655 21.27488324]
[7.95762224-20.76873116]
[6.99192123 -9.95598191]
..
[10.8012644 -6.96019661]
[-4.87210598 12.42397516]
[-0.34441647 6.36562581]]
[[-1.25946526 21.27487934]
[7.95761543-20.76870705]
[6.99191947 -9.9559785]
..
[10.80128422 -6.96025542]
[-4.87210144 12.42396098]
[-0.3443928 6.36555416]]

En el código anterior, mencionamos que solo necesitamos 2 características para el conjunto de datos.

Ahora que tenemos un buen conocimiento sobre nuestro conjunto de datos, podemos decidir qué tipo de algoritmos de aprendizaje automático podemos aplicar en él. Conocer un conjunto de datos es importante porque así es como podemos decidir qué información se puede extraer de él y con qué algoritmos. También nos ayuda a probar la hipótesis que establecemos al predecir valores futuros.

Aplicar clústeres de k-medias

El algoritmo de agrupación en clústeres de k-means es uno de los algoritmos de agrupación en clúster más fáciles para el aprendizaje no supervisado. En este agrupamiento, tenemos un número aleatorio de grupos y clasificamos nuestros puntos de datos en uno de estos grupos. El algoritmo de k-medias encontrará el grupo más cercano para cada uno de los puntos de datos dados y asignará ese punto de datos a ese grupo.

Una vez que se realiza la agrupación, el centro del grupo se vuelve a calcular, los puntos de datos se asignan a nuevos grupos si hay algún cambio. Este proceso se repite hasta que los puntos de datos dejan de cambiar sus grupos para lograr la estabilidad.

Simplemente apliquemos este algoritmo sin ningún procesamiento previo de los datos. Para esta estrategia, el fragmento de código será bastante sencillo:

desde el clúster de importación de sklearn
k = 3
k_means = cluster.KMedias (k)
# ajustar datos
k_means.encajar (dígitos.datos)
# resultados de impresión
imprimir (k_means.etiquetas _ [:: 10])
imprimir (dígitos.objetivo [:: 10])

Una vez que ejecutemos el fragmento de código anterior, veremos el siguiente resultado:

En la salida anterior, podemos ver que se proporcionan diferentes grupos a cada uno de los puntos de datos.

Conclusión

En esta lección, analizamos una excelente biblioteca de aprendizaje automático, scikit-learn. Descubrimos que hay muchos otros módulos disponibles en la familia scikit y aplicamos un algoritmo simple de k-medias en el conjunto de datos proporcionado. Hay muchos más algoritmos que se pueden aplicar en el conjunto de datos además del agrupamiento de k-medias que aplicamos en esta lección, lo alentamos a que lo haga y comparta sus resultados.

Comparta sus comentarios sobre la lección en Twitter con @sbmaggarwal y @LinuxHint.

Puertos de código abierto de motores de juegos comerciales
Las recreaciones gratuitas, de código abierto y de motores de juegos multiplataforma se pueden usar para jugar títulos de juegos antiguos y también al...
Los mejores juegos de línea de comandos para Linux
La línea de comandos no es solo su mayor aliado cuando usa Linux, también puede ser la fuente de entretenimiento porque puede usarla para jugar muchos...
Las mejores aplicaciones de mapeo de gamepad para Linux
Si te gusta jugar juegos en Linux con un gamepad en lugar de un sistema de entrada de teclado y mouse típico, hay algunas aplicaciones útiles para ti....