- Scikit 学习教程
- Scikit Learn - 主页
- Scikit Learn - 简介
- Scikit Learn - 建模过程
- Scikit Learn - 数据表示
- Scikit Learn - 估计器 API
- Scikit Learn - 约定
- Scikit Learn - 线性建模
- Scikit Learn - 扩展线性建模
- 随机梯度下降
- Scikit Learn - 支持向量机
- Scikit Learn - 异常检测
- Scikit Learn - K 最近邻
- Scikit Learn - KNN 学习
- 使用朴素贝叶斯分类
- Scikit Learn - 决策树
- 随机决策树
- Scikit Learn - Boosting 方法
- Scikit Learn - 聚类方法
- 集群性能评估
- 使用 PCA 降维
- Scikit Learn 有用资源
- Scikit Learn - 快速指南
- Scikit Learn - 有用的资源
- Scikit Learn - 讨论
Scikit Learn - 使用 PCA 降维
降维是一种无监督机器学习方法,用于减少每个数据样本的特征变量数量,选择主要特征集。主成分分析(PCA)是流行的降维算法之一。
精确主成分分析
主成分分析(PCA) 用于使用数据的奇异值分解(SVD) 进行线性降维,将其投影到较低维度的空间。在使用 PCA 进行分解时,输入数据会居中,但在应用 SVD 之前不会针对每个特征进行缩放。
Scikit-learn ML 库提供sklearn.decomposition.PCA模块,该模块作为转换器对象实现,在其 fit() 方法中学习 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] ]
增量主成分分析
增量主成分分析(IPCA)用于解决主成分分析(PCA)的最大限制,即PCA仅支持批量处理,这意味着所有要处理的输入数据都应该适合内存。
Scikit-learn ML 库提供了sklearn.decomposition.IPCA模块,该模块可以通过在顺序获取的数据块上使用其partial_fit方法或通过启用内存映射文件np.memmap来实现核外PCA ,而不将整个文件加载到内存中。
与 PCA 相同,在使用 IPCA 进行分解时,在应用 SVD 之前,输入数据会居中但不会针对每个特征进行缩放。
例子
下面的示例将在 Sklearn 数字数据集上使用sklearn.decomposition.IPCA模块。
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 的扩展,使用核实现非线性降维。它支持transform和inverse_transform。
Scikit-learn ML 库提供sklearn.decomposition.KernelPCA模块。
例子
下面的示例将在 Sklearn 数字数据集上使用sklearn.decomposition.KernelPCA模块。我们正在使用 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
输出
(1797, 10)
使用随机 SVD 的 PCA
使用随机 SVD 的主成分分析 (PCA) 用于将数据投影到较低维空间,通过删除与较低奇异值相关的分量的奇异向量来保留大部分方差。在这里,带有可选参数svd_solver='randomized'的sklearn.decomposition.PCA模块将非常有用。
例子
下面的示例将使用sklearn.decomposition.PCA模块和可选参数 svd_solver='randomized' 从 Pima Indians Diabetes 数据集中查找最佳 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] ]