PCA, 3d可视化以及R聚类

学习中用到了,简单进行记录一下实现的过程,具体如下

导入数据

数据使用的是iris数据包:

data(iris)
iris$Species <- factor(iris$Species, levels = c("Versicolor", "virginica", "setosa"))

可以使用head(iris)来查看数据情况。

可以简单看看数据的拟合情况:

round(cor(iris[,1:4]),2)

主成分分析PCA

pca <- princomp(iris[,1:4], cor=TRUE, scores=TRUE)//选择研究correlation

通过summary(pc)可以查看计算结果
绘制结果:

plot(pc, type="lines")
biplot(pc)

3D可视化

要想进行3D的研究,可以选择使用rgl包,如果没有的话可以使用install.packages(“rgl”)进行安装

具体实现:

library(rgl)
plot3d(pc$scores[,1:3],col=iris$Species)

text3d(pc$scores[,1:3],texts=rownames(iris))
text3d(pc$loadings[,1:3], texts=rownames(pc$loadings), col="red")
coords <- NULL
for (i in 1:nrow(pc$loadings)) {
  coords <- rbind(coords, rbind(c(0,0,0),pc$loadings[i,1:3]))
}
lines3d(coords, col="red", lwd=4)

聚类

set.seed(42)
cl <- kmeans(iris[,1:4],3)
iris$cluster <- as.factor(cl$cluster)

plot3d(pc$scores[,1:3], col=iris$cluster, main="k-means clusters")
plot3d(pc$scores[,1:3], col=iris$Species, main="actual species")

Hierarchial 聚类

di <- dist(iris[,1:4], method="euclidean")
tree <- hclust(di, method="ward")
iris$hcluster <- as.factor((cutree(tree, k=3)-2) %% 3 +1)//that modulo business just makes the coming table look nicer
plot(tree, xlab="")
rect.hclust(tree, k=3, border="red")

然后就大功告成了~!!!

你可能感兴趣的:(数据挖掘)