Объединение нескольких методов извлечения признаков

Machine LearningMachine LearningBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии мы научимся объединять несколько методов извлечения признаков с использованием библиотеки scikit-learn для Python. Мы будем использовать трансформер FeatureUnion для комбинирования признаков, полученных с помощью PCA и одномерного отбора. Комбинирование признаков с использованием этого трансформера позволяет проводить кросс-валидацию и сетевые поиски на всей цепочке.

Советы по работе с ВМ

После запуска виртуальной машины кликните в левом верхнем углу, чтобы переключиться на вкладку Ноутбук и приступить к практике в Jupyter Notebook.

Иногда может потребоваться подождать несколько секунд, пока Jupyter Notebook полностью загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы столкнетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/DataPreprocessingandFeatureEngineeringGroup(["Data Preprocessing and Feature Engineering"]) sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) sklearn(("Sklearn")) -.-> sklearn/AdvancedDataAnalysisandDimensionalityReductionGroup(["Advanced Data Analysis and Dimensionality Reduction"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/svm("Support Vector Machines") sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/feature_selection("Feature Selection") sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/pipeline("Pipeline") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/model_selection("Model Selection") sklearn/AdvancedDataAnalysisandDimensionalityReductionGroup -.-> sklearn/decomposition("Matrix Decomposition") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/svm -.-> lab-49129{{"Объединение нескольких методов извлечения признаков"}} sklearn/feature_selection -.-> lab-49129{{"Объединение нескольких методов извлечения признаков"}} sklearn/pipeline -.-> lab-49129{{"Объединение нескольких методов извлечения признаков"}} sklearn/model_selection -.-> lab-49129{{"Объединение нескольких методов извлечения признаков"}} sklearn/decomposition -.-> lab-49129{{"Объединение нескольких методов извлечения признаков"}} sklearn/datasets -.-> lab-49129{{"Объединение нескольких методов извлечения признаков"}} ml/sklearn -.-> lab-49129{{"Объединение нескольких методов извлечения признаков"}} end

Импорт библиотек

Начнем с импорта необходимых библиотек. Будем использовать классы Pipeline, FeatureUnion, GridSearchCV, SVC, load_iris, PCA и SelectKBest из 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

Загрузка датасета

Далее мы загрузим датасет iris с использованием функции load_iris.

iris = load_iris()

X, y = iris.data, iris.target

Извлечение признаков

Поскольку датасет iris имеет высокую размерность, мы выполним извлечение признаков с использованием PCA и одномерного отбора.

PCA

Мы будем использовать PCA для уменьшения размерности датасета.

pca = PCA(n_components=2)

Одномерный отбор

Мы будем использовать одномерный отбор для выбора наиболее значимых признаков.

selection = SelectKBest(k=1)

Объединенные признаки

Мы объединим признаки, полученные с использованием PCA и одномерного отбора, с помощью трансформера FeatureUnion.

combined_features = FeatureUnion([("pca", pca), ("univ_select", selection)])

Преобразованный датасет

Мы будем использовать объединенные признаки для преобразования датасета.

X_features = combined_features.fit(X, y).transform(X)
print("Combined space has", X_features.shape[1], "features")

Обучение модели

Мы обучим модель на основе методов опорных векторов (SVM) с использованием преобразованного датасета.

svm = SVC(kernel="linear")

Грид-поиск

Мы проведем сеточный поиск по гиперпараметрам конвейера с использованием 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_)

Резюме

В этом практическом занятии мы узнали, как объединять несколько методов извлечения признаков с использованием библиотеки scikit - learn для Python. Мы использовали трансформер FeatureUnion для объединения признаков, полученных с помощью PCA и одномерного отбора. Также мы обучили модель на основе методов опорных векторов (SVM) и провели сеточный поиск по гиперпараметрам конвейера.