Spec-Zone.ru › scikit-learn

Примечание

Перейти к концу, чтобы загрузить весь пример кода. или запустить этот пример в вашем браузере через JupyterLite или Binder

Анализ главных компонент (PCA) на наборе данных Ирис

В этом примере показана хорошо известная техника разложения, известная как Анализ главных компонент (PCA), на наборе данных Ирис.

Этот набор данных состоит из 4 признаков: длина чашелистика, ширина чашелистика, длина лепестка, ширина лепестка. Мы используем PCA для проекции этого 4-мерного пространства в 3-мерное пространство.

# Authors: The scikit-learn developers
# SPDX-License-Identifier: BSD-3-Clause

Загрузка набора данных Ирис

Набор данных Ирис напрямую доступен как часть scikit-learn. Он может быть загружен с помощью функции load_iris. С параметрами по умолчанию возвращается объект Bunch, содержащий данные, целевые значения, имена признаков и имена целевых значений.

from sklearn.datasets import load_iris

iris = load_iris(as_frame=True)
print(iris.keys())
dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename', 'data_module'])

График пар признаков набора данных Ирис

Сначала построим график пар признаков набора данных Ирис.

import seaborn as sns

# Rename classes using the iris target names
iris.frame["target"] = iris.target_names[iris.target]
_ = sns.pairplot(iris.frame, hue="target")
plot pca iris

Каждая точка данных на каждом диаграмме рассеяния относится к одному из 150 цветов ирисов в наборе данных, при этом цвет указывает на их тип (Сетоса, Версиколор и Вирджиника).

Вы уже можете увидеть закономерность в отношении типа Сетоса, который легко идентифицировать по его короткому и широкому чашелистику. Только рассматривая эти две размерности, ширину и длину чашелистика, все еще наблюдается перекрытие между типами Версиколор и Вирджиника.

Диагональ графика показывает распределение каждого признака. Мы наблюдаем, что ширина и длина лепестка являются наиболее дискриминационными признаками для трех типов.

Построение представления PCA

Давайте применим Анализ главных компонент (PCA) к набору данных Ирис, а затем построим ирисы на основе первых трех измерений PCA. Это позволит нам лучше различать три типа!

import matplotlib.pyplot as plt

# unused but required import for doing 3d projections with matplotlib < 3.2
import mpl_toolkits.mplot3d  # noqa: F401

from sklearn.decomposition import PCA

fig = plt.figure(1, figsize=(8, 6))
ax = fig.add_subplot(111, projection="3d", elev=-150, azim=110)

X_reduced = PCA(n_components=3).fit_transform(iris.data)
scatter = ax.scatter(
    X_reduced[:, 0],
    X_reduced[:, 1],
    X_reduced[:, 2],
    c=iris.target,
    s=40,
)

ax.set(
    title="First three PCA dimensions",
    xlabel="1st Eigenvector",
    ylabel="2nd Eigenvector",
    zlabel="3rd Eigenvector",
)
ax.xaxis.set_ticklabels([])
ax.yaxis.set_ticklabels([])
ax.zaxis.set_ticklabels([])

# Add a legend
legend1 = ax.legend(
    scatter.legend_elements()[0],
    iris.target_names.tolist(),
    loc="upper right",
    title="Classes",
)
ax.add_artist(legend1)

plt.show()
First three PCA dimensions

PCA создаст 3 новых признака, которые являются линейной комбинацией 4 исходных признаков. Кроме того, эта трансформация максимизирует дисперсию. С этой трансформацией мы видим, что мы можем идентифицировать каждый вид, используя только первый признак (т. е. первый собственный вектор).

Общее время выполнения скрипта: (0 минут 3.051 секунды)

Launch binder
Launch JupyterLite

Download Jupyter notebook: plot_pca_iris.ipynb

Download Python source code: plot_pca_iris.py

Download zipped: plot_pca_iris.zip

Связанные примеры

Сравнение LDA и PCA 2D проекции набора данных Ирис

Построение поверхности принятия решений решающих деревьев, обученных на наборе данных ирис

Инкрементный PCA

Построение поверхности принятия решений многоклассовой SGD на наборе данных Ирис

© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/auto_examples/decomposition/plot_pca_iris.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API