R语言中的PCA实战代码

主成分分析(PCA)和t-SNE,MDS等算法都是数据科学中使用最多的降维算法,也有使用lasso进行降维。本章使用R语言将pca进行演习,具体理论大家查找相关资料即可。

R语言中使用最多的函数是princomp,位于R自带的stats数据包中,主要参数如下:

x,传入的数据矩阵或者数据框

cor,判断使用相关系数还是协方差矩阵进行计算

scale,是否进行标准化处理

当然还有prcomp函数可选,参数基本一致。

我们使用iris数据集进行演示:

iris<-select(iris,-Species)
iris.pca<-princomp(iris,cor = T)
names(iris.pca)

[1] "sdev"     "loadings" "center"   "scale"    "n.obs"    "scores"   "call"  

sdev是标准偏差

center是每列计算是减去的均值

scores即降维之后的结果,当然也可以使用predict函数,但是结果一样


summary(iris.pca,loadings = T)
Importance of components:
                          Comp.1    Comp.2     Comp.3      Comp.4
Standard deviation     1.7083611 0.9560494 0.38308860 0.143926497
Proportion of Variance 0.7296245 0.2285076 0.03668922 0.005178709
Cumulative Proportion  0.7296245 0.9581321 0.99482129 1.000000000


Loadings:
             Comp.1 Comp.2 Comp.3 Comp.4
Sepal.Length  0.521 -0.377  0.720  0.261
Sepal.Width  -0.269 -0.923 -0.244 -0.124
Petal.Length  0.580        -0.142 -0.801

Petal.Width   0.565        -0.634  0.524


我们看Proportion of Variance,即为每一个成分方差所占比例,Cumulative Proportion代表是累计比例,为Proportion of Variance的累计值,一般达到90%左右就可以代表所有数据。

loadings代表每一个成分中之前特征系数。

R语言中的PCA实战代码_第1张图片

利用碎石图,可观察方差变化斜率,当到达第三个成分时,变化就不再明显,所有我们选择前三个特征。

使用biplot也可以看出数据点的分布:

R语言中的PCA实战代码_第2张图片

那么我们提取降维后的数据:

new.iris<-as.data.frame(iris.pca$scores[,1:3])或者是

new.iris<-as.data.frame(predict(iris.pca)[,1:3])

你可能感兴趣的:(R)