PyCaret es una biblioteca de aprendizaje de máquinas de código abierto en Python diseñada para facilitar la realización de tareas estándar en un proyecto de aprendizaje de máquinas.
Es una versión en Python del paquete de aprendizaje de la máquina Caret en R, popular porque permite que los modelos sean evaluados, comparados y ajustados en un conjunto de datos dado con sólo unas pocas líneas de código.
La biblioteca de PyCaret proporciona estas características, lo que permite al profesional del aprendizaje automático en Python comprobar de forma puntual un conjunto de algoritmos estándar de aprendizaje automático en un conjunto de datos de clasificación o regresión con una sola llamada a la función.
En este tutorial, descubrirás la biblioteca de código abierto de PyCaret Python para el aprendizaje automático.
Después de completar este tutorial, lo sabrás:
- PyCaret es una versión en Python del popular y ampliamente utilizado paquete de aprendizaje de la máquina de caretas en R.
- Cómo usar PyCaret para evaluar y comparar fácilmente los modelos estándar de aprendizaje de máquinas en un conjunto de datos.
- Cómo usar PyCaret para afinar fácilmente los hiperparámetros de un modelo de aprendizaje de máquina de buen rendimiento.
Empecemos.
Resumen del Tutorial
Este tutorial está dividido en cuatro partes; son:
- ¿Qué es PyCaret?
- Conjunto de datos del sónar
- Comparando los modelos de aprendizaje de las máquinas
- Modelos de aprendizaje de la máquina de afinar
¿Qué es PyCaret?
PyCaret es una biblioteca de código abierto para aprender a usar la máquina Python inspirada en el paquete Caret R.
El objetivo del paquete caret es automatizar los principales pasos para evaluar y comparar los algoritmos de aprendizaje de la máquina para la clasificación y la regresión. El principal beneficio de la biblioteca es que se puede lograr mucho con muy pocas líneas de código y poca configuración manual. La biblioteca de PyCaret aporta estas capacidades a Python.
PyCaret es una biblioteca de código abierto y de bajo código para el aprendizaje de máquinas en Python que tiene como objetivo reducir el tiempo de ciclo de las hipótesis a las percepciones. Es muy adecuada para científicos experimentados en el campo de los datos que desean aumentar la productividad de sus experimentos de ML utilizando PyCaret en sus flujos de trabajo, o para científicos de datos ciudadanos y aquellos que son nuevos en la ciencia de los datos con poca o ninguna experiencia en codificación.
– Página web de PyCaret
La biblioteca de PyCaret automatiza muchos pasos de un proyecto de aprendizaje de la máquina, como:
- Definir los datos se transforma para realizar (setup())
- Evaluar y comparar los modelos estándar (compare_models())
- Sintonizar los hiperparámetros del modelo (tune_model())
Así como muchas más características no limitadas a la creación de conjuntos, guardar modelos y desplegar modelos.
La biblioteca de PyCaret tiene una gran cantidad de documentación para el uso de la API; puedes empezar aquí:
No exploraremos todas las características de la biblioteca en este tutorial; en su lugar, nos centraremos en la simple comparación de modelos de aprendizaje de máquinas y en el ajuste de hiperparámetros.
Puedes instalar PyCaret usando tu gestor de paquetes Python, como pip. Por ejemplo:
Una vez instalada, podemos confirmar que la biblioteca está disponible en su entorno de desarrollo y que funciona correctamente imprimiendo la versión instalada.
# Verifique la versión de Pycaret importación pycaret imprimir(‘PyCaret: %s’ % pycaret.La versión…) |
Ejecutando el ejemplo se cargará la biblioteca de PyCaret y se imprimirá el número de versión instalada.
Su número de versión debería ser el mismo o más alto.
Si necesitas ayuda para instalar PyCaret en tu sistema, puedes ver las instrucciones de instalación aquí:
Ahora que estamos familiarizados con lo que es PyCaret, exploremos cómo podríamos usarlo en un proyecto de aprendizaje de máquinas.
Conjunto de datos del sónar
Usaremos el conjunto de datos de clasificación binaria estándar del Sonar. Puede aprender más sobre ello aquí:
Podemos descargar el conjunto de datos directamente de la URL y cargarlo como un Pandas DataFrame.
... # Definir la ubicación del conjunto de datos url = «https://raw.githubusercontent.com/jbrownlee/Datasets/master/sonar.csv # Cargar el conjunto de datos df = read_csv(url, encabezado=Ninguno) # resumir la forma del conjunto de datos imprimir(df.forma) |
El PyCaret parece requerir que un conjunto de datos tenga nombres de columna, y nuestro conjunto de datos no tiene nombres de columna, por lo que podemos establecer el número de columna como el nombre de la columna directamente.
... # Poner los nombres de las columnas como el número de la columna n_cols = df.forma[[1] df.columnas = [[str(i) para i en rango(n_cols)] |
Finalmente, podemos resumir las primeras filas de datos.
... # resumir las primeras filas de datos imprimir(df.cabeza()) |
A continuación se muestra un ejemplo completo de la carga y resumen del conjunto de datos del Sonar.
# Cargar el conjunto de datos del sonar de pandas importación lea_csv # Definir la ubicación del conjunto de datos url = «https://raw.githubusercontent.com/jbrownlee/Datasets/master/sonar.csv # Cargar el conjunto de datos df = read_csv(url, encabezado=Ninguno) # resumir la forma del conjunto de datos imprimir(df.forma) # Poner los nombres de las columnas como el número de la columna n_cols = df.forma[[1] df.columnas = [[str(i) para i en rango(n_cols)] # resumir las primeras filas de datos imprimir(df.cabeza()) |
Al ejecutar el ejemplo primero se carga el conjunto de datos y se reporta la forma, mostrando que tiene 208 filas y 61 columnas.
Las primeras cinco filas se imprimen entonces mostrando que las variables de entrada son todas numéricas y la variable objetivo es la columna «60» y tiene etiquetas de cadena.
(208, 61) 0 1 2 3 4 … 56 57 58 59 60 0 0.0200 0.0371 0.0428 0.0207 0.0954 … 0.0180 0.0084 0.0090 0.0032 R 1 0.0453 0.0523 0.0843 0.0689 0.1183 … 0.0140 0.0049 0.0052 0.0044 R 2 0.0262 0.0582 0.1099 0.1083 0.0974 … 0.0316 0.0164 0.0095 0.0078 R 3 0.0100 0.0171 0.0623 0.0205 0.0205 … 0.0050 0.0044 0.0040 0.0117 R 4 0.0762 0.0666 0.0481 0.0394 0.0590 … 0.0072 0.0048 0.0107 0.0094 R |
A continuación, podemos usar PyCaret para evaluar y comparar un conjunto de algoritmos estándar de aprendizaje de máquinas para descubrir rápidamente lo que funciona bien en este conjunto de datos.
PyCaret para comparar los modelos de aprendizaje de las máquinas
En esta sección, evaluaremos y compararemos el rendimiento de los modelos estándar de aprendizaje de máquinas en el conjunto de datos de clasificación del Sonar.
Primero, debemos establecer el conjunto de datos con la biblioteca de PyCaret a través de la función setup(). Esto requiere que proporcionemos el Pandas DataFrame y que especifiquemos el nombre de la columna que contiene la variable objetivo.
El setup() también le permite configurar la preparación de datos simples, como el escalado, las transformaciones de potencia, el manejo de datos faltantes y las transformaciones PCA.
Especificaremos los datos, la variable objetivo, y desactivaremos la salida HTML, la salida verbosa y las solicitudes de retroalimentación de los usuarios.
... # Configurar el conjunto de datos cuadrícula = Configuración(datos=df, objetivo=df.columnas[[–1], html=Falso, silencioso=Verdadero, verboso=Falso) |
A continuación, podemos comparar los modelos estándar de aprendizaje de la máquina llamando al compare_models() función.
Por defecto, evaluará los modelos utilizando una validación cruzada de 10 veces, clasificará los resultados según la precisión de la clasificación y devolverá el mejor modelo.
Estos son buenos valores predeterminados, y no necesitamos cambiar nada.
... # Evaluar los modelos y comparar los modelos mejor = comparar_modelos() |
Llama al compare_models() también informará de un cuadro de resultados en el que se resumirán todos los modelos evaluados y su rendimiento.
Por último, podemos informar del modelo de mejor rendimiento y su configuración.
Enlazando todo esto, el ejemplo completo de evaluación de un conjunto de modelos estándar en el conjunto de datos de clasificación del Sonar se enumera a continuación.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# Comparar los algoritmos de aprendizaje de la máquina en el conjunto de datos de clasificación del sonar de pandas importación read_csv de pycaret.clasificación importación Configuración de pycaret.clasificación importación Compara_modelos # Definir la ubicación del conjunto de datos url = «https://raw.githubusercontent.com/jbrownlee/Datasets/master/sonar.csv # Cargar el conjunto de datos df = read_csv(url, encabezado=Ninguno) # Poner los nombres de las columnas como el número de la columna n_cols = df.forma[[1] df.columnas = [[str(i) para i en rango(n_cols)] # Configurar el conjunto de datos cuadrícula = Configuración(datos=df, objetivo=df.columnas[[–1], html=Falso, silencioso=Verdadero, verboso=Falso) # Evaluar los modelos y comparar los modelos mejor = comparar_modelos() # reportar el mejor modelo imprimir(mejor) |
Ejecutando el ejemplo se cargará el conjunto de datos, se configurará la biblioteca de PyCaret, se evaluará un conjunto de modelos estándar y se informará del mejor modelo encontrado para el conjunto de datos.
Nota: Sus resultados pueden variar dada la naturaleza estocástica del algoritmo o el procedimiento de evaluación, o las diferencias en la precisión numérica. Considere ejecutar el ejemplo unas cuantas veces y compare el resultado promedio.
En este caso, podemos ver que el «Clasificador de árboles extra» tiene la mejor precisión en el conjunto de datos con una puntuación de alrededor del 86,95 por ciento.
Podemos entonces ver la configuración del modelo que se utilizó, que parece que usó valores de hiperparámetros por defecto.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
Modelo de Precisión AUC Recall Prec. F1 0 Clasificador de árboles extra 0.8695 0.9497 0.8571 0.8778 0.8631 1 Clasificador CatBoost 0.8695 0.9548 0.8143 0.9177 0.8508 2 Máquina de aumento del gradiente de luz 0,8219 0,9096 0,8000 0,8327 0,8012 3 Clasificador de aumento de gradiente 0.8010 0.8801 0.7690 0.8110 0.7805 4 Ada Boost Classifier 0.8000 0.8474 0.7952 0.8071 0.7890 5 K Clasificador de Vecinos 0.7995 0.8613 0.7405 0.8276 0.7773 6 Impulso de gradiente extremo 0.7995 0.8934 0.7833 0.8095 0.7802 7 Clasificador Forestal Aleatorio 0.7662 0.8778 0.6976 0.8024 0.7345 8 Clasificador del árbol de decisión 0,7533 0,7524 0,7119 0,7655 0,7213 9 Clasificador de cresta 0.7448 0.0000 0.6952 0.7574 0.7135 10 Bayes ingenuos 0.7214 0.8159 0.8286 0.6700 0.7308 11 SVM – Núcleo lineal 0.7181 0.0000 0.6286 0.7146 0.6309 12 Regresión logística 0.7100 0.8104 0.6357 0.7263 0.6634 13 Análisis discriminante lineal 0,6924 0,7510 0,6667 0,6762 0,6628 14 Análisis discriminante cuadrático 0.5800 0.6308 0.1095 0.5000 0.1750 Kappa MCC TT (Sec) 0 0.7383 0.7446 0.1415 1 0.7368 0.7552 1.9930 2 0.6410 0.6581 0.0134 3 0.5989 0.6090 0.1413 4 0.5979 0.6123 0.0726 5 0.5957 0.6038 0.0019 6 0.5970 0.6132 0.0287 7 0.5277 0.5438 0.1107 8 0.5028 0.5192 0.0035 9 0.4870 0.5003 0.0030 10 0.4488 0.4752 0.0019 11 0.4235 0.4609 0.0024 12 0.4143 0.4285 0.0059 13 0.3825 0.3927 0.0034 14 0.1172 0.1792 0.0033 ExtraTreesClassifier(bootstrap=Falso, ccp_alfa=0.0, class_weight=None, criterion=’gini’, max_depth=None, max_features=»auto», max_leaf_nodes=Ninguna, max_samples=Ninguna, min_impurity_decrease=0.0, min_impurity_split=None, min_samples_leaf=1, min_samples_split=2, min_peso_fracción_hoja=0.0, n_estimadores=100, n_trabajos=-1, oob_score=Falso, random_state=2728, verboso=0, warm_start=Falso) |
Podríamos usar esta configuración directamente y ajustar un modelo en todo el conjunto de datos y usarlo para hacer predicciones sobre nuevos datos.
También podemos utilizar la tabla de resultados para tener una idea de los tipos de modelos que funcionan bien en el conjunto de datos, en este caso, conjuntos de árboles de decisión.
Ahora que estamos familiarizados con la forma de comparar modelos de aprendizaje de máquinas usando PyCaret, veamos cómo podríamos usar la biblioteca para afinar los hiperparámetros del modelo.
Modelos de aprendizaje de la máquina de afinar
En esta sección, afinaremos los hiperparámetros de un modelo de aprendizaje de máquina en el conjunto de datos de clasificación del Sonar.
Debemos cargar y configurar el conjunto de datos como hicimos antes al comparar los modelos.
... # Configurar el conjunto de datos cuadrícula = Configuración(datos=df, objetivo=df.columnas[[–1], html=Falso, silencioso=Verdadero, verboso=Falso) |
Podemos afinar los hiperparámetros del modelo usando el tune_model() en la biblioteca de PyCaret.
La función toma una instancia del modelo a afinar como entrada y sabe qué hiperparámetros afinar automáticamente. Se realiza una búsqueda aleatoria de los hiperparámetros del modelo y el número total de evaluaciones puede ser controlado a través de la función «n_iter«argumento».
Por defecto, la función optimizará el ‘Precisióny evaluará el rendimiento de cada configuración utilizando una validación cruzada de 10 veces, aunque esta sensata configuración por defecto puede ser cambiada.
Podemos realizar una búsqueda aleatoria del clasificador de árboles extra de la siguiente manera:
... # Sintonizar los hiperparámetros del modelo mejor = tune_model(ExtraTreesClassifier(), n_iter=200) |
La función devolverá el modelo de mejor rendimiento, que puede utilizarse directamente o imprimirse para determinar los hiperparámetros seleccionados.
También imprimirá una tabla con los resultados de la mejor configuración del número de pliegues en la validación cruzada del pliegue k (por ejemplo, 10 pliegues).
Enlazando esto, el ejemplo completo de la sintonización de los hiperparámetros del clasificador de árboles extra en el conjunto de datos del Sonar se enumera a continuación.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# Sintonizar los hiperparámetros del modelo en el conjunto de datos de clasificación del sonar de pandas importación read_csv de sklearn.conjunto importación ExtraTreesClassifier de pycaret.clasificación importación Configuración de pycaret.clasificación importación tune_modelo # Definir la ubicación del conjunto de datos url = «https://raw.githubusercontent.com/jbrownlee/Datasets/master/sonar.csv # Cargar el conjunto de datos df = read_csv(url, encabezado=Ninguno) # Poner los nombres de las columnas como el número de la columna n_cols = df.forma[[1] df.columnas = [[str(i) para i en rango(n_cols)] # Configurar el conjunto de datos cuadrícula = Configuración(datos=df, objetivo=df.columnas[[–1], html=Falso, silencioso=Verdadero, verboso=Falso) # Sintonizar los hiperparámetros del modelo mejor = tune_model(ExtraTreesClassifier(), n_iter=200, choose_better=Verdadero) # reportar el mejor modelo imprimir(mejor) |
Ejecutando el ejemplo primero se carga el conjunto de datos y se configura la biblioteca de PyCaret.
A continuación se realiza una búsqueda en cuadrícula que informa sobre el rendimiento de la configuración de mejor rendimiento en los 10 pliegues de validación cruzada y la precisión media.
Nota: Sus resultados pueden variar dada la naturaleza estocástica del algoritmo o el procedimiento de evaluación, o las diferencias en la precisión numérica. Considere ejecutar el ejemplo unas cuantas veces y compare el resultado promedio.
En este caso, podemos ver que la búsqueda aleatoria encontró una configuración con una precisión de alrededor del 75,29 por ciento, que no es mejor que la configuración por defecto de la sección anterior que alcanzó una puntuación de alrededor del 86,95 por ciento.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Precisión AUC Recall Prec. F1 Kappa MCC 0 0.8667 1.0000 1.0000 0.7778 0.8750 0.7368 0.7638 1 0.6667 0.8393 0.4286 0.7500 0.5455 0.3119 0.3425 2 0.6667 0.8036 0.2857 1.0000 0.4444 0.2991 0.4193 3 0.7333 0.7321 0.4286 1.0000 0.6000 0.4444 0.5345 4 0.6667 0.5714 0.2857 1.0000 0.4444 0.2991 0.4193 5 0.8571 0.8750 0.6667 1.0000 0.8000 0.6957 0.7303 6 0.8571 0.9583 0.6667 1.0000 0.8000 0.6957 0.7303 7 0.7857 0.8776 0.5714 1.0000 0.7273 0.5714 0.6325 8 0.6429 0.7959 0.2857 1.0000 0.4444 0.2857 0.4082 9 0.7857 0.8163 0.5714 1.0000 0.7273 0.5714 0.6325 Media 0,7529 0,8270 0,5190 0,9528 0,6408 0,4911 0,5613 SD 0,0846 0,1132 0,2145 0,0946 0,1571 0,1753 0,1485 ExtraTreesClassifier(bootstrap=Falso, ccp_alfa=0.0, class_weight=None, criterion=’gini’, max_depth=1, max_features=»auto», max_leaf_nodes=Ninguna, max_samples=Ninguna, min_impurity_decrease=0.0, min_impurity_split=None, min_samples_leaf=4, min_samples_split=2, min_peso_fracción_hoja=0.0, n_estimadores=120, n_jobs=Ninguno, oob_score=Falso, estado_aleatorio=Ninguno, verboso=0, warm_start=Falso) |
Podríamos mejorar la búsqueda de la cuadrícula especificando a la tune_model() funcionan qué hiperparámetros buscar y qué rangos buscar.
Más lecturas
Esta sección proporciona más recursos sobre el tema si desea profundizar en él.
Resumen
En este tutorial, descubriste la biblioteca de código abierto de PyCaret Python para el aprendizaje automático.
Específicamente, aprendiste:
- PyCaret es una versión en Python del popular y ampliamente utilizado paquete de aprendizaje de la máquina de caretas en R.
- Cómo usar PyCaret para evaluar y comparar fácilmente los modelos estándar de aprendizaje de máquinas en un conjunto de datos.
- Cómo usar PyCaret para afinar fácilmente los hiperparámetros de un modelo de aprendizaje de máquina de buen rendimiento.
¿Tiene alguna pregunta?
Haga sus preguntas en los comentarios de abajo y haré lo posible por responder.