[Ciencia de datos] Scikit-learn [Scikit-learn, carga de datos, datos del conjunto de entrenamiento y del conjunto de prueba, creación de modelos, ajuste de modelos, ajuste de datos y modelos, evaluación del rendimiento del modelo, ajuste del modelo]


1. Aprendizaje de ciencias

Scikit-learn esBiblioteca Python de código abiertoImplemente algoritmos de aprendizaje automático , preprocesamiento , validación cruzada y visualización a través de una interfaz unificada .

Insertar descripción de la imagen aquí

>>> from sklearn import neighbors, datasets, preprocessing
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.metrics import accuracy_score
>>> iris = datasets.load_iris()
>>> X, y = iris.data[:, :2], iris.target
>>> X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=33)
>>> scaler = preprocessing.StandardScaler().fit(X_train)
>>> X_train = scaler.transform(X_train)
>>> X_test = scaler.transform(X_test)
>>> knn = neighbors.KNeighborsClassifier(n_neighbors=5)
>>> knn.fit(X_train, y_train)
>>> y_pred = knn.predict(X_test)
>>> accuracy_score(y_test, y_pred)

  Lo anterior se utilizabiblioteca scikit-learnRealice el proceso de clasificación de k vecinos más cercanos (KNN) para obtener la precisión de predicción del clasificador KNN en el conjunto de datos del iris.


2. Cargar datos

  Aprendizaje científicoLos datos procesados ​​son números almacenados como matrices NumPy o matrices dispersas SciPy . También admite otros tipos de datos, como los marcos de datos Pandas, que se pueden convertir en matrices numéricas .

>>> import numpy as np
# 导入了 NumPy 库,用于进行数值计算和数组操作
>>> X = np.random.random((10,5))
>>> y = np.array(['M','M','F','F','M','F','M','M','F','F','F'])
>>> X[X < 0.7] = 0

  Arriba usamos la biblioteca NumPy para generar una matriz aleatoria X con 10 filas y 5 columnas, y configuramos elementos menores de 0,7 a 0. Al mismo tiempo, se crea una matriz NumPy y que contiene las etiquetas de género . Obtenemos una matriz aleatoria X de forma (10, 5), donde los elementos menores de 0,7 se establecen en 0, y creamos una matriz y que contiene las etiquetas de género. Estos datos se pueden utilizar para posterioresanalizarModeladou otras tareas.


3. Datos del conjunto de entrenamiento y del conjunto de prueba

La función train_test_split de la biblioteca scikit-learn   se utiliza para dividir el conjunto de datos enConjunto de entrenamientoyequipo de prueba

>>> from sklearn.model_selection import train_test_split
>>> X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

  Obtenga los datos de características X_train y X_test del conjunto de entrenamiento dividido y el conjunto de prueba, así como los datos de etiqueta de categoría correspondientes y_train e y_test. Se puede realizar en el set de entrenamiento.Entrenamiento modeloy luego use el conjunto de prueba para evaluar el rendimiento y la precisión del modelo .


4. Crea un modelo

4.1 Evaluador de aprendizaje supervisado

4.1.1 Regresión lineal

  Usamos la clase LinearRegression de la biblioteca scikit-learn ,Crear un objeto de modelo de regresión lineal

>>> from sklearn.linear_model import LinearRegression
>>> lr = LinearRegression(normalize=True)

  Cree un objeto de modelo de regresión lineal lr .


4.1.2 Máquina de vectores de soporte (SVM)

  Usamos la clase SVC de la biblioteca scikit-learn para crear unObjeto de modelo de máquina de vectores de soporte (SVM)

>>> from sklearn.svm import SVC
>>> svc = SVC(kernel='linear')

  Cree un objeto de modelo de máquina de vectores de soporte svc yClasificación utilizando la función kernel lineal.


4.1.3 Bayes ingenuo

  Usando la clase GaussianNB de la biblioteca scikit-learn , cree unObjeto modelo ingenuo de Bayes

>>> from sklearn.naive_bayes import GaussianNB
>>> gnb = GaussianNB()

  Crea un objeto de modelo Naive Bayes gnb . El modelo Naive Bayes es un modelo probabilístico de uso común que es adecuado paraProblema de clasificación


4.1.4 KNN

  Utilice el módulo de vecinos de la biblioteca scikit-learn para crear unK objeto clasificador vecino más cercano (KNN)

>>> from sklearn import neighbors
>>> knn = neighbors.KNeighborsClassifier(n_neighbors=5)

  Cree un objeto clasificador KNN knn queOrdenar por vecinos más cercanos. KNN es unMétodo de aprendizaje basado en instancias para clasificación basada en etiquetas de vecinos más cercanos


4.2 Evaluador de aprendizaje no supervisado

4.2.1 Análisis de componentes principales (PCA)

  Usando la clase PCA de la biblioteca scikit-learn , cree unObjeto de análisis de componentes principales (PCA)

>>> from sklearn.decomposition import PCA
>>> pca = PCA(n_components=0.95)

  Cree un objeto PCA pca , que se pueda utilizar para la reducción de dimensionalidad o la extracción de características . PCA es una técnica de reducción de dimensionalidad comúnmente utilizada que puedeAsigne datos de alta dimensión al espacio de baja dimensión y conserve las características principales de los datos.


4.2.2 K Medias

  Usando la clase KMeans de la biblioteca scikit-learn ,Crear un objeto agrupador de K-Means

>>> from sklearn.cluster import KMeans
>>> k_means = KMeans(n_clusters=3, random_state=0)

  Cree un objeto agrupador de K-Means k_means que agrupará puntos de datos en función de la distancia entre ellos . K-Means es un algoritmo de agrupamiento de uso común .Divida los puntos de datos en un número predefinido de grupos para que los puntos de datos dentro de los grupos sean lo más similares posible y los puntos de datos entre diferentes grupos sean muy diferentes.


5. Ajuste del modelo

5.1 Aprendizaje supervisado

  EspectáculosEl proceso de entrenamiento de tres algoritmos diferentes de aprendizaje automático en el conjunto de entrenamiento.

# 拟合数据与模型
>>> lr.fit(X, y)
# 使用逻辑回归算法(Logistic Regression)对数据集(X, y)进行拟合。其中,X是输入特征矩阵,y是对应的目标变量向量
>>> knn.fit(X_train, y_train)
# 使用K近邻算法(K-Nearest Neighbors)对训练集(X_train, y_train)进行拟合。其中,X_train是训练集的输入特征矩阵,y_train是对应的目标变量向量
>>> svc.fit(X_train, y_train)
# 使用支持向量机算法(Support Vector Machine)对训练集(X_train, y_train)进行拟合。其中,X_train是训练集的输入特征矩阵,y_train是对应的目标变量向量

5.2 Aprendizaje no supervisado

El proceso de agrupación y reducción de la dimensionalidad de las características   en el conjunto de entrenamiento es el siguiente.

>>> k_means.fit(X_train) # 拟合数据与模型
>>> pca_model = pca.fit_transform(X_train) # 拟合并转换数据

  El modelo se ajustará al algoritmo de agrupamiento K-Means y al algoritmo PCA según los datos del conjunto de entrenamiento proporcionado . Para el algoritmo de agrupamiento de K-Means , el modeloAprenda a encontrar el punto central óptimo del clúster;Para el algoritmo PCA , el modeloAprenda a encontrar el espacio de proyección óptimo del componente principal. Estas operaciones de ajuste generarán los modelos correspondientes u objetos de transformación para facilitar operaciones posteriores de agrupamiento o reducción de dimensionalidad en nuevos datos .


6. Adaptación de datos y modelos

6.1 Estandarización

  El siguiente es el proceso de normalización de datos para conjuntos de entrenamiento y prueba .

>>> from sklearn.preprocessing import StandardScaler
>>> scaler = StandardScaler().fit(X_train)
>>> standardized_X = scaler.transform(X_train)
>>> standardized_X_test = scaler.transform(X_test)

  Cree un escalador de objetos StandardScaler yAjústalo usando los datos del conjunto de entrenamiento.. Luego podemos usar el escalador para estandarizar los conjuntos de entrenamiento y prueba para garantizar que los datos tengan la misma escala y rango paraMejorar el entrenamiento de modelos y los efectos de predicción.


6.2 Normalización

  A continuación, aprendemos a realizar la normalización de datos en el conjunto de entrenamiento y el conjunto de prueba .

>>> from sklearn.preprocessing import Normalizer
>>> scaler = Normalizer().fit(X_train)
>>> normalized_X = scaler.transform(X_train)
>>> normalized_X_test = scaler.transform(X_test)

  Cree un escalador de objetos Normalizador y ajústelo utilizando los datos del conjunto de entrenamiento. Entonces podemosUtilice un escalador para normalizar el conjunto de entrenamiento y el conjunto de prueba para garantizar que los datos tengan una norma unitaria en la dirección del vector de características.. La normalización puede hacer que los vectores de características entre diferentes muestras sean más comparables y contribuir a los efectos de entrenamiento y predicción de ciertos algoritmos de aprendizaje automático.


6.3 Binarización

  Aquí está el proceso de binarización del conjunto de datos .

>>> from sklearn.preprocessing import Binarizer
>>> binarizer = Binarizer(threshold=0.0).fit(X)
>>> binary_X = binarizer.transform(X)

  Cree un binarizador de objetos Binarizer y utilice el valor umbral umbral = 0,0 para binarizar el conjunto de datos X. Entonces podemosConversión binaria de un conjunto de datos usando binarizadory guarde el resultado en la variable binario_X . La binarización puede hacer que las características entre diferentes muestras sean más comparables y contribuir a los efectos de entrenamiento y predicción de ciertos algoritmos de aprendizaje automático.


6.4 Funciones de clasificación de codificación

El proceso de codificación de etiquetas de la variable de destino   mediante LabelEncoder .

>>> from sklearn.preprocessing import LabelEncoder
>>> enc = LabelEncoder()
>>> y = enc.fit_transform(y)

  Cree un objeto LabelEncoder enc y utilice su método fit_transform para realizar el procesamiento de codificación de etiquetas en la variable de destino y. El resultado codificado sobrescribirá el valor de la variable de destino original y, de modo que la etiqueta original se reemplace con la codificación entera correspondiente .Codificación de etiquetasA menudo se utiliza para convertir variables objetivo no numéricas en una forma numérica aceptable para el modelo para el entrenamiento y la predicción de tareas de aprendizaje automático.


6.5 Ingresar valores faltantes

  Usando el objeto ImportadorComplete los valores faltantes en el conjunto de datos

>>> from sklearn.preprocessing import Imputer
>>> imp = Imputer(missing_values=0, strategy='mean', axis=0)
>>> imp.fit_transform(X_train)

  Cree un objeto Imputer imp y use su método fit_transform para completar los valores faltantes en el conjunto de entrenamiento X_train. El resultado completado sobrescribirá los datos del conjunto de entrenamiento original X_train, de modo que los valores faltantes se reemplacen por la media de la columna correspondiente .La clase Imputer se utiliza a menudo para manejar valores faltantes en la etapa de preprocesamiento de datos para garantizar la integridad y precisión del conjunto de datos.


6.6 Generar características polinómicas

  Usando características polinómicasExpansión polinomial de características.

>>> from sklearn.preprocessing import PolynomialFeatures
>>> poly = PolynomialFeatures(5)
>>> poly.fit_transform(X)

  Cree un objeto PolynomialFeatures poli y use su método fit_transform para expandir polinomialmente el conjunto de datos X. El resultado ampliado contendrá varias combinaciones de potencia de las características originales ,De términos de primer grado a términos de mayor grado 5. La expansión polinómica se utiliza a menudo para aumentar la complejidad del modelo y capturar relaciones no lineales entre características, mejorando así el poder predictivo del modelo .


7. Evaluar el rendimiento del modelo.

7.1 Evaluar el desempeño del modelo

7.1.1 Precisión

  Utilice el método de puntuación del evaluador y la función de puntuación métrica en scikit-learn para evaluar la precisión del modelo .

>>> knn.score(X_test, y_test)
# 评估器评分法
>>> from sklearn.metrics import accuracy_score
# 指标评分函数
>>> accuracy_score(y_test, y_pred)

  Puede utilizar el método de puntuación del evaluador o la función de puntuación métrica para evaluar la precisión del modelo en el conjunto de prueba . El método de puntuación del evaluador llama directamente al método de puntuación del objeto modelo, mientras que la función de puntuación del indicador necesita pasar los datos de la variable objetivo real y los datos del resultado de la predicción para calcular la puntuación de precisión . Estos métodos de evaluación pueden ayudarnosComprenda el rendimiento de su modelo,yComparar el rendimiento entre diferentes modelos


7.1.2 Función de evaluación de predicción de clasificación

  Usando scikit-learnfunción de informe de clasificaciónGenerar informes de indicadores de evaluación como precisión, recuperación, índice F1 y tasa de soporte del modelo de clasificación.

>>> from sklearn.metrics import classification_report
# 精确度、召回率、F1分数及支持率
>>> print(classification_report(y_test, y_pred))

  Puede utilizar la función Classification_report para generar un informe de métricas de evaluación para un modelo de clasificación . El informe incluirá métricas como precisión , recuperación , índice F1 y soporte para cada categoría , así como promedios ponderados y promedios generales . Estas métricas nos ayudan a evaluar el desempeño del modelo en diferentes categorías y brindan información detallada sobre el desempeño del modelo.


7.1.3 Matriz de confusión

Utilice la función confusion_matrix   en scikit-learn paraGenerar matriz de confusión para el modelo de clasificación.

>>> from sklearn.metrics import confusion_matrix
>>> print(confusion_matrix(y_test, y_pred))

  Utilice la función confusion_matrix para generar la matriz de confusión del modelo de clasificación. La matriz de confusión muestra los resultados de clasificación del modelo en cada categoría en forma de matriz , incluyendoejemplo realfalso positivoejemplo de falso negativoyEjemplo negativo verdaderocantidad. De esta manera, podemos evaluar el rendimiento de clasificación del modelo en diferentes categorías según la matriz de confusión y analizar más a fondo situaciones de clasificación errónea .


7.2 Indicadores de regresión

7.2.1 Error absoluto medio

  Utilice la función mean_absolute_error en scikit-learn para calcular el error absoluto medio (error absoluto medio) del modelo de regresión.

>>> from sklearn.metrics import mean_absolute_error 
>>> y_true = [3, -0.5, 2]
>>> mean_absolute_error(y_true, y_pred)

  Utilice la función mean_absolute_error para calcular el error absoluto medio del modelo de regresión . El indicadorMide la desviación promedio entre las predicciones del modelo y el valor real., cuanto menor sea el valor, más precisa será la predicción del modelo . El uso del error absoluto medio puede ayudarle a evaluar el rendimiento de un modelo de regresión y comparar el rendimiento entre diferentes modelos.


7.2.2 Error cuadrático medio

Utilice la función mean_squared_error   en scikit-learn para calcular el error cuadrático medio ( Error cuadrático medio ) del modelo de regresión.

>>> from sklearn.metrics import mean_squared_error
>>> mean_squared_error(y_test, y_pred)

  Utilice la función mean_squared_error para calcular el error cuadrático medio del modelo de regresión. Este indicador mide la diferencia promedio entre los resultados de la predicción del modelo y el valor real . Cuanto menor sea el valor, más precisa será la predicción del modelo . El uso del error cuadrático medio puede ayudarnos a evaluar el desempeño de un modelo de regresión y comparar el desempeño entre diferentes modelos.


7.2.3 Puntuación R²

  Utilice la función r2_score en scikit-learn para calcularPuntuación R² del modelo de regresión(Puntuación R cuadrado)。

>>> from sklearn.metrics import r2_score
>>> r2_score(y_true, y_pred)

Al ejecutar estos códigos, puede utilizar la función r2_score para calcular la puntuación R², que es el coeficiente de certeza o bondad de ajuste,   de un modelo de regresión . La puntuación R² varía de 0 a 1, donde los valores más cercanos a 1 indican un mejor ajuste del modelo a los datos y los valores más cercanos a 0 indican un peor ajuste del modelo . La puntuación R² nos ayuda a evaluar el rendimiento de un modelo de regresión y compararlo con otros modelos.


7.3 Métricas del clúster

7.3.1 Ajuste del coeficiente Rand

Utilice la función ajustad_rand_score   en scikit-learn para calcular el índice de Rand ajustado del algoritmo de agrupación .

>>> from sklearn.metrics import adjusted_rand_score
>>> adjusted_rand_score(y_true, y_pred) 

  Utilice la función ajustad_rand_score para calcular el índice Rand ajustado de un algoritmo de agrupación.Ajuste el rango de valores del índice Rand entre -1 y 1, cuanto más cerca esté el valor de 1, mayor será la coherencia entre los resultados de la agrupación y las etiquetas reales, y cuanto más cerca esté el valor de 0, la coherencia de los resultados de la agrupación es la misma que la división aleatoria, y cuanto más cerca esté el valor a -1, mayor será la coherencia entre los resultados de la agrupación y las etiquetas reales . Ajustar el índice Rand puede ayudar a evaluar el rendimiento de un algoritmo de agrupamiento y compararlo con otros algoritmos.


7.3.2 Homogeneidad

Utilice la función homogeneity_score   en scikit-learn para calcular la puntuación de homogeneidad (Puntuación de homogeneidad) de los resultados de agrupación.

>>> from sklearn.metrics import homogeneity_score
>>> homogeneity_score(y_true, y_pred) 

  Utilice la función homogeneity_score para calcular la puntuación de homogeneidad de los resultados de agrupación.La puntuación de homogeneidad varía de 0 a 1. Cuanto más cerca esté el valor de 1, significa que es más probable que las muestras en el resultado de agrupación pertenezcan a la misma categoría. Cuanto más cerca esté el valor de 0, más homogéneo será el resultado de agrupación Es. El rendimiento es peor y la distribución de la muestra está más dispersa.. La puntuación de homogeneidad puede ayudar a evaluar el rendimiento de un algoritmo de agrupamiento para mantener concentradas muestras homogéneas y compararlas con otros algoritmos.


7.3.3 Medida V

Utilice la función v_measure_score   en scikit-learn para calcular los resultados de la agrupaciónPuntuación de medida V

>>> from sklearn.metrics import v_measure_score
>>> v_measure_score(y_true, y_pred) 

  Utilice la función v_measure_score para calcular la puntuación de la medida V de los resultados de la agrupación. La puntuación de la medida V varía de 0 a 1. Cuanto más cerca esté el valor de 1, mayor será la homogeneidad y la integridad de los resultados de la agrupación. Cuanto más cerca esté el valor de 0, menor será la calidad de los resultados de la agrupación .


7.4 Validación cruzada

Utilice la función cross_val_score   en scikit-learn para realizarValidación cruzadayMétricas de evaluación del rendimiento del modelo informático

>>> from sklearn.cross_validation import cross_val_score
>>> print(cross_val_score(knn, X_train, y_train, cv=4))
>>> print(cross_val_score(lr, X, y, cv=2))

  Utilice la función cross_val_score para realizar una validación cruzada del modelo y calcular métricas de evaluación del desempeño. La validación cruzada puede ayudarnos a evaluar el rendimiento del modelo de manera más integral y garantizar la confiabilidad de las métricas de evaluación . En la validación cruzada, los datos de entrada se dividen en varios pliegues (es decir, el número de pliegues de la validación cruzada). Cada pliegue se utiliza como un conjunto de validación por turno, y los pliegues restantes se utilizan como un conjunto de entrenamiento para ajustarse al modelar y calcular indicadores de evaluación del desempeño . Finalmente, se resumirán los indicadores de evaluación del desempeño de todos los pliegues para obtenerMétrica de evaluación del desempeño promedio del modelo.


8. Ajuste del modelo

8.1 Búsqueda de cuadrícula

Utilice la clase GridSearchCV   en scikit-learn para hacer estobúsqueda de cuadrículayAjuste de parámetros

>>> from sklearn.grid_search import GridSearchCV
>>> params = {
    
    "n_neighbors": np.arange(1,3), "metric": ["euclidean", "cityblock"]}
>>> grid = GridSearchCV(estimator=knn, param_grid=params)
>>> grid.fit(X_train, y_train)
>>> print(grid.best_score_)
>>> print(grid.best_estimator_.n_neighbors)

  Al ejecutar este código, puede utilizar la clase GridSearchCV para realizar una búsqueda exhaustiva del espacio de parámetros del modelo y encontrar la mejor combinación de parámetros.La búsqueda de cuadrícula puede ayudarnos a encontrar configuraciones de parámetros óptimas para mejorar el rendimiento del modelo.. Durante el proceso de búsqueda, cada conjunto de parámetros se validará de forma cruzada y se seleccionará la mejor combinación de parámetros en función de las métricas de evaluación del desempeño.


8.2 Optimización de parámetros aleatorios

Utilice la clase RandomizedSearchCV   en scikit-learn para hacer estobúsqueda aleatoriayAjuste de parámetros

>>> from sklearn.grid_search import RandomizedSearchCV
>>> params = {
    
    "n_neighbors": range(1,5), "weights": ["uniform", "distance"]}
>>> rsearch = RandomizedSearchCV(estimator=knn, param_distributions=params, cv=4, n_iter=8, random_state=5)
>>> rsearch.fit(X_train, y_train)
>>> print(rsearch.best_score_)

  Utilice la clase RandomizedSearchCV para buscar aleatoriamente en el espacio de parámetros del modelo y encontrar la mejor combinación de parámetros. En comparación con la búsqueda en cuadrícula, la búsqueda aleatoria puede encontrar de manera más eficiente la mejor combinación de parámetros en una amplia gama de espacios de parámetros . Durante el proceso de búsqueda, cada conjunto de parámetros se validará de forma cruzada y se seleccionará la mejor combinación de parámetros en función de las métricas de evaluación del desempeño .

Supongo que te gusta

Origin blog.csdn.net/m0_65748531/article/details/133465300
Recomendado
Clasificación