Introducción
En este laboratorio, aprenderemos cómo concatenar múltiples métodos de extracción de características utilizando la biblioteca scikit-learn de Python. Utilizaremos el transformador FeatureUnion para combinar las características obtenidas por PCA y selección univariada. Combinar características utilizando este transformador tiene la ventaja de que permite la validación cruzada y las búsquedas en cuadrícula en todo el proceso.
Consejos sobre la VM
Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.
A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.
Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje su retroalimentación después de la sesión y resolveremos rápidamente el problema para usted.
Importar bibliotecas
Comenzaremos importando las bibliotecas necesarias. Utilizaremos las clases Pipeline, FeatureUnion, GridSearchCV, SVC, load_iris, PCA y SelectKBest de scikit-learn.
from sklearn.pipeline import Pipeline, FeatureUnion
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
from sklearn.feature_selection import SelectKBest
Cargar el conjunto de datos
A continuación, cargaremos el conjunto de datos iris utilizando la función load_iris.
iris = load_iris()
X, y = iris.data, iris.target
Extracción de características
Dado que el conjunto de datos iris es de alta dimensión, realizaremos la extracción de características utilizando PCA y selección univariada.
Análisis de Componentes Principales (PCA)
Utilizaremos el PCA para reducir la dimensionalidad del conjunto de datos.
pca = PCA(n_components=2)
Selección Univariada
Utilizaremos la selección univariada para elegir las características más significativas.
selection = SelectKBest(k=1)
Características Combinadas
Combinaremos las características obtenidas a partir del PCA y la selección univariada utilizando el transformador FeatureUnion.
combined_features = FeatureUnion([("pca", pca), ("univ_select", selection)])
Conjunto de Datos Transformado
Utilizaremos las características combinadas para transformar el conjunto de datos.
X_features = combined_features.fit(X, y).transform(X)
print("Combined space has", X_features.shape[1], "features")
Entrenamiento del Modelo
Entrenaremos un modelo de Máquina de Vectores de Soporte (SVM) utilizando el conjunto de datos transformado.
svm = SVC(kernel="linear")
Búsqueda en Grilla
Realizaremos una búsqueda en grilla sobre los hiperparámetros de la tubería utilizando GridSearchCV.
pipeline = Pipeline([("features", combined_features), ("svm", svm)])
param_grid = dict(
features__pca__n_components=[1, 2, 3],
features__univ_select__k=[1, 2],
svm__C=[0.1, 1, 10],
)
grid_search = GridSearchCV(pipeline, param_grid=param_grid, verbose=10)
grid_search.fit(X, y)
print(grid_search.best_estimator_)
Resumen
En este laboratorio, aprendimos cómo concatenar múltiples métodos de extracción de características utilizando la biblioteca scikit - learn de Python. Utilizamos el transformador FeatureUnion para combinar las características obtenidas por PCA y selección univariada. También entrenamos un modelo de Máquina de Vectores de Soporte (SVM) y realizamos una búsqueda en grilla sobre los hiperparámetros de la tubería.