Открытие структуры набора данных Iris с помощью факторного анализа

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

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

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

Введение

Факторный анализ - это статистический метод, используемый для выявления закономерностей в данных. Он часто используется для идентификации скрытых переменных, которые объясняют корреляции между наблюдаемыми переменными. В этом лабораторном занятии мы будем использовать набор данных Iris, чтобы показать, как Факторный анализ может быть использован для выявления скрытой структуры данных.

Советы по использованию ВМ

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

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/DataPreprocessingandFeatureEngineeringGroup(["Data Preprocessing and Feature Engineering"]) 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/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/preprocessing("Preprocessing and Normalization") sklearn/AdvancedDataAnalysisandDimensionalityReductionGroup -.-> sklearn/decomposition("Matrix Decomposition") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/preprocessing -.-> lab-49327{{"Открытие структуры набора данных Iris с помощью факторного анализа"}} sklearn/decomposition -.-> lab-49327{{"Открытие структуры набора данных Iris с помощью факторного анализа"}} sklearn/datasets -.-> lab-49327{{"Открытие структуры набора данных Iris с помощью факторного анализа"}} ml/sklearn -.-> lab-49327{{"Открытие структуры набора данных Iris с помощью факторного анализа"}} end

Загрузка набора данных Iris и построение ковариационной матрицы признаков

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

import matplotlib.pyplot as plt
import numpy as np

from sklearn.decomposition import FactorAnalysis, PCA
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_iris

## Load Iris data
data = load_iris()
X = StandardScaler().fit_transform(data["data"])
feature_names = data["feature_names"]

## Plot covariance of Iris features
ax = plt.axes()

im = ax.imshow(np.corrcoef(X.T), cmap="RdBu_r", vmin=-1, vmax=1)

ax.set_xticks([0, 1, 2, 3])
ax.set_xticklabels(list(feature_names), rotation=90)
ax.set_yticks([0, 1, 2, 3])
ax.set_yticklabels(list(feature_names))

plt.colorbar(im).ax.set_ylabel("$r$", rotation=0)
ax.set_title("Iris feature correlation matrix")
plt.tight_layout()

Запуск факторного анализа с вращением Varimax

Теперь мы проведем факторный анализ на наборе данных Iris с вращением Varimax, чтобы выявить скрытую структуру данных. Результаты сравним с результатами PCA и неповернутого ФА.

## Run factor analysis with Varimax rotation
n_comps = 2

methods = [
    ("PCA", PCA()),
    ("Unrotated FA", FactorAnalysis()),
    ("Varimax FA", FactorAnalysis(rotation="varimax")),
]
fig, axes = plt.subplots(ncols=len(methods), figsize=(10, 8), sharey=True)

for ax, (method, fa) in zip(axes, methods):
    fa.set_params(n_components=n_comps)
    fa.fit(X)

    components = fa.components_.T
    print("\n\n %s :\n" % method)
    print(components)

    vmax = np.abs(components).max()
    ax.imshow(components, cmap="RdBu_r", vmax=vmax, vmin=-vmax)
    ax.set_yticks(np.arange(len(feature_names)))
    ax.set_yticklabels(feature_names)
    ax.set_title(str(method))
    ax.set_xticks([0, 1])
    ax.set_xticklabels(["Comp. 1", "Comp. 2"])
fig.suptitle("Factors")
plt.tight_layout()
plt.show()

Анализ результатов

Теперь мы проведем анализ результатов факторного анализа, чтобы увидеть, как выявляется скрытая структура набора данных Iris.

Интерпретация результатов

Теперь мы интерпретируем результаты факторного анализа, чтобы получить представление о скрытой структуре набора данных Iris.

Резюме

В этом практическом занятии мы использовали факторный анализ с вращением Varimax для выявления скрытой структуры набора данных Iris. Мы сравнили результаты с результатами PCA и неповернутого ФА и проанализировали результаты, чтобы получить представление о скрытой структуре данных.