PCA降维

维度和降维

数组中的每一张表(一张表最多二维),都可以是一个特征矩阵或一个DataFrame,这些结构永远只有一张表,所以一定有行列,其中行是样本,列是特征。针对每一张表,维度指的是样本的数量或特征的数量,一般无特别说明,指的都是特征的数量。除了索引之外,一个特征是一维,两个特征是二维,n个特征是n维。
降维算法中的”降维“,指的是降低特征矩阵中特征的数量。降维的目的是为了让算法运算更快,效果更好,但其实还有另一种需求:数据可视化
sklearn中降维算法都被包括在模块decomposition中,这个模块本质是一个矩阵分解模块。
PCA降维_第1张图片

PCA

我们希望能够找出一种办法来帮助我们衡量特征上所带的信息量,让我们在降维的过程中,能够即减少特征的数量,又保留大部分有效信息——将那些带有重复信息的特征合并,并删除那些带无效信息的特征等。
在降维中,PCA使用的信息量衡量指标,就是样本方差,又称可解释性方差,方差越大,特征所带的信息量越多。
在这里插入图片描述
Var代表一个特征的方差,n代表样本量,Xi代表每一个特种中的每个样本的取值,x>代表这一列样本的均值。n-1是为了得到样本方差的无偏估计

降维是如何实现的?

sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False, svd_solver=’auto’, tol=0.0,iterated_power=’auto’, random_state=None)]

  • 降维的过程
    PCA降维_第2张图片
    让数据能够被压缩到少数特征上并且总信息量不损失太多的技术就是矩阵分解
  • 降维和特征选择有什么不同?
    PCA降维_第3张图片
    在新的特征矩阵生成之前,我们无法知晓PCA都建立了怎样的新特征向量,新特征矩阵生成之后也不具有可读性。

参数n_components

n_components是我们降维后需要的维度,即降维后需要保留的特征数量
如果我们希望可视化一组数据来观察数据分布,我们往往将数据降到三维以下,很多时候是二维,即n_components的取值为2。

高维数据的可视化

采用鸢尾花数据集为例
将4维数据降到2维,并可视化处理

import matplotlib.pyplot as plt
from sklearn.datasets import load_iris #鸢尾花数据集 
from sklearn.decomposition import PCA
iris = load_iris()
y = iris.target
x = iris.data
X_dr = PCA(n_components = 2).fit_transform(x) 
# 降维完毕
# 可视化
# 可视化
plt.figure()  # 画布
plt.scatter(X_dr[y==0, 0],X_dr[y==0, 1], c= "red", label=iris.target_names[

你可能感兴趣的:(PCA降维)