본문 바로가기
프로그래밍/Scikit-Learn

[Scikit-Learn] 27. Factor Analysis(인자 분석) 해보기 (feat. FactorAnalysis)

by 부자 꽁냥이 2023. 5. 5.

인자 분석은 변수들의 상관 구조를 공통 인자를 이용하여 분석하는 방법이다. 이번 포스팅에서는 Scikit-Learn(sklearn)에서 인자 분석(Factor Analysis)을 수행하는 데 필요한 인자 적재 행렬과 인자 점수를 계산하는 방법에 대해서 알아보려고 한다. 

 

인자 분석에 대한 개념은 아래 포스팅을 참고하기 바란다.

 

40. 인자 분석(Factor Analysis)에 대해서 알아보자 with Python

 

40. 인자 분석(Factor Analysis)에 대해서 알아보자 with Python

이번 포스팅에서는 다변량 분석 기법의 하나인 인자 분석(Factor Analysis)에 대한 개념과 파이썬으로 구현하는 방법에 대해서 알아보고자 한다. - 목차 - 1. 인자 분석(Factor Analysis)이란? 2. 인자 분석(

zephyrus1111.tistory.com


   FactorAnalysis 사용법

Scikit-Learn(sklearn)는 FactorAnalysis를 이용하여 인자 분석을 수행하고 그 결과를 볼 수 있다. 이에 대해서 알아보자. 여기서는 1888년 스위스 사회 경제적 지표 데이터를 이용하여 인자 분석을 수행한다. 데이터는 아래에 첨부해 두었다.

 

swiss.xlsx
0.01MB

 

데이터를 불러온 뒤 변수들을 표준화해준다.

 

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 ]])

댓글


맨 위로