Scikit Learn - PCA kullanarak Boyut Azaltma

Boyut azaltma, denetimsiz bir makine öğrenimi yöntemi, temel özellik kümesini seçerek her veri örneği için özellik değişkenlerinin sayısını azaltmak için kullanılır. Ana Bileşen Analizi (PCA), boyut azaltma için popüler algoritmalardan biridir.

Tam PCA

Principal Component Analysis (PCA) kullanılarak doğrusal boyut azaltma için kullanılır Singular Value Decomposition(SVD) veriyi daha düşük boyutlu bir alana yansıtmak için. PCA kullanılarak ayrıştırma sırasında, giriş verileri ortalanır ancak SVD uygulanmadan önce her özellik için ölçeklenmez.

Scikit-learn ML kitaplığı şunları sağlar: sklearn.decomposition.PCAfit () yönteminde n bileşeni öğrenen bir transformatör nesnesi olarak uygulanan modül. Ayrıca, bu bileşenlere yansıtmak için yeni veriler üzerinde de kullanılabilir.

Misal

Aşağıdaki örnek, Pima Indians Diabetes veri setinden en iyi 5 Temel bileşeni bulmak için sklearn.decomposition.PCA modülünü kullanacaktır.

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_)

Çıktı

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]
]

Artımlı PCA

Incremental Principal Component Analysis (IPCA), Ana Bileşen Analizinin (PCA) en büyük sınırlamasını ele almak için kullanılır ve bu, PCA'nın yalnızca toplu işlemeyi desteklemesi, işlenecek tüm giriş verilerinin belleğe sığması gerektiği anlamına gelir.

Scikit-learn ML kitaplığı şunları sağlar: sklearn.decomposition.IPCA Çekirdek Dışı PCA'yı kullanarak ya da partial_fit sıralı olarak getirilen veri yığınları üzerinde veya kullanımını etkinleştirerek yöntem np.memmap, tüm dosyayı belleğe yüklemeden bellek eşlemeli bir dosya.

PCA ile aynı, IPCA kullanılarak ayrıştırma yapılırken, SVD uygulanmadan önce giriş verileri ortalanır ancak her özellik için ölçeklenmez.

Misal

Aşağıdaki örnek kullanacak sklearn.decomposition.IPCA modülü Sklearn basamak veri kümesinde.

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

Çıktı

(1797, 10)

Burada, daha küçük veri yığınlarına kısmen sığabiliriz (toplu iş başına 100'de yaptığımız gibi) veya fit() verileri toplu işlere bölme işlevi.

Çekirdek PCA

PCA'nın bir uzantısı olan Kernel Principal Component Analysis, çekirdekler kullanılarak doğrusal olmayan boyut azaltımı sağlar. İkisini de desteklertransform and inverse_transform.

Scikit-learn ML kitaplığı şunları sağlar: sklearn.decomposition.KernelPCA modül.

Misal

Aşağıdaki örnek kullanacak sklearn.decomposition.KernelPCAmodülü Sklearn basamak veri kümesinde. Sigmoid çekirdek kullanıyoruz.

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

Çıktı

(1797, 10)

Randomize SVD kullanan PCA

Rastgele SVD kullanan Temel Bileşen Analizi (PCA), daha düşük tekil değerlerle ilişkili bileşenlerin tekil vektörünü düşürerek varyansın çoğunu koruyarak verileri daha düşük boyutlu bir alana yansıtmak için kullanılır. Buradasklearn.decomposition.PCA isteğe bağlı parametre ile modül svd_solver=’randomized’ çok faydalı olacak.

Misal

Aşağıdaki örnek kullanacak sklearn.decomposition.PCA Pima Indians Diabetes veri kümesinden en iyi 7 Ana bileşeni bulmak için isteğe bağlı svd_solver = 'randomize' parametresine sahip modül.

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_)

Çıktı

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]
]