Рекурсивное исключение признаков

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

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

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

Введение

В этом лабораторном занятии мы научимся использовать Рекурсивное исключение признаков (Recursive Feature Elimination, RFE) для выбора признаков. Для выполнения этой задачи мы будем использовать библиотеку Scikit-Learn в Python. Выбор признаков - это важный этап в машинном обучении для улучшения производительности модели путём удаления нерелевантных или избыточных признаков.

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

После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к 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/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/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/svm -.-> lab-49267{{"Рекурсивное исключение признаков"}} sklearn/feature_selection -.-> lab-49267{{"Рекурсивное исключение признаков"}} sklearn/datasets -.-> lab-49267{{"Рекурсивное исключение признаков"}} ml/sklearn -.-> lab-49267{{"Рекурсивное исключение признаков"}} end

Загрузка датасета и разделение данных

Сначала мы загрузим датасет цифр с использованием библиотеки Scikit-Learn. Этот датасет состоит из изображений размером 8x8 цифр от 0 до 9. Каждое изображение представлено в виде массива из 64 признаков. Мы разделим данные на признаки и целевую переменную.

from sklearn.datasets import load_digits
digits = load_digits()
X = digits.images.reshape((len(digits.images), -1))
y = digits.target

Создание объекта RFE и подгонка данных

Далее мы создадим объект класса RFE и подгоним к нему данные. В качестве оценщика мы будем использовать классификатор на основе векторов поддержки (Support Vector Classifier, SVC) с линейным ядром. Мы будем выбирать по одному признаку за раз и делать по одному шагу за раз.

from sklearn.svm import SVC
from sklearn.feature_selection import RFE

svc = SVC(kernel="linear", C=1)
rfe = RFE(estimator=svc, n_features_to_select=1, step=1)
rfe.fit(X, y)

Определение ранга признаков

После подгонки данных к объекту RFE мы можем определить ранги признаков в зависимости от их важности. Мы будем использовать атрибут ranking_ объекта RFE, чтобы получить рангирование признаков. Мы также приведём ранжирование к форме, соответствующей форме исходных изображений.

ranking = rfe.ranking_.reshape(digits.images[0].shape)

Визуализация ранжирования признаков

Наконец, мы построим график ранжирования признаков с использованием библиотеки Matplotlib. Мы будем использовать функцию matshow(), чтобы отобразить ранжирование в виде изображения. Также добавим цветовую шкалу и заголовок к графику.

import matplotlib.pyplot as plt

plt.matshow(ranking, cmap=plt.cm.Blues)
plt.colorbar()
plt.title("Ranking of pixels with RFE")
plt.show()

Резюме

В этом практическом занятии мы узнали, как использовать рекурсивное исключение признаков (Recursive Feature Elimination, RFE) для выбора признаков. Мы использовали библиотеку Scikit-Learn в Python для загрузки датасета цифр, создания объекта RFE, подгонки данных, определения ранга признаков и визуализации ранжирования признаков.