以下内容转自 数析学院,只节选了部分,有需要的同学可以直接查看原文
主成分分析是数据科学中常见的降维方法,今天将向大家介绍在 Python 中利用 Scikit-Learn 工具包进行主成分分析的方法与技巧。
首先导入相关的可视化库,并构建示例数据:
- %matplotlib inline
- import numpy as np
- import matplotlib.pyplot as plt
- import seaborn as sns; sns.set()
- rng = np.random.RandomState(1)
- X = np.dot(rng.rand(2, 2), rng.randn(2, 200)).T
- plt.scatter(X[:, 0], X[:, 1])
- plt.axis('equal');
如上所示,第一组示例数据为一组样本量为200的随机的二维数组。接下来我们导入 Scikit-Learn 中用于主成分分析的 PCA 模块,构建一个主成分分析模型对象,并进行训练。在这次构建中,我们设定 PCA 函数的参数 n_components 为2,这意味这我们将得到特征值最大的两个特征向量:
- from sklearn.decomposition import PCA
- pca = PCA(n_components=2)
- pca.fit(X)
模型训练完成后, components_ 属性可以查看主成分分解的特征向量:
- print(pca.components_)
explained_variance_ 属性可以中查看各个主成分的解释方差:
- print(pca.explained_variance_)
我们可以通过如下方式将主成分分析中的特征向量描绘出来,下图中向量的起点为样本数据的均值向量:
- def draw_vector(v0, v1, ax=None):
- ax = ax or plt.gca()
- arrowprops=dict(arrowstyle='->',
- linewidth=2,
- shrinkA=0, shrinkB=0)
- ax.annotate('', v1, v0, arrowprops=arrowprops)
- # 描绘数据
- plt.scatter(X[:, 0], X[:, 1], alpha=0.2)
- for length, vector in zip(pca.explained_variance_, pca.components_):
- v = vector * 3 * np.sqrt(length)
- draw_vector(pca.mean_, pca.mean_ + v)
- plt.axis('equal');
以上内容节选自 数析学院,后文还有介绍 参数调整、图像降维实例等,内容较多,先搬运到这,有需要的同学可以先直接到 数析学院 查看原文


雷达卡





京公网安备 11010802022788号







