프로그래밍 언어/Python

Python(파이썬) - 공분산행렬, 고유치 구하기(PCA 모듈 & 선형대수(np.linalg 모듈)), StandardScaler로 정규화하기, np.cumsum

DevPing9_ 2020. 12. 2. 14:44

# 예시 데이터셋 & Import Module

 

 


# 데이터셋 정규화(Normalization)

 

※ 정규화란?

서로 다른 스케일(크기)를 가진 벡터(attribute, 위의 예시에서는 칼럼)들을

적절히 매만져주어 모든 벡터(feature)들이 같은 스케일선상에서 비교가능하게 만드는 것

 

StandardScaler

서로 다른 스케일(크기)를 가진 벡터(attribute, 위의 예시에서는 칼럼)들을

평균을 0, 분산을 1로 변경하여, 모든 벡터(feature)들이 같은 스케일선상에서 비교가능하게 만드는 것

 

※ 스케일러의 종류

StandardScaler, RobustScaler, MinMaxScaler, Normalizer

스케일러의 종류에 따라 스케일의 기준이 다르므로 한번 찾아보는 것을 추천

 

 

정규화 된 데이터들

 


# 고유값과 고유벡터 구하기 (with linalg, PCA module)

 


※ 참고

PCA는 차원축소기법이며, 효과적인 차원축소를 위해

고유치가 작은값을 제거하며 변환행렬을 만든다. 

 

※ 참고

np.cov는 공분산을 구하는 함수이며,

고유치와 고유벡터를 구하기 위해선 공분산행렬(정방행렬)이 필요하다.

 

※ 참고

출력값을 들여다보면,

각 고유치가 대응되는 고유벡터는 열벡터라는 것을 알 수 있다.



# np.cumsum

 


※ 참고

PCA모듈의 explained_variance_ratio는

고유치(설명가능한 분산)의 비율을 내림차순으로 정렬한 값을 리턴한다.

 

 

 

 

 

728x90