¿Qué es Scikit-Learn (Sklearn)?

Autor

Bryan Clark

Senior Technology Advocate

¿Qué es scikit-learn (sklearn)?

Scikit-learn (a menudo escrito como scikit-learn o sklearn) es una biblioteca de machine learning de código abierto ampliamente utilizada para Python.

Scikit-learn es una de las bibliotecas de machine learning (ML) más utilizadas en la actualidad. Escrito en Python, este conjunto de herramientas de ciencia de datos optimiza el ML y el modelado estadístico de la inteligencia artificial (IA) mediante una interfaz coherente. Incluye módulos esenciales para la clasificación, la regresión, el clustering y la reducción de la dimensionalidad, todos construidos sobre las bibliotecas NumPy, SciPy y Matplotlib. La implementación de algoritmos de machine learning desde cero en Python puede ser una tarea computacionalmente intensiva y propensa a errores, que requiere experiencia en álgebra lineal, cálculo y optimización. Scikit-learn puede ser un recurso valioso para mitigar estos problemas.

Al aprovechar el sólido conjunto de redes neuronales y algoritmos de machine learning de scikit-learn, los recién llegados al campo pueden preprocesar conjuntos de datos de forma rápida y eficaz para aplicaciones de aprendizaje supervisado, como la regresión o la clasificación. Este paso se puede realizar sin necesidad de comprender en profundidad conceptos matemáticos complejos como el álgebra lineal, el cálculo o la cardinalidad. Además, estas herramientas facilitan los procesos de aprendizaje no supervisado, incluido el clustering y la reducción de la dimensionalidad. Estas herramientas permiten a los usuarios centrarse en conocimientos de mayor nivel y en la creación de valor empresarial.

Flujo de trabajo de scikit-learn
Diagrama de flujo de trabajo de scikit-learn

Componentes de scikit-learn

Numpy: una de las bibliotecas de Python más importantes para la computación científica. Proporciona objetos matriz y otros tipos de conjuntos de datos, junto con numerosas funciones para realizar operaciones eficientes en matrices mientras se utiliza Scikit-Learn.

Scipy: un esfuerzo impulsado por la comunidad destinado a crear y difundir software de código abierto para fines de ciencia de datos en Python. Específicamente, su misión se centra en desarrollar y mantener el paquete Scipy, que está disponible gratuitamente bajo una licencia de código abierto (como una licencia de Berkeley Software Distribution, también conocida como BSD) y accesible públicamente a través de los repositorios de GitHub dentro de la organización Scipy.

Matplotlib: una biblioteca de trazado amplia y flexible para Python que permite a los científicos de datos transformar su conjunto de datos en gráficos informativos, tablas y otras visualizaciones. Al proporcionar un conjunto completo de herramientas y características, Matplotlib facilita el análisis, la exploración y la comunicación de datos.

Cython: amplía las capacidades de Python al permitir llamadas directas a funciones C y la declaración explícita de tipos de conjuntos de datos C en variables y atributos de clase. Esta capacidad facilita la generación de código C altamente optimizado a partir del código fuente Cython para su uso en sklearn.

Las últimas tendencias en IA, presentadas por expertos

Obtenga conocimientos organizados sobre las noticias más importantes e intrigantes de la IA. Suscríbase a nuestro boletín semanal Think. Consulte la Declaración de privacidad de IBM.

¡Gracias! Está suscrito.

Su suscripción se enviará en inglés. Encontrará un enlace para darse de baja en cada boletín. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.

Preprocesamiento

Cuando se trabaja con scikit-learn, es esencial asegurarse de que los datos de entrenamiento estén preparados y formateados correctamente antes de entrada en el modelo de machine learning. Este proceso se conoce como preprocesamiento y scikit-learn proporciona una gama de herramientas para ayudar a organizar el conjunto de datos. Una tarea común durante esta etapa en el preprocesamiento de scikit-learn es la normalización, donde las características numéricas se escalan para tener magnitudes similares mediante el uso de técnicas como MinMax Scaler o Standard Scaler. Si el conjunto de datos debe codificarse a partir de variables categóricas en representaciones numéricas, One-Hot Encoding (OHE) o LabelEncoder (LE) pueden hacerlos compatibles con el flujo de trabajo del modelo. OHE transforma los valores de datos categóricos en vectores binarios, lo que da como resultado una nueva columna para cada categoría con un 1 o un 0 que indica la presencia o ausencia de las categorías. LE se utiliza en machine learning donde se asignan etiquetas numéricas a categories o clases. A diferencia de One-Hot Encoder, no crea nuevas columnas, sino que reemplaza los valores categóricos por valores enteros. Puede dar lugar a problemas como la suposición de ordinalidad y es menos común que OHE en las prácticas modernas de machine learning debido a sus limitaciones.

El preprocesamiento también puede implicar la selección de características, donde se puede elegir un subconjunto de características relevantes de scikit-learn para el entrenamiento del modelo. Este paso se puede realizar eliminando columnas irrelevantes o utilizando técnicas como la eliminación recursiva de características (RFE) o la información mutua (MI). La eliminación recursiva de características es una técnica utilizada para seleccionar las características más importantes de un conjunto de datos mediante la eliminación y el reentrenamiento iterativos de un modelo con un conjunto de características reducido, identificando en última instancia las características de mayor rendimiento. La información mutua mide la cantidad de información que contiene una variable aleatoria sobre otra, lo que le permite identificar qué características están altamente correlacionadas o son relevantes para un resultado objetivo. Este método es útil para seleccionar variables informativas. Además, la gestión de los valores faltantes es crucial y scikit-learn ofrece varios métodos para imputar estas lagunas, como la imputación por media o mediana, el relleno hacia adelante o hacia atrás y otros enfoques más sofisticados.

Para llevar a cabo estas tareas, scikit-learn pone a nuestra disposición un conjunto completo de herramientas de preprocesamiento. Las clases StandardScaler y MinMaxScaler son opciones populares para escalar características numéricas, mientras que OneHotEncoder es ideal para variables categóricas. Para la imputación de valores faltantes, la clase SimpleImputer ofrece diversos métodos entre los que elegir. Al combinar de forma creativa estas herramientas, se puede crear un proceso de preprocesamiento sólido que garantice un mayor rendimiento y precisión del modelo de machine learning.

Por ejemplo, StandardScaler se puede utilizar para estandarizar las características numéricas de los datos, seguido de OneHotEncoder para transformar variables categóricas en representaciones numéricas. Para cada categoría única en una variable categórica, se crea una nueva característica binaria (0 o 1). Si una observación tiene la categoría "X", entonces para la característica correspondiente a "X", el valor se establece en 1 y todas las demás características se establecen en 0. Este proceso también puede denominarse extracción de características. Al encadenar estas operaciones, se puede preparar un conjunto de datos unificado que esté listo para el entrenamiento del modelo de machine learning.

AI Academy

Conviértase en un experto en IA

Obtenga los conocimientos necesarios para priorizar las inversiones en IA que impulsan el crecimiento empresarial. Dé sus primeros pasos hoy mismo con nuestra AI Academy gratuita y lidere el futuro de la IA en su organización.

Métricas

Scikit-learn proporciona una serie de métricas integradas para problemas de clasificación y regresión, lo que ayuda en el proceso de toma de decisiones con respecto a la optimización o selección de modelos. En el contexto del machine learning y específicamente con scikit-learn, un modelo de regresión es un tipo de modelo predictivo que estima resultados continuos basados en características de entrada. A diferencia de los modelos de clasificación que predicen etiquetas discretas o categorías, los modelos de regresión se utilizan cuando se desea predecir una cantidad.

Para las tareas de clasificación, las métricas incluyen la exactitud, la precisión, la recuperación, la puntuación F1 y el área bajo la curva ROC (AUC-ROC).

  • Precisión: mide la proporción de predicciones correctas sobre el total de predicciones.

  • Precisión: se centra en las predicciones positivas, cuantificando cuántos elementos seleccionados son relevantes.

  • Recuperación: también conocida como sensibilidad, la recuperación evalúa la capacidad del modelo para encontrar todas las instancias relevantes.

  • Puntuación F1: la media armónica de precisión y recuperación, que proporciona un equilibrio entre estas dos métricas.

  • AUC-ROC: una métrica para evaluar el rendimiento de un modelo de clasificación donde la salida es una probabilidad. Representa visualmente el equilibrio entre la tasa de verdaderos positivos (TPR) y la tasa de falsos positivos (FPR).

Para las tareas de regresión, las métricas de evaluación comunes en scikit-learn incluyen el error absoluto medio (MAE), el error cuadrático medio (RMSE), la puntuación R^2 y el error cuadrático medio (MSE).

  • MAE: mide la magnitud media de los errores sin tener en cuenta su dirección.

  • RMSE: raíz cuadrada de la media de los errores al cuadrado, que da más peso a los errores más grandes.

  • Puntuación R2: también conocida como coeficiente de determinación, representa la proporción de la varianza de la variable dependiente que se puede predecir a partir de las variables independientes.

  • MSE: calcula la diferencia cuadrática media entre los valores predichos y reales, ofreciendo una medida de lo cerca que están los ajustes de los puntos de datos.

Por ejemplo, en un escenario de evaluación del riesgo crediticio que utiliza scikit-learn, la métrica del área bajo la curva característica operativa del receptor (AUC-ROC) es crucial para evaluar el rendimiento del modelo. Esta métrica mide la capacidad del modelo para distinguir entre los prestatarios que incumplieron el pago de sus préstamos y los que no, en función de características como los ingresos, la relación entre la deuda y los ingresos, y el historial laboral. Los valores AUC-ROC más cercanos a 1 indican modelos con mayor capacidad de diferenciación, lo que ayuda a los gerentes bancarios a determinar la idoneidad del modelo para la concesión de préstamos o a identificar áreas de mejora.

Las métricas de scikit-learn permiten una evaluación exhaustiva de los modelos de machine learning en diferentes tareas y escenarios. Comprender estas métricas ayuda a interpretar el rendimiento del modelo, identificar posibles áreas de mejora y, en última instancia, seleccionar u optimizar el modelo con mejor rendimiento para un problema específico.

Casos de uso de Scikit-learn

Detección de spam: los algoritmos de clasificación de scikit-learn, como la regresión logística y las máquinas de vectores de soporte (SVM), ayudan a filtrar los correos electrónicos no deseados y a clasificarlos como spam o no spam. Sklearn también puede realizar validaciones cruzadas con cross_val_score para evaluar la capacidad del clasificador Naïve Bayes para distinguir entre correos electrónicos spam y no spam. Sklearn utiliza la validación cruzada para entrenar y probar el modelo en cinco divisiones diferentes de los datos. De este modo, se obtiene una métrica de rendimiento promedio que ofrece una mejor idea de cómo podría funcionar el modelo con correos electrónicos nuevos y desconocidos.

Predicción de los precios de la vivienda: Scikit-learn se puede utilizar para técnicas de regresión como la regresión lineal para estimar los precios de la vivienda en función de características como la ubicación, el tamaño y las comodidades, lo que ayuda a los compradores a tomar decisiones informadas. Scikit-learn se integra de manera fluida con bibliotecas de visualización de datos como Plotly y Matplotlib. Esto permite visualizaciones que mejoran la comprensión y la interpretación de los resultados de la regresión, lo que facilita una toma de decisiones mejor informada en un caso de uso como este.

Detección de la enfermedad de la hoja de haya: el algoritmo de árbol de decisión de scikit-Learn puede utilizarse en los bosques del este de EE. UU. para detectar la enfermedad de la hoja de haya (BLD). Al analizar factores como la edad del árbol, la ubicación y el estado de las hojas, el modelo puede identificar hayas en riesgo de BLD. Mediante el uso de machine learning y enfoques basados en datos, se pueden identificar los árboles más vulnerables y se pueden implementar estrategias para protegerlos.

Detección de anomalías: en ciberseguridad, el clustering k-means de scikit-learn se puede utilizar para detectar patrones o comportamientos inusuales que podrían indicar una posible violación de seguridad. Al agrupar puntos de datos similares, k-means ayuda a identificar valores atípicos (puntos de datos que se desvían significativamente de los clústeres establecidos) como posibles anomalías. Estas anomalías podrían indicar intentos de acceso no autorizados, actividades de malware u otras acciones maliciosas. La detección temprana de estas anomalías con sklearn permite a los equipos de ciberseguridad investigar y mitigar las amenazas rápidamente, lo que mejora la posición de seguridad general de una organización.

Evaluación del riesgo crediticio: las instituciones financieras utilizan el algoritmo Random Forests de scikit-learn para identificar las características más importantes, como el historial crediticio, los ingresos y la relación entre la deuda y los ingresos, a la hora de evaluar el riesgo crediticio de los posibles prestatarios. Al clasificar la importancia de las variables con Random Forests, los prestamistas pueden tomar decisiones más informadas sobre quiénes son los candidatos idóneos para recibir préstamos y a qué tipos de interés.

Investigación genómica: sklearn puede aplicar técnicas como el análisis de componentes principales (PCA) para reducir la complejidad de los datos genéticos y facilitar la identificación de patrones significativos sin verse abrumado por el ruido.

Análisis de textos: es útil cuando se trata de documentos o conjuntos de datos de gran tamaño, ya que ayuda a resumir y visualizar de manera eficiente los temas o asuntos clave, lo cual es fundamental en áreas como el análisis de opiniones o los sistemas de recomendación de contenidos.

Integración de LLM en scikit-learn

Scikit-learn se centra principalmente en algoritmos de machine learning, pero puede ampliarse para incorporar modelos de lenguaje de gran tamaño (LLM). Aunque originalmente se centró en modelos tradicionales como árboles de decisión, máquinas de vectores de soporte y algoritmos de clustering, el ecosistema flexible de scikit-learn permite la integración con LLM a través de configuraciones de interfaz de programación de aplicaciones (API). Esto incluye el uso de modelos como la serie GPT de OpenAI y otras opciones de la comunidad, como los modelos de Anthropic o AzureChatOpenAI.

El proceso de integración se agiliza de forma similar a proyectos como Auto-GPT, lo que lo hace accesible para desarrolladores familiarizados con el flujo de trabajo de scikit-learn. En su sitio de GitHub, Scikit-learn ofrece recursos, incluidos tutoriales que guían a los usuarios en la exploración de los LLM de código abierto. Esta configuración facilita la implementación del modelo LLM elegido mediante credenciales API, lo que permite a scikit-learn beneficiarse de capacidades mejoradas de procesamiento del lenguaje natural.

Requisitos

Una comprensión práctica de los entornos Python, NumPy, SciPy, Pandas y Matplotlib es esencial para utilizar la eficiencia de scikit-learn, ya que forman la base del preprocesamiento de datos, la ingeniería de características y la visualización en las canalizaciones de machine learning. Estas bibliotecas proporcionan la base para el preprocesamiento de datos, la ingeniería de características y la visualización en pipelines de machine learning. El conocimiento de sus capacidades permite manejar de forma eficiente los conjuntos de datos, seleccionar las características relevantes y visualizar los resultados, lo que en última instancia conduce a una mejora del rendimiento del modelo.

Entorno Python

 

Una instalación autónoma de Python y sus dependencias, que le permite aislar los requisitos de su proyecto y garantizar la coherencia entre diferentes proyectos. Se puede crear utilizando herramientas como conda o virtualenv.

Numpy

 

Una biblioteca que proporciona soporte para matrices y matrices grandes y multidimensionales, junto con una amplia gama de funciones matemáticas de alto rendimiento para manipularlas. Es un paquete fundamental para la computación científica en Python.

Scipy

 

Una biblioteca que se basa en NumPy y proporciona funciones para aplicaciones científicas y de ingeniería, como procesamiento de señales, álgebra lineal, optimización y estadísticas. Se utiliza ampliamente en campos como la física, la ingeniería y el análisis de datos.

Pandas

 

Una biblioteca que proporciona estructuras de datos y funciones para gestionar eficientemente datos estructurados, incluidos datos tabulares como hojas de cálculo y tablas SQL. Es especialmente útil para limpiar, filtrar, agrupar y fusionar datos.

Matplotlib

 

Una biblioteca de trazado que proporciona una amplia gama de herramientas de visualización, lo que le permite crear trazados, tablas y gráficos 2D y 3D de alta calidad. A menudo se utiliza junto con NumPy y Pandas para visualizar datos científicos.

Desarrollos futuros

A medida que scikit-learn sigue evolucionando, se están realizando esfuerzos para ampliar sus capacidades con técnicas avanzadas de ensamblaje y enfoques de metaaprendizaje. Al combinar el poder de las redes neuronales con los algoritmos tradicionales, scikit-learn pretende ofrecer un kit de herramientas completo capaz de abordar una gama cada vez más amplia de desafíos de machine learning. Estos avances prometen hacerlo aún más accesible para los profesionales que buscan aprovechar las tecnologías punta en su trabajo.

Soluciones relacionadas
IBM watsonx.ai

Entrene, valide, ajuste e implemente IA generativa, modelos fundacionales y capacidades de machine learning con IBM watsonx.ai, un estudio empresarial de nueva generación para desarrolladores de IA. Cree aplicaciones de IA en menos tiempo y con menos datos.

Explore watsonx.ai
Soluciones de inteligencia artificial

Ponga la IA al servicio de su negocio con la experiencia líder del sector y el portfolio de soluciones de IA de IBM.

Explore las soluciones de IA
Servicios y consultoría de inteligencia artificial (IA)

Los servicios de IA de IBM Consulting ayudan a reinventar la forma de trabajar de las empresas usando IA para la transformación.

Explore los servicios de IA
Dé el siguiente paso

Gracias a la IA, IBM Concert descubre información crucial sobre sus operaciones y ofrece recomendaciones de mejora personalizadas para cada aplicación. Descubra cómo Concert puede hacer avanzar su negocio.

Explorar el concierto Explore las soluciones de automatización de procesos empresariales