Cuando inicias un nuevo proyecto de Machine Learning supervisado, uno de los primeros pasos es analizar los datos que tenemos, entender lo que estamos tratando de lograr, y qué algoritmos de machine learning podrían ayudarnos a lograr nuestros objetivos. Si bien la biblioteca scikit-learn nos facilita la vida al hacer posible la ejecución de modelos con unas pocas líneas de código, también puede llevar mucho tiempo cuando necesitas probar varios modelos. Sin embargo, ¿qué pasaría si pudiéramos ejecutar varios modelos básicos a la vez antes de sumergirnos en enfoques más complejos y tener una mejor idea de en qué modelos deberíamos invertir nuestro precioso tiempo?
Eso es lo que lazy predict
intenta (con éxito) lograr. Ejecuta 30 modelos de aprendizaje automático en solo unos segundos y nos da una idea de cómo funcionarán los modelos con nuestro conjunto de datos. Para comprender mejor cómo podemos usar lazy predict
, creé un proyecto de predicción de supervivientes del Titanic para que puedas codificarlo. Puedes encontrar el cuaderno completo aquí y así llevar a cabo este proyecto conmigo. La experiencia básica con Python, Pandas y scikit-learn te ayudará a comprender mejor lo que está sucediendo.
Tabla de contenidos
Importación y limpieza de datos
Primero, importemos pyforest
. PyForest importa las 40 bibliotecas de Python más populares con una línea de código. Escribí un artículo al respecto y lo puedes encontrar aquí. Apagaré algunos mensajes de advertencia desagradables usando la biblioteca de advertencias. También importaré algunas bibliotecas de métricas. Lo necesitaremos más adelante.
import pyforest import warnings warnings.filterwarnings("ignore") from sklearn import metrics from sklearn.metrics import accuracy_score
Ahora, importemos el conjunto de datos que usaremos de Kaggle. Puedes encontrar el conjunto de datos en este enlace. Ten en cuenta que no importé Pandas. Eso es porque viene incluido con pyforest
.
# importing .csv files using Pandas train = pd.read_csv(‘train.csv’) test = pd.read_csv(‘test.csv’)
Saltaré algunos análisis de datos exploratorios en este artículo porque nuestro enfoque principal es comenzar a usar lazy predict
. Sin embargo, en mi EDA inicial que puedes encontrar en mi GitHub, noté que necesitamos convertir la columna Sex en numérica. Podemos hacer eso fácilmente con un lambda function
.
train['Sex'] = train['Sex'].apply(lambda x: 1 if x == 'male' else 2)
También podemos eliminar algunas columnas categóricas que no se utilizarán para este micro proyecto. Como tarea, te recomiendo que intentes jugar con estas funciones cuando termines este artículo.
train.drop(columns=[‘Name’,’Ticket’,’Cabin’, ‘PassengerId’, ‘Parch’, ‘Embarked’], inplace=True)
Train Test Split
Dividamos ahora nuestro train set en las variables “x” e “y”. Dirigiré todas las características a “X”, excepto “Survived”, es decir, superviviente (survived) que es nuestra etiqueta de destino.
X = train.drop([‘Survived’], axis=1) y = train.Survived
Y ahora, dividamos la variable en conjuntos de train y test. Iré con el 0,25 predeterminado para el tamaño de la prueba. Puedes agregar fácilmente otros valores usando:
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
Modelando con LazyPredict
Ahora es el momento de divertirse. Si es la primera vez que usas lazypredict, tendrás que instalarlo. Para hacerlo, puedes escribir pip install lazypredict en en tu terminal. Si ya lo tienes instalado, importémoslo a tu proyecto. Dado que este es un proyecto de clasificación, importamos LazyClassifier también.
import lazypredict from lazypredict.Supervised import LazyClassifier
Finalmente, ejecutamos los modelos y comprobamos si funciona:
clf = LazyClassifier(verbose=0,ignore_warnings=True) models, predictions = clf.fit(X_train, X_test, y_train, y_test) models
Voilá. Acabas de iterar más de 30 modelos en menos de 2 segundos. Eso es increíblemente rápido y sin esfuerzo. Sin embargo, ¿cómo podemos asegurarnos de que estos resultados sean precisos? Bueno, ahora podemos verificar los resultados ejecutando algunos modelos y comparándolos. Para este proyecto, probaré el conjunto de datos con un modelo de regresión logística y bosque aleatorio. Veamos si podemos acercarnos a los resultados que acabamos de ver. Comencemos con Random Forest.
rf = RandomForestClassifier() rf.fit(X_train, y_train) y_pred = rf.predict(X_test)
Como puedes comprobar, el nivel de accuracy y el F1-Score reflejan unos resultados similares. Probemos ahora con la variable Logistic Regression.
rf = LogisticRegression() rf.fit(X_train, y_train) y_pred_lr = rf.predict(X_test)
De nuevo tenemos un resultado similar. En consecuencia, los resultados obtenidos son válidos y confiables. Así de simple.
Conclusión
Lazypredict es una biblioteca fácil y rápida que ofrece una buena predicción de cómo se comportarán nuestros modelos si tu conjunto de datos. Ten en cuenta que los resultados obtenidos con lazy predict
NO DEBEN considerarse modelos finales. Las estadísticas son un componente importante de la ciencia de datos y, dado que los diferentes modelos tienen diferentes enfoques, debes saber cómo funciona cada uno de los modelos antes de elegir el modelo final. Más importante aún, la ciencia de datos es un campo complejo y no existen soluciones mágicas sin pros y contras. Úsalo como tu primera iteración para confirmar tu enfoque planificado y verifica siempre los resultados con herramientas como scikit-learn.
¡Diviértete y avísame si te funcionó!