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