인자 분석은 변수들의 상관 구조를 공통 인자를 이용하여 분석하는 방법이다. 이번 포스팅에서는 Scikit-Learn(sklearn)에서 인자 분석(Factor Analysis)을 수행하는 데 필요한 인자 적재 행렬과 인자 점수를 계산하는 방법에 대해서 알아보려고 한다.
인자 분석에 대한 개념은 아래 포스팅을 참고하기 바란다.
40. 인자 분석(Factor Analysis)에 대해서 알아보자 with Python
FactorAnalysis 사용법
Scikit-Learn(sklearn)는 FactorAnalysis를 이용하여 인자 분석을 수행하고 그 결과를 볼 수 있다. 이에 대해서 알아보자. 여기서는 1888년 스위스 사회 경제적 지표 데이터를 이용하여 인자 분석을 수행한다. 데이터는 아래에 첨부해 두었다.
데이터를 불러온 뒤 변수들을 표준화해준다.
import numpy as np
import pandas as pd
from sklearn.decomposition import FactorAnalysis
df = pd.read_excel('../../machine_learning/swiss.xlsx')
X = df.drop('Province', axis=1).values
X = (X - np.mean(X, axis=0))/np.std(X, axis=0, ddof=True) ## 표준화
FactorAnalysis는 n_components를 이용하여 공통 인자의 개수를 지정하고 회전 방법을 rotation으로 지정한다.
fa = FactorAnalysis(n_components=2, rotation='varimax').fit(X)
인자 분석에서 핵심이라 할 수 있는 인자 적재 행렬은 components_ 속성을 이용하여 계산할 수 있다. 이때 행의 개수는 공통 인자의 개수 열의 개수는 변수의 개수가 된다.
fa.components_ ## 인자 적재 행렬
인자 점수는 fit_transform 또는 transform 메서드를 이용하여 계산할 수 있다.
fa.fit_transform(X) ## 인자 점수 fa.transform(X)와 동일
array([[-1.17631067, 1.20973324],
[-1.13112608, -0.00743802],
[-1.88729563, 0.16591203],
[-1.38389557, 0.49033022],
''' 중략 '''
[-0.12479832, 1.1295988 ],
[ 2.33935243, 2.21276781],
[ 2.02959952, -0.13507292],
[ 1.94856897, 0.6109394 ]])
댓글