import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from matplotlib import style
import seaborn as sns
style.use('seaborn-talk')
krfont={'family':'Malgun Gothic', 'weight': 'bold', 'size' : 10}
matplotlib.rc('font', **krfont)
matplotlib.rcParams['axes.unicode_minus'] = False
%matplotlib inline
PCA
- PCA(Principal Component Analysis)는 가장 대표적 차원 축소 기법이다. 여러 변수 간 존재하는 상관관계를 이용해 이를 대표하는 주성분을 추출해 차원을 축소하는 기법이다. 간단하게 가장 높은 분산을 가지는 데이터의 축을 찾아 차원을 축소하는데, 이것이 PCA의 주성분이 되는 방식이다
- 많은 피처로 구성된 다차원의 데이터 셋을 차원을 축소하여 새로원 차원의 데이터 세트를 생성
- 선형 회귀와 같은 선형 모델에서는 입력한 변수들간의 상관관계가 높을 경우에 이로 인한 다중 공선성 문제로 모델의 예측이 성능되기 때문에 꼭 필요한 과정
- 다차원의 데이터 시각화에도 유용
df_data = pd.read_excel('데이터 분석_예제.xlsm', sheet_name='주성분분석', usecols='A:N', nrows=20)
df_data.head()
sns.pairplot(data)
plt.figure(figsize=(10,8))
sns.heatmap(data.corr(),annot=True)
- 데이터 표준화
- 데이터 표준화는 예를 들어 한 컬럼은 수치가 0~1 사이이고 다른 한 컬럼은 수치가 100~10000 사이의 값이 있는 컬럼이 있다고 가정하면 그대로 모델을 돌려버리면
- 컴퓨터는 수치의 범위가 높은 쪽이 더 중요한 쪽이다 라고 오판할수도 있어서
- 데이터 표준화를해서 모든 컬럼의 데이터 값을 일정 수치로 맞춰주는 단계가 필요
#데이터 표준화
scale_data = (data - data.mean()) / data.std()
scale_data
- 이렇게 직접 계산해서 스케일 해도되고
- sklearn 라이브러리에서 스케일 해도됨.