Scikit Learn-PCA를 사용한 차원 감소
차원 축소, 비지도 머신 러닝 방법은 주요 특징 집합을 선택하는 각 데이터 샘플에 대한 특징 변수의 수를 줄이는 데 사용됩니다. PCA (Principal Component Analysis)는 차원 감소를위한 널리 사용되는 알고리즘 중 하나입니다.
정확한 PCA
Principal Component Analysis (PCA)는 다음을 사용하여 선형 차원 감소에 사용됩니다. Singular Value Decomposition(SVD) 데이터를 더 낮은 차원의 공간에 투영합니다. PCA를 사용하여 분해하는 동안 입력 데이터는 중앙에 있지만 SVD를 적용하기 전에 각 기능에 대해 스케일링되지 않습니다.
Scikit-learn ML 라이브러리는 sklearn.decomposition.PCAfit () 메서드에서 n 개의 구성 요소를 학습하는 변환기 객체로 구현 된 모듈입니다. 또한 새 데이터에서 이러한 구성 요소에 투영하는 데 사용할 수도 있습니다.
예
아래 예제는 sklearn.decomposition.PCA 모듈을 사용하여 Pima Indians Diabetes 데이터 세트에서 가장 좋은 5 가지 주요 구성 요소를 찾습니다.
from pandas import read_csv
from sklearn.decomposition import PCA
path = r'C:\Users\Leekha\Desktop\pima-indians-diabetes.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', ‘class']
dataframe = read_csv(path, names = names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
pca = PCA(n_components = 5)
fit = pca.fit(X)
print(("Explained Variance: %s") % (fit.explained_variance_ratio_))
print(fit.components_)
산출
Explained Variance: [0.88854663 0.06159078 0.02579012 0.01308614 0.00744094]
[
[-2.02176587e-03 9.78115765e-02 1.60930503e-02 6.07566861e-029.93110844e-01 1.40108085e-02 5.37167919e-04 -3.56474430e-03]
[-2.26488861e-02 -9.72210040e-01 -1.41909330e-01 5.78614699e-029.46266913e-02 -4.69729766e-02 -8.16804621e-04 -1.40168181e-01]
[-2.24649003e-02 1.43428710e-01 -9.22467192e-01 -3.07013055e-012.09773019e-02 -1.32444542e-01 -6.39983017e-04 -1.25454310e-01]
[-4.90459604e-02 1.19830016e-01 -2.62742788e-01 8.84369380e-01-6.55503615e-02 1.92801728e-01 2.69908637e-03 -3.01024330e-01]
[ 1.51612874e-01 -8.79407680e-02 -2.32165009e-01 2.59973487e-01-1.72312241e-04 2.14744823e-02 1.64080684e-03 9.20504903e-01]
]
증분 PCA
Incremental Principal Component Analysis (IPCA)는 PCA (Principal Component Analysis)의 가장 큰 한계를 해결하는 데 사용되며 PCA는 배치 처리 만 지원하므로 처리 할 모든 입력 데이터가 메모리에 맞아야합니다.
Scikit-learn ML 라이브러리는 sklearn.decomposition.IPCA Out-of-Core PCA를 구현할 수 있도록하는 모듈 partial_fit 순차적으로 가져온 데이터 청크에 대한 방법 또는 np.memmap, 전체 파일을 메모리로로드하지 않고 메모리 매핑 된 파일입니다.
PCA와 동일하지만 IPCA를 사용하여 분해하는 동안 입력 데이터는 중앙에 배치되지만 SVD를 적용하기 전에 각 기능에 대해 스케일링되지 않습니다.
예
아래 예제는 sklearn.decomposition.IPCA Sklearn 숫자 데이터 세트의 모듈.
from sklearn.datasets import load_digits
from sklearn.decomposition import IncrementalPCA
X, _ = load_digits(return_X_y = True)
transformer = IncrementalPCA(n_components = 10, batch_size = 100)
transformer.partial_fit(X[:100, :])
X_transformed = transformer.fit_transform(X)
X_transformed.shape
산출
(1797, 10)
여기에서 데이터의 작은 배치에 부분적으로 맞출 수 있습니다 (배치 당 100에서했던 것처럼). fit() 데이터를 배치로 나누는 기능.
커널 PCA
PCA의 확장 인 Kernel Principal Component Analysis는 커널을 사용하여 비선형 차원 감소를 달성합니다. 그것은 둘 다 지원합니다transform and inverse_transform.
Scikit-learn ML 라이브러리는 sklearn.decomposition.KernelPCA 기준 치수.
예
아래 예제는 sklearn.decomposition.KernelPCASklearn 숫자 데이터 세트의 모듈. 시그 모이 드 커널을 사용하고 있습니다.
from sklearn.datasets import load_digits
from sklearn.decomposition import KernelPCA
X, _ = load_digits(return_X_y = True)
transformer = KernelPCA(n_components = 10, kernel = 'sigmoid')
X_transformed = transformer.fit_transform(X)
X_transformed.shape
산출
(1797, 10)
무작위 SVD를 사용하는 PCA
무작위 SVD를 사용하는 주성분 분석 (PCA)은 낮은 특이 값과 관련된 성분의 특이 벡터를 삭제하여 대부분의 분산을 유지하면서 데이터를 낮은 차원 공간에 투영하는 데 사용됩니다. 여기,sklearn.decomposition.PCA 선택적 매개 변수가있는 모듈 svd_solver=’randomized’ 매우 유용 할 것입니다.
예
아래 예제는 sklearn.decomposition.PCA Pima Indians Diabetes 데이터 세트에서 가장 좋은 7 가지 주요 구성 요소를 찾기 위해 선택적 매개 변수 svd_solver = 'randomized'가있는 모듈.
from pandas import read_csv
from sklearn.decomposition import PCA
path = r'C:\Users\Leekha\Desktop\pima-indians-diabetes.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = read_csv(path, names = names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
pca = PCA(n_components = 7,svd_solver = 'randomized')
fit = pca.fit(X)
print(("Explained Variance: %s") % (fit.explained_variance_ratio_))
print(fit.components_)
산출
Explained Variance: [8.88546635e-01 6.15907837e-02 2.57901189e-02 1.30861374e-027.44093864e-03 3.02614919e-03 5.12444875e-04]
[
[-2.02176587e-03 9.78115765e-02 1.60930503e-02 6.07566861e-029.93110844e-01 1.40108085e-02 5.37167919e-04 -3.56474430e-03]
[-2.26488861e-02 -9.72210040e-01 -1.41909330e-01 5.78614699e-029.46266913e-02 -4.69729766e-02 -8.16804621e-04 -1.40168181e-01]
[-2.24649003e-02 1.43428710e-01 -9.22467192e-01 -3.07013055e-012.09773019e-02 -1.32444542e-01 -6.39983017e-04 -1.25454310e-01]
[-4.90459604e-02 1.19830016e-01 -2.62742788e-01 8.84369380e-01-6.55503615e-02 1.92801728e-01 2.69908637e-03 -3.01024330e-01]
[ 1.51612874e-01 -8.79407680e-02 -2.32165009e-01 2.59973487e-01-1.72312241e-04 2.14744823e-02 1.64080684e-03 9.20504903e-01]
[-5.04730888e-03 5.07391813e-02 7.56365525e-02 2.21363068e-01-6.13326472e-03 -9.70776708e-01 -2.02903702e-03 -1.51133239e-02]
[ 9.86672995e-01 8.83426114e-04 -1.22975947e-03 -3.76444746e-041.42307394e-03 -2.73046214e-03 -6.34402965e-03 -1.62555343e-01]
]