【Python那些事儿】主成分分析PCA
2017-06-30 11:26
323 查看
主成分分析PCA(Principal Component Analysis):
无监督方法
保留数据分布
PCA通过以下步骤来完成目标:
将数据集标准化成为均值为0;
找出数据集的相关矩阵和单位标准偏差值;
将相关矩阵分解为特征向量和特征值;
基于降序的特征值选择Top-N特征向量;
投射输入的特征向量矩阵到一个新的子空间。
对于一维数据,可用方差来衡量数据的分布或散步情况。在多维的场景里,我们很容易将变量之间的相关性表示为矩阵,专业名词是协方差矩阵。用标准差对其数值进行归一化处理后,就得到了相关矩阵。
执行特征值分解的时候,先得获得协方差矩阵的特征向量和特征值。主特征向量,也就是具有最大的特征值的向量,指示了原始数据的最大变化方向。
一个数据集(n*m),有n个实例,m个维度,PCA将它投射成一个小得多的子空间(n*d),其中d<
可看到,在x周和y轴上绘制出主成分,并根据目标变量给它们区分颜色。这样成分1和成分2能够区分出鸢尾花的3个类别。这样,就用PCA有效地将维度从4降为2,并保持了区分鸢尾花不同类别实例的能力。
无监督方法
保留数据分布
PCA通过以下步骤来完成目标:
将数据集标准化成为均值为0;
找出数据集的相关矩阵和单位标准偏差值;
将相关矩阵分解为特征向量和特征值;
基于降序的特征值选择Top-N特征向量;
投射输入的特征向量矩阵到一个新的子空间。
对于一维数据,可用方差来衡量数据的分布或散步情况。在多维的场景里,我们很容易将变量之间的相关性表示为矩阵,专业名词是协方差矩阵。用标准差对其数值进行归一化处理后,就得到了相关矩阵。
执行特征值分解的时候,先得获得协方差矩阵的特征向量和特征值。主特征向量,也就是具有最大的特征值的向量,指示了原始数据的最大变化方向。
一个数据集(n*m),有n个实例,m个维度,PCA将它投射成一个小得多的子空间(n*d),其中d<
操作方法
我们使用iris数据集来学习如何高效使用PCA进行降维,从4维降为2维。import numpy as np from sklearn.datasets import load_iris from sklearn.preprocessing import scale import scipy import matplotlib.pyplot as plt data = load_iris() x = data['data'] y = data['target'] #标准化 缩放成均值为0,标准差为1 x_s = scale(x, with_mean=True, with_std=True, axis=0)#这里用到了scale函数,它可以完成中心化、缩放和标准化等功能。 #中心化:将单个值减去平均值; #缩放:将每个值除以变量的标准差; #标准化:先中心化,然后进行放缩。 #计算相关矩阵 x_c = np.corrcoef(x_s.T) #从相关矩阵中,找到特征值和特征向量 eig_val, eig_vec = scipy.linalg.eig(x_c) #选择前两个特征向量 w = eig_vec[:,0:2] #用合适的特征向量将原来4维的数据集降为2维 x_rd = x_s.dot(w) #画出新的2维的散点图 plt.figure(1) plt.scatter(x_rd[:,0], x_rd[:,1], c=y) plt.xlabel('component 1') plt.ylabel('component 2') if __name__ == '__main__': plt.show()
可看到,在x周和y轴上绘制出主成分,并根据目标变量给它们区分颜色。这样成分1和成分2能够区分出鸢尾花的3个类别。这样,就用PCA有效地将维度从4降为2,并保持了区分鸢尾花不同类别实例的能力。
相关文章推荐
- Python 主成分分析PCA
- 主成分分析 (PCA) 与其高维度下python实现(简单人脸识别)
- 【机器学习算法实现】主成分分析(PCA)——基于python+numpy
- python实现PCA(主成分分析)降维
- python_主成分分析(PCA)降维
- python版PCA(主成分分析)
- 主成分分析(PCA)Python代码实现
- 用Python的sklearn库进行PCA(主成分分析)
- 【机器学习算法-python实现】PCA 主成分分析、降维
- Python 主成分分析PCA
- 机器学习(七):主成分分析PCA降维_Python
- 【机器学习算法-python实现】PCA 主成分分析、降维
- [机器学习笔记]主成分分析PCA简介及其python实现
- 【机器学习算法实现】主成分分析(PCA)——基于python+numpy
- 【机器学习系列】python版PCA(主成分分析)
- python小白进阶三:主成分分析(PCA)
- 线性判别分析(LDA), 主成分分析(PCA)
- 主成分分析PCA(Principal Component Analysis)介绍
- PCA--主成分分析
- 线性判别分析(LDA), 主成分分析(PCA)