热线电话:13121318867

登录
2020-12-03 阅读量: 784
用sklearn库进行PCA降维分析

我们用PCA进行降维分析的场景是:变量个数太多,变量之间的相关性比较强,这个时候我们用降维分析就可以通过对原变量进行变换,生成数量比较少的几个变量,而这比较少的几个变量可以包含原变量的大部分信息即可,比如90%的信息。这样就起到了降维的作用。

PCA是无监督降维

#------------------------------------------------------------

# PCA讲解

#------------------------------------------------------------------

#1.导入可以进行PCA降维的库

from sklearn.decomposition import PCA



#2.先准备一下数据,这里我们用sklearn库自带的iris数据

from sklearn.datasets import load_iris

iris = load_iris()

iris.data #这是一个二维数组,里面只有具体数值,是一个4列的数据,每列是一个变量

iris.feature_names #4个变量的名字,是一个列表



#3.用PCA对我们的数据进行降维

#我们先实例化一个pca模型,对具体参数进行设定,比如n_compents,刚开始我们不知道提取几个主成分比较合适,我们不妨设为最大值4

PCA1=PCA(n_components=4)

#然后代入数据进行拟合

PCA1.fit(iris.data)


#如何查看各个主成分对原变量总体信息的解释比例呢?

PCA1.explained_variance_ #返回每个主成分对原信息解释的绝对值

PCA1.explained_variance_ratio_ #返回每个主成分对原信息的解释比例

#上面命令的结果为array([0.92461872, 0.05306648, 0.01710261, 0.00521218])

#可以看到第一个主成分的解释比例非常高,根据经验提取一个主成分就可以。如果你希望提取原数据更多信息,不妨提取两个主成分,

#具体提取几个只能自己根据经验和实际要求进行判断,比如我们最后决定提取两个

#就可以执行后面的命令

PCA2=PCA(n_components=2) #必须重新实例化这个模型,因为后面计算主成分的话可能会对矩阵进行旋转。

#然后传入数据进行模型拟合,这个fit_transform方法调用后会直接返回降维后的结果

#比如前面我们设定了n_components=2,也就是保留两个主成分,那么结果就会返回第一主成分和第二主成分的值

result1=PCA2.fit_transform(iris.data) #返回一个二维数组,两列数据。

#result1就是我们最终想要的降维后的主成分

#我们可以直接去拿这些主成分去建模,而不用使用原有的数据。


0.2366
0
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子