R语言 聚类分析代码 系统聚类 K均值聚类 可视化

R语言进行聚类分析

1.系统聚类代码

#系统聚类
getwd()
xt1<-read.csv("1.csv",header = T,row.names = 1)
xt <- scale(xt1)
xt
head(xt)
distance<-dist(xt)#计算距离
distance
hc1<-hclust(distance,"ward.D2")#使用离差平方和法,默认最长距离法
plot(hc1,hang = 0.1)#绘画系谱图
re1<-rect.hclust(hc1,k=4,border = "red")#k表示分为几类
re1
as.matrix(distance)[1:10,1:10]##查看前10个样品的距离
hc1$merge##hclust返回结果中的merge组件记录了聚类过程
hc1$height##height组件记录了聚类过程中每次合并的两类间的距离
hc1$order##order组件记录了绘制聚类示意图的节点次序

2.K均值聚类代码

#kmeans聚类分析
getwd()
#加载聚类图的包,未下载需下载包
library(factoextra)
library(cluster)
library(tidyverse)#这个包调取时报的信息并不是错误,是冲突,但不影响使用
#读数据
df1<-read.csv("财政收入.csv",header = T,row.names = 1)
##head(df1)
dim(df1)
#数据标准化使用函数scale
df <- scale(df1)
#计算各地区距离
distance <- dist(df)
distance#输出距离阵
#距离阵可视化
fviz_dist(distance,gradient = list(low = "white",high = "red"))
#定义函数wss计算为k类的tot.withiness值,用来绘制碎石图
wss <- function(k) {
  kmeans(df,k,nstart = 20)$tot.withinss
}
#设置聚类数目
k.values <- 1:30
#提取tot.withinss值
wss_values <- map_dbl(k.values,wss)
#绘制withinss值随聚类数目变化曲线
plot(k.values,wss_values,type = "b",pch = 19,frame = FALSE,xlab = "Number of clusters K",
     ylab = "Total within-clusters sum of squares")
#k-means聚类,聚类centers聚类中心=4,这个可由上面绘制碎石图的拐点设置
kjl <- kmeans(df,centers = 4,nstart = 25)
#聚类可视化
fviz_cluster(kjl,data = df)
#看看Kmeans结果有森马
names(df.kmeans)   
df.kmeans$cluster#输出分类结果
df.kmeans$size#输出四类的个数
df.kmeans$centers#输出聚类中心


# centers是初始类的个数或者初始类的中心。
# iter.max是最大迭代次数。nstart是当centers是数字的时候,随机集合的个数
# [1] "cluster" 聚类 "centers" 中心     "totss" 总离差平方和  
# "withinss"各组组内平方和"tot.withinss"组内平方和合计
#  [6] "betweenss" 组间平方和   "size"         "iter"         "ifault"
# “cluster”是一个整数向量,用于表示记录所属的聚类
#  “centers”是一个矩阵,表示每聚类中各个变量的中心点
#  “totss”表示所生成聚类的总体距离平方和
#  “withinss”表示各个聚类组内的距离平方和
#  “tot.withinss”表示聚类组内的距离平方和总量
#  “betweenss”表示聚类组间的聚类平方和总量
#  “size”表示每个聚类组中成员的数量

你可能感兴趣的:(聚类,r语言,均值算法)