Scikit Learn - Pengurangan Dimensi menggunakan PCA

Pengurangan dimensi, metode pembelajaran mesin tanpa pengawasan digunakan untuk mengurangi jumlah variabel fitur untuk setiap sampel data yang memilih kumpulan fitur utama. Principal Component Analysis (PCA) adalah salah satu algoritma populer untuk reduksi dimensi.

PCA persis

Principal Component Analysis (PCA) digunakan untuk pengurangan dimensi linier menggunakan Singular Value Decomposition(SVD) data untuk memproyeksikannya ke ruang dimensi yang lebih rendah. Saat dekomposisi menggunakan PCA, data masukan dipusatkan tetapi tidak diskalakan untuk setiap fitur sebelum menerapkan SVD.

Library Scikit-learn ML menyediakan sklearn.decomposition.PCAmodul yang diimplementasikan sebagai objek transformator yang mempelajari n komponen dalam metode fit () nya. Ini juga dapat digunakan pada data baru untuk memproyeksikannya pada komponen ini.

Contoh

Contoh di bawah ini akan menggunakan modul sklearn.decomposition.PCA untuk menemukan 5 komponen utama terbaik dari dataset Pima Indians Diabetes.

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

Keluaran

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 inkremental

Incremental Principal Component Analysis (IPCA) digunakan untuk mengatasi batasan terbesar Principal Component Analysis (PCA) yaitu PCA hanya mendukung pemrosesan batch, artinya semua data input yang akan diproses harus sesuai dengan memori.

Library Scikit-learn ML menyediakan sklearn.decomposition.IPCA modul yang memungkinkan untuk mengimplementasikan Out-of-Core PCA baik dengan menggunakan partial_fit metode pada potongan data yang diambil secara berurutan atau dengan mengaktifkan penggunaan np.memmap, file yang dipetakan memori, tanpa memuat seluruh file ke dalam memori.

Sama seperti PCA, saat dekomposisi menggunakan IPCA, data input dipusatkan tetapi tidak diskalakan untuk setiap fitur sebelum menerapkan SVD.

Contoh

Contoh di bawah ini akan digunakan sklearn.decomposition.IPCA modul pada dataset digit 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

Keluaran

(1797, 10)

Di sini, kami dapat memuat sebagian pada kumpulan data yang lebih kecil (seperti yang kami lakukan pada 100 per kumpulan) atau Anda dapat membiarkan file fit() berfungsi untuk membagi data menjadi beberapa batch.

Kernel PCA

Kernel Principal Component Analysis, merupakan perpanjangan dari PCA, mencapai pengurangan dimensi non-linier menggunakan kernel. Ini mendukung keduanyatransform and inverse_transform.

Library Scikit-learn ML menyediakan sklearn.decomposition.KernelPCA modul.

Contoh

Contoh di bawah ini akan digunakan sklearn.decomposition.KernelPCAmodul pada dataset digit Sklearn. Kami menggunakan kernel sigmoid.

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

Keluaran

(1797, 10)

PCA menggunakan SVD acak

Principal Component Analysis (PCA) menggunakan SVD acak digunakan untuk memproyeksikan data ke ruang berdimensi lebih rendah yang menjaga sebagian besar varians dengan menghilangkan vektor tunggal komponen yang terkait dengan nilai singular yang lebih rendah. Di sinisklearn.decomposition.PCA modul dengan parameter opsional svd_solver=’randomized’ akan sangat berguna.

Contoh

Contoh di bawah ini akan digunakan sklearn.decomposition.PCA modul dengan parameter opsional svd_solver = 'randomized' untuk menemukan 7 komponen utama terbaik dari dataset Pima Indians Diabetes.

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

Keluaran

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