>  기사  >  백엔드 개발  >  Python의 PCA 주성분 분석(차원 축소) 기술

Python의 PCA 주성분 분석(차원 축소) 기술

王林
王林원래의
2023-06-09 21:57:062768검색

Python의 PCA 주성분 분석(차원 축소) 기술

PCA(주성분 분석) 주성분 분석은 매우 일반적으로 사용되는 데이터 차원 축소 기술입니다. 데이터는 PCA 알고리즘을 통해 처리되어 데이터의 고유한 특성을 발견하고 후속 데이터 분석 및 모델링을 위해 보다 정확하고 효과적인 데이터 수집을 제공할 수 있습니다.

아래에서는 Python에서 PCA 주성분 분석을 사용하는 몇 가지 기술을 소개합니다.

  1. 데이터 정규화 방법

PCA 차원 축소 분석을 수행하기 전에 먼저 데이터를 정규화해야 합니다. PCA 알고리즘은 단순히 요소 값의 크기를 계산하는 것이 아니라 분산 최대화를 통해 주성분을 계산하기 때문에 각 요소의 해당 분산이 미치는 영향을 충분히 고려하기 때문입니다.

Python에는 데이터 정규화 방법이 많이 있습니다. 가장 기본적인 방법은 sklearn 라이브러리의 StandardScaler 클래스를 통해 데이터를 평균이 0이고 분산이 1인 표준 정규 분포로 표준화하는 것입니다. data_std가 정규화된 데이터 세트입니다.

차원 축소를 위해 PCA 사용
  1. PCA를 사용하여 데이터의 차원을 축소하는 코드는 매우 간단합니다. PCA 모듈은 sklearn 라이브러리에 통합되었습니다. PCA 클래스를 호출할 때 차원 축소 후에 유지되는 주요 구성요소의 수만 설정하면 됩니다. 예를 들어 다음 코드는 데이터를 2개의 주성분으로 축소합니다.
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
data_std = scaler.fit_transform(data)

그 중 data_pca는 PCA 차원 축소 처리 후 새 데이터를 반환합니다.

차원 축소 후 주성분 수 선택 방법
  1. 실제로 데이터 차원 축소를 위해 PCA를 사용할 때 최고의 차원 축소 효과를 얻으려면 적절한 주성분 수를 선택해야 합니다. 일반적으로 누적분산기여율 그래프를 그려서 판단할 수 있다.

누적 분산 기여율은 전체 분산에 대한 처음 n개 주성분의 분산 합계의 백분율을 나타냅니다. 예:

from sklearn.decomposition import PCA

pca = PCA(n_components=2)
data_pca = pca.fit_transform(data_std)

누적 분산 기여율 그래프를 그리면 누적 분산이 증가하는 것을 관찰할 수 있습니다. 주성분 수가 1에서 점차 증가하는 경우 기여율의 변화 추세를 이용하여 적절한 주성분 수를 추정할 수 있습니다. 코드는 다음과 같습니다.

import numpy as np

pca = PCA()
pca.fit(data_std)

cum_var_exp = np.cumsum(pca.explained_variance_ratio_)

그림의 빨간색 선은 누적 분산 기여율을 나타내고, x축은 주성분 수, y축은 설명된 분산의 비율을 나타냅니다. 처음 두 주성분의 분산 기여율이 1에 가깝다는 것을 알 수 있으므로 두 주성분을 선택하면 대부분의 분석 작업 요구 사항을 충족할 수 있습니다.

PCA 차원 축소 후 데이터를 시각화하는 방법
  1. 마지막으로 matplotlib 라이브러리의 산란 기능을 사용하여 PCA 차원 축소 후 데이터를 시각화할 수 있습니다. 예를 들어 다음 코드는 PCA를 통해 데이터를 원래 4차원에서 2차원으로 축소한 후 시각적으로 표시합니다.
import matplotlib.pyplot as plt

plt.bar(range(1, 6), pca.explained_variance_ratio_, alpha=0.5, align='center')
plt.step(range(1, 6), cum_var_exp, where='mid')
plt.ylabel('Explained variance ratio')
plt.xlabel('Principal components')
plt.show()

그림의 색상과 레이블은 각각 ​​시각적 차원 이후의 원본 데이터의 숫자 레이블에 해당합니다. 감소, 데이터를 통해 데이터의 구조와 특성을 더 잘 이해할 수 있습니다.

즉, PCA 주성분 분석 기술을 사용하면 데이터의 차원을 줄여 데이터의 구조와 특성을 더 잘 이해할 수 있습니다. Python의 sklearn 및 matplotlib 라이브러리를 통해 PCA 알고리즘을 매우 편리하게 구현하고 시각화할 수 있습니다.

위 내용은 Python의 PCA 주성분 분석(차원 축소) 기술의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.