프로그래밍 언어/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