Python para machine learning.

Python es un lenguaje de programación de propósito general, popular y potente que surgió recientemente como el idioma preferido entre los científicos de datos. Con él se pueden escribir algoritmos de machine learning que funcionan a la perfección. Además, hay muchos módulos y bibliotecas ya implementados en Python que pueden hacer la vida más fácil a quienes necesitan crear algoritmos de Machine Learning. Vamos a introducir los paquetes de Python que más suelen utilizarse en los laboratorios de datos.

  • El primer paquete es Numpy, una biblioteca de matemática para trabajar con arreglos de n-dimensiones en Python. Permite realizar cálculos de forma eficiente y eficaz. Es mejor que Python base debido a sus increíbles capacidades. Por ejemplo, para trabajar con arrays, diccionarios, funciones, tipos de datos, y trabajar con imágenes.
  • SciPy es una colección de algoritmos numéricos y herramientas de dominio especifico, incluyendo procesamiento de señal, optimización, estadísticas y mucho más. SciPy es una buena biblioteca para la computación científica y de alto rendimiento.
  • Matplotlib es un paquete muy popular que proporciona trazado 2D, así como trazado 3D.

El conocimiento básico acerca de estos 3 paquetes, que están construidos sobre Python, es un buen activo para los científicos de datos que quieran trabajar con problemas del mundo real. Si no está familiarizado con estos paquetes, le recomiendo que aprendas algo de ellos antes de continuar.

  • La biblioteca Pandas es una biblioteca de Python de muy alto nivel que proporciona estructuras de datos de alto rendimiento, fáciles de utilizar. Tiene muchas funciones para la importación, manipulación y análisis de datos. En particular, ofrece estructuras de datos y operaciones para la manipulación de tablas numéricas y series de tiempo.

Todo en uno: scikit-learn

Por último tenemos nuestro objetivo principal: scikit-learn. Es una colección de algoritmos y herramientas para machine learning muy popular entre los científicos de datos.
SciKit-learn es una biblioteca gratuita de machine learning para el lenguaje de programación Python. Tiene la mayoría de los algoritmos de clasificación, regresión y agrupamiento, y está diseñada para trabajar con las bibliotecas numéricas y científicas de Python, NumPy y SciPy. Además, incluye una documentación muy buena. Encima de eso, la implementación de modelos de machine learning con scikit-learn es realmente fácil, con unas pocas líneas de código Python.

La mayoría de las tareas que se deben realizar en un pipeline de machine learning se implementan ya en scikit-learn, incluyendo, preprocesamiento de datos, selección de características, extracción de características, división de entrenamiento/prueba, definición de los algoritmos, modelos de ajuste, parámetros de ajuste, predicción,
evaluación y exportación del modelo.

Ejemplo

Podemos ver un ejemplo de cómo scikit-learn construye un modelo con sólo unas pocas líneas de código.

from sklearn import preprocessing
X = preprocessing.StandardScaler().fit(X).transform(X)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
from sklearn impor svm
clf = svm.SVC(gamma=0.001, C0100.)
clf.fit(X_train, y_train)
clf.predict(X_test)
from sklearn.metrics import confusion_matrix
print(confusion_matrix(y_test, yhat, labels=[1,0])
import pickle
s = pickle.dumps(clf)

Las lineas 1 y 2 estandarizan el conjunto de datos. Si hay algunos valores atípicos, o campos de escalas diferentes en su conjunto de datos, tiene que arreglarlos. El paquete de preprocesamiento de scikit-learn proporciona varias funciones comunes de utilidad y las clases de transformación para cambiar los vectores de características en bruto en una forma adecuada de vector para modelado.

Las lineas 3 y 4 dividen el conjunto de datos en conjuntos de entrenamiento y pruebas para entrenar el modelo, y luego probar la precisión del modelo por separado. El Scikit-learn puede dividir arrays o matrices en subconjuntos aleatorios de entrenamiento y pruebas para ti, en una línea de código.

Las lineas 5 y 6 configuran el algoritmo. Por ejemplo, puede crear un clasificador utilizando un algoritmo de clasificación de vector de soporte. Llamamos a nuestra instancia de estimador ‘clf’, e inicializamos sus parámetros.

En la linea 7 se entrena el modelo con el conjunto de entrenamiento. Al pasar nuestro conjunto de entrenamiento al método ‘fit’, el modelo ‘clf’ aprende a clasificar casos desconocidos.

En la linea 8 se utiliza el conjunto de pruebas para ejecutar predicciones. Y, el resultado nos dice cuál es la clase de cada valor desconocido.

En las lineas 9 y 10 se utilizan métricas para evaluar la precisión del modelo, por ejemplo, utilizando una matriz de confusión (confusion_matrix) para mostrar los resultados.

Y finalmente, en las lineas 11 y 12 se guarda el modelo.

Ir al artículo anterior de la serie: Machine Learning. Introducción y técnicas.

Ir al artículo siguiente de la serie: Aprendizaje Supervisado y No Supervisado