Scikit-learn es una biblioteca Python de código abierto que simplifica el proceso de creación de modelos de aprendizaje automático. Ofrece una interfaz limpia y consistente que ayuda tanto a principiantes como a usuarios experimentados a trabajar de manera eficiente.
- Admite tareas como agrupación de regresión de clasificación y preprocesamiento
- Hace que la construcción de modelos sea rápida y confiable
- Proporciona herramientas listas para usar para capacitación y evaluación.
- Reduce la complejidad al evitar la implementación manual de algoritmos.
Instalación y uso de Scikit-learn
Antes de comenzar a construir modelos necesitamos instalar Scikit-aprende. Requiere Python 3.8 o posterior y depende de dos bibliotecas importantes: NumPy y Ciencia ficción. Asegúrese de que estén instalados primero.
Para instalar Scikit-learn ejecute el siguiente comando:
instalación de pip -U scikit-learn
Esto descargará e instalará la última versión de Scikit-learn junto con sus dependencias. Veamos varios pasos involucrados en el proceso de construcción del modelo utilizando la biblioteca Scikit-learn.
Paso 1: cargar un conjunto de datos
Un conjunto de datos consta de:
- Características (X): Variables de entrada que describen los datos.
- Objetivo (año): El valor que queremos predecir.
Scikit-learn proporciona conjuntos de datos integrados como Iris Digits y Boston Housing. Usando el conjunto de datos Iris:
- load_iris() carga los datos
- X almacena datos de características
- y almacena etiquetas de destino
- feature_names y target_names dan nombres descriptivos
Podemos inspeccionar las primeras filas para comprender la estructura. Para conjuntos de datos personalizados, Pandas se usa comúnmente para cargar archivos externos como CSV.
Pythonfrom sklearn.datasets import load_iris iris = load_iris() X = iris.data y = iris.target feature_names = iris.feature_names target_names = iris.target_names print('Feature names:' feature_names) print('Target names:' target_names) print('nType of X is:' type(X)) print('nFirst 5 rows of X:n' X[:5])
Producción:
cuanto es 10 de 1 millon
Cargando conjunto de datosA veces necesitamos trabajar con nuestros propios datos personalizados y luego cargamos un conjunto de datos externo. Para ello podemos utilizar el biblioteca de pandas para cargar y manipular conjuntos de datos fácilmente.
Para ello puedes consultar nuestro artículo sobre Cómo importar un archivo csv en pandas ?
Paso 2: dividir el conjunto de datos
Para evaluar un modelo de manera justa, dividimos los datos en:
- Conjunto de entrenamiento: utilizado para entrenar el modelo.
- Conjunto de pruebas: se utiliza para evaluar qué tan bien se generaliza el modelo.
Usando train_test_split dividimos el conjunto de datos de Iris de modo que el 60% sea para entrenamiento y el 40% para pruebas (test_size=0,4). random_state=1 garantiza la reproducibilidad.
Después de dividir obtenemos:
- X_train y_train -> Datos de entrenamiento
- X_test y_test -> Datos de prueba
Verificar las formas garantiza que los datos se divida correctamente.
Pythonfrom sklearn.model_selection import train_test_split X_train X_test y_train y_test = train_test_split(X y test_size=0.4 random_state=1)
Ahora revisemos el formas de los datos divididos para garantizar que ambos conjuntos tengan proporciones correctas de datos, evitando posibles errores en la evaluación o el entrenamiento del modelo.
Pythonprint('X_train Shape:' X_train.shape) print('X_test Shape:' X_test.shape) print('Y_train Shape:' y_train.shape) print('Y_test Shape:' y_test.shape)
Producción:
Forma de datos divididosPaso 3: Manejo de datos categóricos
Los algoritmos de aprendizaje automático funcionan con entradas numéricas, por lo que los datos categóricos (texto) deben convertirse en números. Si no se codifican correctamente, los modelos pueden malinterpretar las categorías. Scikit-learn proporciona múltiples métodos de codificación:
1. Codificación de etiquetas : Convierte cada categoría en un número entero único. Por ejemplo, en una columna con categorías como 'gato', 'perro' y 'pájaro', las convertiría en 0, 1 y 2 respectivamente. Este método funciona bien cuando las categorías tienen un orden significativo, como Medio Bajo y Alto.
- EtiquetaEncoder(): Se inicializa para crear un objeto codificador que convertirá valores categóricos en etiquetas numéricas.
- fit_transform(): Este método primero ajusta el codificador a los datos categóricos y luego transforma las categorías en las etiquetas numéricas correspondientes.
from sklearn.preprocessing import LabelEncoder categorical_feature = ['cat' 'dog' 'dog' 'cat' 'bird'] encoder = LabelEncoder() encoded_feature = encoder.fit_transform(categorical_feature) print('Encoded feature:' encoded_feature)
Producción:
conjuntos en java
Característica codificada: [1 2 2 1 0]
2. Codificación en caliente : One-Hot Encoding crea columnas binarias separadas para cada categoría. Esto resulta útil cuando las categorías no tienen ningún orden natural. Ejemplo: gato perro pájaro -> 3 nuevas columnas (gato/perro/pájaro) con 1 y 0.
- La entrada debe remodelarse en una matriz 2D
- OneHotEncoder(sparse_output=False) genera columnas binarias
from sklearn.preprocessing import OneHotEncoder import numpy as np categorical_feature = ['cat' 'dog' 'dog' 'cat' 'bird'] categorical_feature = np.array(categorical_feature).reshape(-1 1) encoder = OneHotEncoder(sparse_output=False) encoded_feature = encoder.fit_transform(categorical_feature) print('OneHotEncoded feature:n' encoded_feature)
Producción:
Además de la codificación de etiquetas y la codificación One-Hot, existen otras técnicas como Codificación media .
Paso 4: entrenar el modelo
Ahora que nuestros datos están listos, es hora de entrenar un modelo de aprendizaje automático. Scikit-learn tiene muchos algoritmos con una interfaz consistente para la predicción y evaluación del entrenamiento. Aquí usaremos Regresión logística como ejemplo.
Nota : No entraremos en detalles sobre cómo funciona el algoritmo, ya que solo nos interesa comprender su implementación.
- log_reg = Regresión logística (max_iter = 200): Creando un objeto clasificador de regresión logística.
- log_reg.fit(X_train y_train): Usando esto el modelo de regresión logística ajusta los parámetros del modelo para que se ajusten mejor a los datos.
from sklearn.linear_model import LogisticRegression log_reg = LogisticRegression(max_iter=200) log_reg.fit(X_train y_train)
Entrenamiento mediante regresión logística.Paso 5: hacer predicciones
Una vez entrenado, usamos el modelo para hacer predicciones sobre los datos de prueba X_test llamando al método de predicción. Esto devuelve etiquetas predichas y_pred.
- log_reg.predecir: Utiliza un modelo de regresión logística entrenado para predecir etiquetas para los datos de prueba X_test.
y_pred = log_reg.predict(X_test)
Paso 6: Evaluación de la precisión del modelo
Compruebe qué tan bien se está desempeñando nuestro modelo comparando y_test e y_pred. Aquí estamos utilizando el método precision_score del módulo de métricas.
Pythonfrom sklearn import metrics print('Logistic Regression model accuracy:' metrics.accuracy_score(y_test y_pred))
Producción:
Precisión del modelo de regresión logística: 0,9666666666666667
Ahora queremos que nuestro modelo haga predicciones sobre nuevos datos de muestra. Luego, la entrada de muestra se puede pasar simplemente de la misma manera que pasamos cualquier matriz de características. Aquí lo usamos como muestra = [[3 5 4 2] [2 3 5 4]]
Pythonsample = [[3 5 4 2] [2 3 5 4]] preds = log_reg.predict(sample) pred_species = [iris.target_names[p] for p in preds] print('Predictions:' pred_species)
Producción:
cómo convertir una cadena a un carácter
Predicciones: [np.str_('virginica') np.str_('virginica')]
Características de Scikit-learn
Scikit-learn se utiliza porque hace que la creación de modelos de aprendizaje automático sea sencilla y eficiente. Aquí hay algunas razones importantes:
- Herramientas listas para usar : Proporciona funciones integradas para tareas comunes como el preprocesamiento de datos, modelos de entrenamiento y realización de predicciones. Esto ahorra tiempo al evitar la necesidad de codificar algoritmos desde cero.
- Evaluación sencilla del modelo : Con herramientas como validación cruzada y métricas de rendimiento, ayuda a medir qué tan bien funciona nuestro modelo e identificar áreas de mejora.
- Amplio soporte de algoritmos : Ofrece muchos algoritmos populares de aprendizaje automático, incluida la regresión de clasificación y la agrupación, lo que nos brinda flexibilidad para elegir el modelo adecuado para nuestro problema.
- Integración fluida : Construido sobre importantes bibliotecas de Python como NumPy y SciPy para que encaje en nuestro flujo de trabajo de análisis de datos existente.
- Interfaz simple y consistente : La misma sintaxis sencilla funciona en diferentes modelos y ayuda a que sea más fácil aprender y cambiar entre algoritmos.
- Ajuste de modelo simplificado : Herramientas como la búsqueda en cuadrícula nos ayudan a ajustar la configuración de nuestro modelo para mejorar la precisión sin problemas adicionales.
Beneficios de usar Scikit-learn
- Fácil de usar : La interfaz simple y consistente de Scikit-learn lo hace accesible para principiantes y mejor para expertos.
- Ahorro de tiempo: Las herramientas y algoritmos prediseñados reducen el tiempo de desarrollo, lo que nos permite centrarnos más en resolver problemas que en codificar detalles.
- Mejor rendimiento del modelo : Las herramientas de evaluación y ajuste fáciles de usar ayudan a mejorar la precisión y confiabilidad del modelo.
- Flexible y escalable : Admite una amplia gama de algoritmos y se integra perfectamente con otras bibliotecas de Python, lo que lo hace adecuado para proyectos de cualquier tamaño.
- Fuerte apoyo comunitario : Una gran comunidad activa garantiza actualizaciones periódicas, documentación extensa y muchos recursos para ayudarnos cuando nos quedamos estancados.