Scikit Learn - уменьшение размерности с помощью PCA
Снижение размерности, метод машинного обучения без учителя используется для уменьшения количества переменных функций для каждой выборки данных, выбирая набор основных функций. Анализ главных компонентов (PCA) - один из популярных алгоритмов уменьшения размерности.
Точный PCA
Principal Component Analysis (PCA) используется для уменьшения линейной размерности с помощью Singular Value Decomposition(SVD) данных, чтобы проецировать их в пространство более низкой размерности. При декомпозиции с использованием PCA входные данные центрируются, но не масштабируются для каждого объекта перед применением SVD.
Библиотека машинного обучения Scikit-learn предоставляет sklearn.decomposition.PCAмодуль, реализованный как объект-преобразователь, который изучает n компонентов в своем методе fit (). Его также можно использовать для новых данных, чтобы проецировать их на эти компоненты.
пример
В приведенном ниже примере будет использоваться модуль sklearn.decomposition.PCA для поиска 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), то есть PCA поддерживает только пакетную обработку, что означает, что все входные данные, подлежащие обработке, должны умещаться в памяти.
Библиотека машинного обучения Scikit-learn предоставляет 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, позволяет снизить нелинейную размерность с помощью ядер. Он поддерживает какtransform and inverse_transform.
Библиотека машинного обучения Scikit-learn предоставляет sklearn.decomposition.KernelPCA модуль.
пример
В приведенном ниже примере будет использоваться sklearn.decomposition.KernelPCAмодуль на цифровом наборе данных Sklearn. Мы используем сигмовидное ядро.
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)
PCA с использованием рандомизированной SVD
Анализ главных компонентов (PCA) с использованием рандомизированного SVD используется для проецирования данных в пространство меньшей размерности с сохранением большей части дисперсии путем отбрасывания сингулярного вектора компонентов, связанных с более низкими сингулярными значениями. Здесьsklearn.decomposition.PCA модуль с необязательным параметром svd_solver=’randomized’ будет очень полезно.
пример
В приведенном ниже примере будет использоваться sklearn.decomposition.PCA модуль с необязательным параметром svd_solver = 'randomized', чтобы найти 7 лучших основных компонентов из набора данных диабета индейцев пима.
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]
]