Объяснение классификаторов дискриминантного анализа

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

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

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

Введение

Линейный и квадратичный дискриминантный анализ (LDA и QDA) - это два классических классификатора, используемых в машинном обучении. LDA использует линейную поверхность принятия решений, в то время как QDA использует квадратичную поверхность принятия решений. Эти классификаторы популярны, потому что имеют аналитические решения, хорошо работают на практике и не требуют настройки гиперпараметров.

В этом лабораторном занятии мы рассмотрим, как выполнять LDA и QDA с использованием 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/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/discriminant_analysis("Discriminant Analysis") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/discriminant_analysis -.-> lab-71094{{"Объяснение классификаторов дискриминантного анализа"}} sklearn/datasets -.-> lab-71094{{"Объяснение классификаторов дискриминантного анализа"}} ml/sklearn -.-> lab-71094{{"Объяснение классификаторов дискриминантного анализа"}} end

Импорт необходимых библиотек

Сначала нам нужно импортировать необходимые библиотеки, в том числе scikit-learn (sklearn) и matplotlib, которые будут использоваться для визуализации данных.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis, QuadraticDiscriminantAnalysis

Генерация синтетических данных

Далее мы сгенерируем синтетические данные, чтобы продемонстрировать разницу между LDA и QDA. Мы будем использовать функцию make_classification из библиотеки scikit-learn для создания двух классов с различными паттернами.

from sklearn.datasets import make_classification

## Generate synthetic data
X, y = make_classification(n_samples=100, n_features=2, n_informative=2, n_redundant=0, n_classes=2, random_state=1)

Обучение и визуализация классификаторов

Теперь мы обучим классификаторы LDA и QDA на синтетических данных и визуализируем границы принятия решений.

## Train the LDA classifier
lda = LinearDiscriminantAnalysis()
lda.fit(X, y)

## Train the QDA classifier
qda = QuadraticDiscriminantAnalysis()
qda.fit(X, y)

## Plot the decision boundaries
def plot_decision_boundary(classifier, title):
    h = 0.02  ## step size in the mesh
    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
    xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
    Z = classifier.predict(np.c_[xx.ravel(), yy.ravel()])
    Z = Z.reshape(xx.shape)
    plt.contourf(xx, yy, Z, alpha=0.8)
    plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k', cmap=plt.cm.Paired)
    plt.xlabel('Feature 1')
    plt.ylabel('Feature 2')
    plt.title(title)

plt.figure(figsize=(10, 4))

plt.subplot(1, 2, 1)
plot_decision_boundary(lda, 'Linear Discriminant Analysis')

plt.subplot(1, 2, 2)
plot_decision_boundary(qda, 'Quadratic Discriminant Analysis')

plt.tight_layout()
plt.show()

Выполнение понижения размерности с использованием LDA

LDA также может быть использован для контролируемого (с учителем) понижения размерности. Мы продемонстрируем это, понизив размерность набора данных Iris.

from sklearn.datasets import load_iris

## Load the Iris dataset
iris = load_iris()
X, y = iris.data, iris.target

## Perform dimensionality reduction using LDA
lda = LinearDiscriminantAnalysis(n_components=2)
X_lda = lda.fit_transform(X, y)

Резюме

Линейный и квадратичный дискриминантный анализ (LDA и QDA) — это два классических классификатора, используемых в машинном обучении. LDA использует линейную поверхность принятия решений, в то время как QDA использует квадратичную поверхность принятия решений. Эти классификаторы имеют аналитические решения и хорошо работают на практике. LDA также может быть использован для контролируемого (с учителем) понижения размерности.