요인 분석을 통한 아이리스 데이터 구조 탐색

Beginner

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

소개

요인 분석은 데이터에서 패턴을 찾아내는 통계적 방법입니다. 관찰 가능한 변수 간의 상관관계를 설명하는 잠재 변수를 식별하는 데 자주 사용됩니다. 이 실습에서는 아이리스 데이터셋을 사용하여 요인 분석이 데이터의 기저 구조를 어떻게 드러낼 수 있는지 보여줄 것입니다.

가상 머신 팁

가상 머신 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 노트북 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근합니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.

학습 중 문제가 발생하면 Labby 에 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

아이리스 데이터셋 로드 및 특징의 공분산 플롯

아이리스 데이터셋을 로드하고 특징들의 공분산을 플롯하여 특징 간의 상관관계를 살펴보겠습니다.

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

## 아이리스 데이터 로드
data = load_iris()
X = StandardScaler().fit_transform(data["data"])
feature_names = data["feature_names"]

## 아이리스 특징의 공분산 플롯
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("아이리스 특징 상관 행렬")
plt.tight_layout()

Varimax 회전을 사용한 요인 분석 실행

이제 아이리스 데이터셋에 Varimax 회전을 적용한 요인 분석을 수행하여 데이터의 기저 구조를 파악해 보겠습니다. PCA 와 비회전 요인 분석 결과와 비교해 보겠습니다.

## Varimax 회전을 사용한 요인 분석 실행
n_comps = 2

methods = [
    ("PCA", PCA()),
    ("비회전 요인 분석", FactorAnalysis()),
    ("Varimax 요인 분석", 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("요인들")
plt.tight_layout()
plt.show()

결과 분석

이제 아이리스 데이터셋의 기저 구조가 어떻게 드러나는지 요인 분석 결과를 분석해 보겠습니다.

결과 해석

이제 요인 분석 결과를 해석하여 아이리스 데이터셋의 기저 구조에 대한 통찰력을 얻어보겠습니다.

요약

이 실험에서는 Varimax 회전을 사용한 요인 분석을 통해 아이리스 데이터셋의 기저 구조를 밝혔습니다. PCA 와 비회전 요인 분석 (Unrotated FA) 결과와 비교하여 데이터의 기저 구조에 대한 통찰력을 얻기 위해 결과를 분석했습니다.