En el ámbito de aprendizaje automático usando PitónScikit-Learn es una herramienta indispensable. Como biblioteca líder para el aprendizaje automático en Python, Scikit-Learn ofrece un conjunto completo de algoritmos y herramientas para abordar una amplia gama de problemas. Desde la clasificación y la regresión hasta la agrupación y la reducción de la dimensionalidad, Scikit-Learn permite a los científicos de datos crear modelos de datos robustos y eficientes. modelos de aprendizaje automáticoYa sea que sea un principiante que da sus primeros pasos en el mundo del aprendizaje automático o un profesional experimentado que busca ampliar su conjunto de herramientas, este artículo sirve como una introducción concisa e informativa a Scikit-Learn.
¿Qué es Scikit-Learn?
Descripción general de Scikit-Learn
Scikit-Learn es una biblioteca de aprendizaje automático potente y popular en Python. Proporciona una amplia gama de algoritmos y herramientas para el análisis de datos y el entrenamiento de modelos. Con su interfaz fácil de usar y eficiente, Scikit-Learn es ampliamente utilizado tanto por principiantes como por científicos de datos experimentados para resolver problemas complejos de aprendizaje automático.
Características principales
Scikit-Learn ofrece varias características clave que lo convierten en una herramienta esencial para el aprendizaje automático en Python:
- Eficiente y escalable:Scikit-Learn está diseñado para ser eficiente en términos computacionales y puede manejar grandes conjuntos de datos con facilidad. Aprovecha el poder de bibliotecas numéricas como NumPy y SciPy para garantizar una ejecución eficiente.
- Amplia gama de algoritmos:Scikit-Learn ofrece un conjunto completo de algoritmos de aprendizaje automático, incluidos métodos de aprendizaje supervisados y no supervisados. Estos algoritmos abarcan desde métodos clásicos como la regresión lineal y la regresión logística hasta técnicas más avanzadas como los bosques aleatorios y las máquinas de vectores de soporte.
- Preprocesamiento de datos e ingeniería de características:Scikit-Learn ofrece una variedad de herramientas para el preprocesamiento de datos y la ingeniería de características. Proporciona funciones para manejar datos faltantes, escalar características, codificar variables categóricas y dividir datos en conjuntos de prueba y entrenamiento.
- Selección y evaluación de modelos:Scikit-Learn ofrece herramientas sólidas para la selección y evaluación de modelos, incluidas la validación cruzada y la búsqueda en cuadrícula. Estas técnicas ayudan a encontrar los mejores hiperparámetros para un modelo determinado y a evaluar su rendimiento mediante diversas métricas de evaluación.
- Integración con otras bibliotecas:Scikit-Learn se integra perfectamente con otras bibliotecas populares de Python, como NumPy, Pandas y Matplotlib. Esto permite a los usuarios aprovechar la rica funcionalidad de estas bibliotecas junto con Scikit-Learn para la manipulación de datos, la visualización y la evaluación de modelos.
Algoritmos soportados
Scikit-Learn admite una amplia gama de algoritmos de aprendizaje automático para tareas de aprendizaje supervisadas y no supervisadas. Algunos de los algoritmos populares compatibles con Scikit-Learn incluyen:
- Regresión lineal:Un algoritmo simple pero poderoso para el análisis de regresión, que modela la relación entre la variable dependiente y una o más variables independientes.
- Regresión logística:Un algoritmo de clasificación que modela la probabilidad de un resultado binario o multiclase basado en una combinación lineal de características de entrada.
- Árboles de decisión:Un algoritmo versátil que construye un modelo tipo árbol para tomar decisiones basadas en un conjunto de condiciones o reglas.
- Máquinas de vectores de soporte (SVM):Un algoritmo poderoso que realiza la clasificación al encontrar el mejor hiperplano para separar diferentes clases en el espacio de características.
- Bayes ingenuo:Un algoritmo probabilístico basado en el teorema de Bayes, comúnmente utilizado para la clasificación de texto y el filtrado de spam.
Además de estos algoritmos, Scikit-Learn también admite varios algoritmos de agrupamiento, técnicas de reducción de dimensionalidad y métodos de conjunto, como bosques aleatorios y potenciación de gradiente.
Instalación y configuración
Requisitos del sistema
Antes de instalar Scikit-Learn, asegúrese de que su sistema cumpla con los siguientes requisitos:
- Python 3.x (Scikit-Learn no es compatible con Python 2.x)
- NumPy y SciPy (Scikit-Learn depende de estas bibliotecas para realizar cálculos numéricos eficientes)
- Matplotlib (opcional, para visualización de datos)
Instalación de Scikit-Learn
Para instalar Scikit-Learn, puede utilizar el administrador de paquetes de Python, pip. Abra su terminal o símbolo del sistema y ejecute el siguiente comando:
pip instala scikit-learn
Si prefiere utilizar Anaconda, puede instalar Scikit-Learn utilizando el administrador de paquetes conda:
Conda instala scikit-learn
Scikit-Learn ahora está listo para usarse en su entorno Python.
Importación de Scikit-Learn
Para comenzar a utilizar Scikit-Learn, debe importar los módulos necesarios. En Python, puede importar Scikit-Learn mediante la siguiente instrucción:
importar sklearn
Una vez importado, puede acceder a las distintas clases y funciones proporcionadas por Scikit-Learn para realizar tareas de aprendizaje automático.
Representación de datos en Scikit-Learn
Características y variables objetivo
En Scikit-Learn, los datos se representan normalmente como una matriz o arreglo bidimensional, donde cada fila representa una muestra u observación individual, y cada columna representa una característica o atributo de esa muestra. La variable objetivo, que pretendemos predecir, suele representarse como un arreglo o vector unidimensional independiente.
Matrices Numpy y DataFrames de Pandas
Scikit-Learn puede trabajar con matrices NumPy y Pandas DataFrames como entrada. Las matrices NumPy son eficientes y se utilizan ampliamente para cálculos numéricos, mientras que los Pandas DataFrames ofrecen funciones adicionales para la manipulación y el análisis de datos.
Para convertir un Pandas DataFrame en una matriz NumPy, puede utilizar el valores
atributo:
importar pandas como pd importar numpy como np
Crear un DataFrame
df = pd.DataFrame({'característica1': [1, 2, 3], 'característica2': [4, 5, 6], 'objetivo': [0, 1, 0]})
Convertir DataFrame en una matriz NumPy
datos = df.valores
Características independientes y variables objetivo
X = datos[:, :-1] # Características y = datos[:, -1] # Objetivo
Manejo de datos faltantes
Los conjuntos de datos del mundo real suelen contener valores faltantes, lo que puede afectar negativamente el rendimiento de los modelos de aprendizaje automático. Scikit-Learn ofrece varias estrategias para gestionar los datos faltantes, incluidas la imputación y la eliminación.
Un método popular es la imputación de media, donde los valores faltantes se reemplazan con la media de los valores disponibles para esa característica. Scikit-Learn proporciona la SimpleImputadora
clase para imputar valores faltantes:
desde sklearn.impute importar SimpleImputer
Crear un objeto imputador
imputador = SimpleImputer(estrategia='media')
Ajuste el imputador a los datos
imputador.fit(X)
Imputar valores faltantes
X_imputado = imputado.transform(X)
Manejo de variables categóricas
Las variables categóricas, que pueden adoptar una cantidad limitada de valores, deben codificarse en un formato numérico antes de poder usarse en algoritmos de aprendizaje automático. Scikit-Learn ofrece varias técnicas para codificar variables categóricas, como la codificación one-hot y la codificación de etiquetas.
La codificación one-hot crea características binarias para cada categoría, lo que representa la ausencia o presencia de esa categoría. Scikit-Learn proporciona Codificador OneHot
clase para codificación one-hot:
desde sklearn.preprocessing importar OneHotEncoder
Crear un objeto codificador
codificador = OneHotEncoder()
Ajuste el codificador a los datos
codificador.fit(X)
Codificar variables categóricas
X_encoded = codificador.transform(X)
La codificación de etiquetas asigna una etiqueta numérica única a cada categoría. Scikit-Learn proporciona la Codificador de etiquetas
clase para codificación de etiquetas:
desde sklearn.preprocessing importar LabelEncoder
Crear un objeto codificador
codificador = LabelEncoder()
Ajuste el codificador a los datos
codificador.fit(y)
Codificar variable categórica
y_encoded = codificador.transform(y)
Preprocesamiento de datos
Limpieza de datos
La limpieza de datos implica eliminar o corregir errores, inconsistencias o valores atípicos en el conjunto de datos. Esto puede mejorar la calidad y la confiabilidad de las predicciones del modelo.
Scikit-Learn ofrece varias técnicas para la limpieza de datos, como el manejo de datos faltantes (como se explicó anteriormente), la detección de valores atípicos y la reducción de ruido. Estas técnicas se pueden aplicar antes o después del escalado de características, según los requisitos específicos del problema.
Escalado de datos
El escalado de características es un paso crucial en muchos algoritmos de aprendizaje automático, ya que garantiza que todas las características tengan una escala similar. Esto puede evitar que algunas características dominen sobre otras y mejorar el rendimiento y la convergencia del modelo.
Scikit-Learn ofrece varios métodos para escalar características, entre ellos la estandarización y la normalización. La estandarización escala cada característica de modo que tenga una media de 0 y una desviación estándar de 1, mientras que la normalización escala cada característica a un rango específico, generalmente entre 0 y 1.
desde sklearn.preprocessing importar StandardScaler, MinMaxScaler
Crear un objeto escalador
escalador = StandardScaler()
Ajuste el escalador a los datos
escalador.fit(X)
Escalar las funciones
X_scaled = escalador.transform(X)
Codificación de características
Además de manejar variables categóricas, la codificación de características también puede implicar la transformación y combinación de características existentes para crear nuevas características informativas. Este proceso se conoce a menudo como ingeniería de características y es crucial para mejorar el rendimiento y la interpretabilidad de los modelos de aprendizaje automático.
Scikit-Learn ofrece varias técnicas para la codificación de características, como características polinómicas, términos de interacción y transformaciones de Fourier. Estas técnicas se pueden utilizar para crear relaciones no lineales y capturar interacciones de orden superior entre características.
División de datos para entrenamiento y pruebas
Para evaluar el rendimiento de un modelo de aprendizaje automático, es esencial contar con conjuntos de datos separados para el entrenamiento y las pruebas. Scikit-Learn proporciona prueba_del_entrenamiento_división
función para dividir los datos en un conjunto de entrenamiento y un conjunto de prueba.
desde sklearn.model_selection importar train_test_split
Dividir los datos en conjuntos de entrenamiento y prueba
X_train, X_test, y_train, y_test = tren_prueba_división(X, y, tamaño_prueba=0.2, estado_aleatorio=42)
El tamaño de prueba
El parámetro especifica la proporción de los datos que se utilizarán para la prueba y la estado aleatorio
El parámetro garantiza la reproducibilidad fijando la semilla aleatoria.
Aprendizaje supervisado
Descripción general del aprendizaje supervisado
El aprendizaje supervisado es un tipo de aprendizaje automático en el que el modelo aprende a partir de datos de entrenamiento etiquetados para realizar predicciones o tomar decisiones. Implica proporcionar características de entrada y sus valores objetivo correspondientes al modelo, lo que le permite aprender la relación entre las características y el objetivo.
Scikit-Learn ofrece una amplia gama de algoritmos de aprendizaje supervisado para tareas de regresión y clasificación. Estos algoritmos utilizan diferentes técnicas matemáticas y estadísticas para aprender los patrones y relaciones subyacentes en los datos.
Regresión lineal
La regresión lineal es un algoritmo simple pero potente para el análisis de regresión, cuyo objetivo es predecir una variable objetivo continua en función de una o más características de entrada. Supone una relación lineal entre las características y la variable objetivo.
Scikit-Learn proporciona la Regresión lineal
clase para regresión lineal:
desde sklearn.linear_model importar LinearRegression
Crear un objeto de regresión lineal
modelo = Regresión lineal()
Ajustar el modelo a los datos de entrenamiento
modelo.fit(tren_X, tren_Y)
Hacer predicciones sobre nuevos datos
y_pred = modelo.predict(X_test)
Regresión logística
La regresión logística es un algoritmo de clasificación que modela la probabilidad de un resultado binario o multiclase en función de una combinación lineal de características de entrada. Se utiliza ampliamente para problemas de clasificación binaria, como la detección de correo basura o el diagnóstico de enfermedades.
Scikit-Learn proporciona la Regresión logística
clase para regresión logística:
desde sklearn.linear_model importar LogisticRegression
Crear un objeto de regresión logística
modelo = Regresión logística()
Ajustar el modelo a los datos de entrenamiento
modelo.fit(tren_X, tren_Y)
Hacer predicciones sobre nuevos datos
y_pred = modelo.predict(X_test)
Árboles de decisión
Los árboles de decisión son algoritmos versátiles que construyen un modelo similar a un árbol para tomar decisiones basadas en un conjunto de condiciones o reglas. Se utilizan comúnmente tanto para tareas de regresión como de clasificación y pueden manejar variables tanto numéricas como categóricas.
Scikit-Learn proporciona la Regresor del árbol de decisiones
clase para la regresión del árbol de decisión y la Clasificador de árbol de decisiones
Clase para la clasificación del árbol de decisión:
desde sklearn.tree importar DecisionTreeRegressor, DecisionTreeClassifier
Crear un objeto de árbol de decisión
modelo = DecisionTreeRegressor() # Para regresión
o
modelo = DecisionTreeClassifier() # Para clasificación
Ajustar el modelo a los datos de entrenamiento
modelo.fit(tren_X, tren_Y)
Hacer predicciones sobre nuevos datos
y_pred = modelo.predict(X_test)
Máquinas de vectores de soporte
Las máquinas de vectores de soporte (SVM) son algoritmos potentes que realizan la clasificación al encontrar el mejor hiperplano para separar las diferentes clases en el espacio de características. Pueden manejar problemas de clasificación tanto lineales como no lineales y son particularmente eficaces en espacios de alta dimensión.
Scikit-Learn proporciona la CVS
clase para clasificación de vectores de soporte:
Desde sklearn.svm importar SVC
Crear un objeto clasificador de vectores de soporte
modelo = SVC()
Ajustar el modelo a los datos de entrenamiento
modelo.fit(tren_X, tren_Y)
Hacer predicciones sobre nuevos datos
y_pred = modelo.predict(X_test)
Bayes ingenuo
Naive Bayes es un algoritmo probabilístico basado en el teorema de Bayes y se utiliza habitualmente para la clasificación de texto y el filtrado de spam. Supone que todas las características son condicionalmente independientes dada la etiqueta de clase y estima la probabilidad de cada clase en función de las características observadas.
Scikit-Learn proporciona varios clasificadores Bayesianos ingenuos, incluidos GaussianoNB
para funciones continuas y MultinomialNB
Para características discretas:
desde sklearn.naive_bayes importar GaussianNB, MultinomialNB
Crear un objeto clasificador Bayes ingenuo
modelo = GaussianNB() # Para características continuas
o
modelo = MultinomialNB() # Para características discretas
Ajustar el modelo a los datos de entrenamiento
modelo.fit(tren_X, tren_Y)
Hacer predicciones sobre nuevos datos
y_pred = modelo.predict(X_test)
Aprendizaje no supervisado
Descripción general del aprendizaje no supervisado
El aprendizaje no supervisado es un tipo de aprendizaje automático en el que el modelo aprende a partir de datos no etiquetados para descubrir patrones o estructuras ocultas. Implica proporcionar características de entrada sin ningún valor objetivo correspondiente, lo que permite que el modelo aprenda la distribución subyacente de los datos.
Scikit-Learn ofrece una amplia gama de algoritmos de aprendizaje no supervisado para tareas como agrupamiento, reducción de dimensionalidad y detección de anomalías. Estos algoritmos utilizan diferentes técnicas, como mediciones de distancia y modelado probabilístico, para extraer información significativa de los datos.
Análisis de componentes principales (PCA)
El análisis de componentes principales (PCA) es una técnica de reducción de dimensionalidad que tiene como objetivo proyectar los datos en un espacio de menor dimensión, conservando la mayor cantidad posible de información original. Esto se logra al encontrar las direcciones (componentes principales) a lo largo de las cuales los datos varían más.
Scikit-Learn proporciona la PCA
Clase para PCA:
Desde sklearn.decomposition importar PCA
Crear un objeto PCA
pca = PCA(n_componentes=2)
Ajuste el modelo PCA a los datos
pca.ajuste(X)
Transformar los datos al espacio de menor dimensión
X_transformado = pca.transform(X)
Agrupamiento de k-medias
El agrupamiento k-Means es un algoritmo popular para dividir los datos en k grupos, donde cada muestra pertenece al centro del grupo más cercano. Su objetivo es minimizar la suma de cuadrados dentro del grupo, agrupando de manera eficaz las muestras similares.
Scikit-Learn proporciona la KMeans
Clase para agrupamiento k-medias:
desde sklearn.cluster importar KMeans
Crear un objeto de agrupamiento k-Means
kmeans = KMeans(n_clústeres=3)
Ajuste el modelo k-Means a los datos
kmeans.fit(X)
Predecir las etiquetas de los clústeres para los datos
etiquetas = kmeans.predict(X)
Agrupamiento jerárquico
La agrupación jerárquica es un algoritmo aglomerativo que comienza con cada muestra como un grupo individual y fusiona sucesivamente los grupos más similares hasta que se cumple una condición de terminación. El resultado es una jerarquía de grupos, que se puede visualizar como una estructura en forma de árbol denominada dendrograma.
Scikit-Learn proporciona la Aglomeración aglomerativa
clase para agrupamiento jerárquico:
desde sklearn.cluster importar AgglomerativeClustering
Crear un objeto de agrupamiento aglomerativo
jerárquico = Aglomeración aglomerativa (n_clusters=3)
Ajuste el modelo de agrupamiento aglomerativo a los datos
ajuste jerárquico(X)
Predecir las etiquetas de los clústeres para los datos
etiquetas = etiquetas.jerárquicas_
Selección y evaluación de modelos
Validación cruzada
La validación cruzada es una técnica ampliamente utilizada para estimar el rendimiento de un modelo de aprendizaje automático con datos no vistos. Implica dividir los datos disponibles en múltiples subconjuntos o pliegues, entrenar el modelo en un subconjunto de los pliegues y evaluar su rendimiento en el pliegue restante.
Scikit-Learn proporciona la puntuación de val_cruzado
Función para realizar la validación cruzada:
desde sklearn.model_selection importar cross_val_score
Realizar una validación cruzada en un modelo
puntuaciones = cross_val_score(modelo, X, y, cv=5)
El currículum vitae
El parámetro especifica la cantidad de pliegues que se utilizarán para la validación cruzada. La función devuelve una matriz de puntuaciones, una para cada pliegue.
Búsqueda en cuadrícula
La búsqueda en cuadrícula es una técnica para ajustar hiperparámetros, en la que se define una cuadrícula de valores de hiperparámetros y se entrena y evalúa el modelo para cada combinación de hiperparámetros. Ayuda a encontrar el conjunto óptimo de hiperparámetros que maximiza el rendimiento del modelo.
Scikit-Learn proporciona la Búsqueda de cuadrícula de CV
Clase para realizar búsquedas en cuadrícula:
desde sklearn.model_selection importar GridSearchCV
Definir una cuadrícula de hiperparámetros para buscar
param_grid = {'C': [1, 10, 100], 'gamma': [0,1, 0,01, 0,001]}
Realizar una búsqueda de cuadrícula en un modelo
grid_search = GridSearchCV(modelo, param_grid, cv=5)
Ajuste el modelo de búsqueda de cuadrícula a los datos
grid_search.fit(tren_X, tren_Y)
Obtenga los mejores hiperparámetros y el rendimiento correspondiente
mejores_parámetros = búsqueda_cuadrícula.mejores_parámetros_ mejor_puntuación = búsqueda_cuadrícula.mejor_puntuación_
Métricas de evaluación
Las métricas de evaluación se utilizan para medir el rendimiento de un modelo de aprendizaje automático. Scikit-Learn ofrece una amplia gama de métricas de evaluación para tareas de regresión, clasificación y agrupamiento. Estas métricas ayudan a evaluar la precisión, exactitud, recuperación y otros aspectos del rendimiento del modelo.
Algunas métricas de evaluación comúnmente utilizadas en Scikit-Learn incluyen el error cuadrático medio (MSE), la precisión, la exactitud, la recuperación, la puntuación F1 y la puntuación de silueta.
Métodos de conjunto
Harpillera
Bagging, abreviatura de bootstrap gregating, es un método de conjunto que combina varios modelos entrenando cada modelo en un subconjunto de datos de entrenamiento muestreado aleatoriamente. Ayuda a reducir el sobreajuste y a mejorar la estabilidad y la solidez de las predicciones.
Scikit-Learn proporciona la Regresor de embolsado
y Clasificador de bolsas
clases para embolsado:
de sklearn.ensemble importar BaggingRegressor, BaggingClassifier
Crear un objeto regresor de bagging
embolsado = BaggingRegressor(estimador_base=modelo, n_estimadores=10)
Crear un objeto clasificador de ensacado
ensacado = BaggingClassifier(estimador_base=modelo, n_estimadores=10)
Impulsando
El boosting es otro método de conjunto que combina varios modelos débiles en un modelo fuerte mediante el ajuste iterativo de los pesos de las muestras de entrenamiento en función del rendimiento de los modelos anteriores. Se centra en las muestras que son difíciles de clasificar y mejora gradualmente el rendimiento del modelo.
Scikit-Learn proporciona la Regresor AdaBoost
y Clasificador AdaBoost
Clases para potenciar:
desde sklearn.ensemble importar AdaBoostRegressor, AdaBoostClassifier
Crear un objeto regresor AdaBoost
Impulso = AdaBoostRegressor(estimador_base=modelo, n_estimadores=10)
Crear un objeto clasificador AdaBoost
potenciación = AdaBoostClassifier(estimador_base=modelo, n_estimadores=10)
Bosques aleatorios
Random Forests es un método de conjunto que combina múltiples árboles de decisión, donde cada árbol se entrena con un subconjunto de características seleccionado aleatoriamente. Reduce el sobreajuste y mejora la precisión y la solidez de las predicciones.
Scikit-Learn proporciona la Regresor de bosque aleatorio
y Clasificador aleatorio de bosques
clases para bosques aleatorios:
desde sklearn.ensemble importar RandomForestRegressor, RandomForestClassifier
Crear un objeto regresor de bosque aleatorio
bosque = RandomForestRegressor(n_estimators=10)
Crear un objeto clasificador de bosque aleatorio
bosque = RandomForestClassifier(n_estimators=10)
Aumento de gradiente
El aumento de gradiente es un método de conjunto que combina varios modelos débiles, como árboles de decisión, en un modelo sólido minimizando iterativamente una función de pérdida. Construye el modelo por etapas, donde cada nuevo modelo corrige los errores de los modelos anteriores.
Scikit-Learn proporciona la Regresor potenciador de gradiente
y Clasificador de refuerzo de gradiente
Clases para potenciar gradientes:
desde sklearn.ensemble importar GradientBoostingRegressor, GradientBoostingClassifier
Crear un objeto regresor potenciador de gradiente
Impulso = GradientBoostingRegressor(n_estimators=10)
Crear un objeto clasificador potenciador de gradiente
Impulso = GradientBoostingClassifier(n_estimators=10)
Reducción de dimensionalidad
Análisis discriminante lineal (LDA)
El análisis discriminante lineal (LDA) es una técnica de reducción de dimensionalidad que tiene como objetivo encontrar un espacio de menor dimensión que maximice la separación entre diferentes clases. Esto se logra proyectando los datos sobre un conjunto de vectores discriminantes lineales.
Scikit-Learn proporciona la Análisis discriminante lineal
clase para LDA:
de sklearn.discriminant_analysis importar LinearDiscriminantAnalysis
Crear un objeto LDA
lda = Análisis discriminante lineal (n_componentes=2)
Ajuste el modelo LDA a los datos
lda.fit(X, y)
Transformar los datos al espacio de menor dimensión
X_transformado = lda.transform(X)
Integración de vecinos estocásticos distribuidos en t (t-SNE)
La incrustación estocástica de vecinos distribuida en t (t-SNE) es una técnica de reducción de dimensionalidad que tiene como objetivo preservar la estructura local y global de los datos en un espacio de menor dimensión. Esto se logra modelando la distribución de probabilidad de similitudes por pares entre puntos de datos.
Scikit-Learn proporciona la Encefalopatía traumática transmisible
Clase para t-SNE:
desde sklearn.manifold importar TSNE
Crear un objeto t-SNE
tsne = TSNE(n_componentes=2)
Ajuste el modelo t-SNE a los datos
tsne.fit(X)
Transformar los datos al espacio de menor dimensión
X_transformado = tsne.transform(X)
Guardar y cargar modelos
Serialización y deserialización
La serialización es el proceso de convertir un modelo a un formato serializado que se puede almacenar en un archivo o transferir a través de una red. La deserialización es el proceso inverso de reconstrucción del modelo a partir del formato serializado.
Scikit-Learn proporciona la conservar en vinagre
Módulo para serialización y deserialización:
pepinillos de importación
Serializar el modelo en un archivo
con open('model.pkl', 'wb') como archivo: pickle.dump(model, file)
Deserializar el modelo desde un archivo
con open('model.pkl', 'rb') como archivo: model = pickle.load(file)
Pickle y Joblib
Pickle es un módulo integrado en Python que puede serializar y deserializar objetos, incluidos los modelos de Scikit-Learn. Sin embargo, puede que no sea la opción más eficiente para modelos o conjuntos de datos grandes.
Scikit-Learn también proporciona la biblioteca de trabajos
módulo, que es una alternativa más eficiente a pickle para serialización y deserialización:
desde sklearn.externals importar joblib
Serializar el modelo en un archivo
joblib.dump(modelo, 'modelo.pkl')
Deserializar el modelo desde un archivo
modelo = joblib.load('modelo.pkl')
El biblioteca de trabajos
El módulo admite el paralelismo y proporciona un mejor rendimiento para grandes tareas de computación científica.
Guardar y cargar modelos
Una vez que se entrena y evalúa un modelo, suele ser necesario guardarlo para usarlo o implementarlo en el futuro. Scikit-Learn ofrece varias opciones para guardar y cargar modelos, incluidas la serialización y deserialización mediante pickle o joblib.
Al guardar el modelo, puede evitar la necesidad de volver a entrenarlo cada vez que desee usarlo. Esto resulta especialmente útil cuando se trabaja con grandes conjuntos de datos o modelos computacionalmente costosos.
Para guardar un modelo entrenado, puede utilizar el ahorrar
método proporcionado por el objeto modelo:
modelo.save(“modelo.h5”)
Para cargar un modelo guardado, puede utilizar el modelo de carga
función de la biblioteca correspondiente:
desde tensorflow.keras.models importar load_model
modelo = cargar_modelo(“modelo.h5”)
Asegúrese de importar la biblioteca adecuada y especificar la ruta de archivo correcta al guardar y cargar modelos.
En conclusión, Scikit-Learn es una biblioteca de aprendizaje automático completa y potente en Python que ofrece una amplia gama de algoritmos y herramientas para el análisis de datos y el entrenamiento de modelos. Con su interfaz fácil de usar, implementación eficiente y amplia documentación, Scikit-Learn es la opción ideal tanto para principiantes como para científicos de datos experimentados. Si sigue las instrucciones de instalación y configuración, comprende la representación de datos, las técnicas de preprocesamiento, los algoritmos de aprendizaje supervisado y no supervisado, los métodos de selección y evaluación de modelos, los métodos de conjunto, las técnicas de reducción de dimensionalidad y los procesos de serialización y deserialización, estará bien equipado para abordar diversas tareas de aprendizaje automático utilizando Scikit-Learn.