Introdução
Neste laboratório, aprenderemos a concatenar múltiplos métodos de extração de características utilizando a biblioteca scikit-learn do Python. Usaremos o transformador FeatureUnion para combinar características obtidas por PCA e seleção univariada. Combinar características usando este transformador tem a vantagem de permitir a validação cruzada e buscas em grade sobre todo o processo.
Dicas da Máquina Virtual
Após o arranque da máquina virtual, clique no canto superior esquerdo para mudar para a aba Notebook para aceder ao Jupyter Notebook para a prática.
Por vezes, pode ser necessário esperar alguns segundos para o Jupyter Notebook terminar de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.
Se tiver problemas durante o aprendizado, não hesite em contactar o Labby. Forneça feedback após a sessão e resolveremos o problema rapidamente para si.
Importar Bibliotecas
Começaremos importando as bibliotecas necessárias. Usaremos as classes Pipeline, FeatureUnion, GridSearchCV, SVC, load_iris, PCA e SelectKBest do 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
Carregar o Conjunto de Dados
Em seguida, carregaremos o conjunto de dados iris usando a função load_iris.
iris = load_iris()
X, y = iris.data, iris.target
Extração de Recursos
Como o conjunto de dados iris é de alta dimensionalidade, realizaremos a extração de recursos usando PCA e seleção univariada.
PCA
Usaremos PCA para reduzir a dimensionalidade do conjunto de dados.
pca = PCA(n_components=2)
Seleção Univariada
Usaremos seleção univariada para selecionar as características mais significativas.
selection = SelectKBest(k=1)
Recursos Combinados
Combinaremos os recursos obtidos do PCA e da seleção univariada usando o transformador FeatureUnion.
combined_features = FeatureUnion([("pca", pca), ("univ_select", selection)])
Conjunto de Dados Transformado
Usaremos os recursos combinados para transformar o conjunto de dados.
X_features = combined_features.fit(X, y).transform(X)
print("O espaço combinado tem", X_features.shape[1], "recursos")
Treinamento do Modelo
Treinaremos um modelo de máquina de vetores de suporte (SVM) usando o conjunto de dados transformado.
svm = SVC(kernel="linear")
Busca em Grade
Realizaremos uma busca em grade sobre os hiperparâmetros do pipeline usando 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_)
Resumo
Neste laboratório, aprendemos como concatenar múltiplos métodos de extração de características usando a biblioteca scikit-learn do Python. Usamos o transformador FeatureUnion para combinar características obtidas por PCA e seleção univariada. Também treinamos um modelo de máquina de vetores de suporte (SVM) e realizamos uma busca em grade sobre os hiperparâmetros do pipeline.