R聚类2
凝聚层次聚类(Agglomerative hierarchical method)和K均值聚类(K-Means)

层次聚类hclust
data=iris[,-5]
dist.e=dist(data,method='euclidean')
heatmap(as.matrix(dist.e),labRow = F, labCol = F)
#计算类间距离:最短距离法、最长距离法、类平均法、重心法、中间距离法、离差平方和法
model1=hclust(dist.e,method='ward') #ward离差平方和法
#如果我们希望将类别设为3类,可以使用cutree函数提取每个样本所属的类别
result=cutree(model1,k=3)
hclust(d, method = "complete", members=NULL) 来进行层次聚类。其中d为距离矩阵。
可以用rect.hclust(tree, k = NULL, which = NULL, x = NULL, h = NULL,border = 2, cluster = NULL)来确定类的个数。 tree就是求出来的对象。k为分类的个数,h为类间距离的阈值。border是画出来的颜色,用来分类的。
data(iris);
iris.hc <- hclust( dist(iris[,1:4]))
# plot( iris.hc, hang = -1)
plclust( iris.hc, labels = FALSE, hang = -1)
re <- rect.hclust(iris.hc, k = 3)
iris.id <- cutree(iris.hc, 3)
table(iris.id, Species)



K均值聚类 centers分类个数 nstart取随机初始中心的次数,其默认值为1
model2=kmeans(data,centers=3,nstart=10)
model2$cluster #可以用来提取每个样本所属的类别
kmeans(x, centers, iter.max = 10, nstart = 1,algorithm =c("Hartigan-Wong", "Lloyd","Forgy", "MacQueen"))来进行聚类。centers是初始类的个数或者初始类的中心。iter.max是最大迭代次数。nstart是当centers是数字的时候,随机集合的个数。algorithm是算法,默认是第一个。
library(fpc)
data(iris)
df<-iris[,c(1:4)]
(kmeans <- kmeans(na.omit(df), 3)) # 显示K-均值聚类结果
plotcluster(na.omit(df), kmeans$cluster) # 生成聚类图


基于密度聚类
dbscan(data, eps, MinPts, scale, method, seeds, showplot, countmode)\
其中eps是距离的半径,minpts是最少多少个点。 scale是否标准化(我猜) ,method 有三个值raw,dist,hybird,分别表示,数据是原始数据避免计算距离矩阵,数据就是距离矩阵,数据是原始数据但计算部分距离矩阵。showplot画不画图,0不画,1和2都画。countmode,可以填个向量,用来显示计算进度
install.packages("fpc", dependencies=T)
library(fpc)
newiris <- iris[1:4]
model <- dbscan(newiris,0.5,5,scale=T,showplot=T,method="raw")


一种方法是先用层次聚类以决定个数,再用K均值聚类加以改进
cluster扩展包中也有许多函数可用于聚类分析,如agnes函数可用于凝聚层次聚类,diana可用于划分层次聚类,
pam可用于K均值聚类,fanny用于模糊聚类。

r语言中使用scale(x, center = TRUE, scale = TRUE) 对数据矩阵做中心化和标准化变换。
euclidean                欧几里德距离,就是平方再开方。
maximum                切比雪夫距离
manhattan            绝对值距离
canberra                Lance 距离
minkowski            明科夫斯基距离,使用时要指定p值
binary                    定性变量距离.
single            最短距离法
complete        最长距离法
median        中间距离法
mcquitty        相似法
average        类平均法
centroid        重心法
ward            离差平方和法