R语言-聚类与分类

更新时间:2023-06-27 06:30:25 阅读: 评论:0

R语⾔-聚类与分类⼀.聚类:
 ⼀般步骤:
  1.选择合适的变量
  2.缩放数据
  3.寻找异常点
  4.计算距离
  5.选择聚类算法
  6.采⽤⼀种或多种聚类⽅法
  7.确定类的数⽬
  8.获得最终聚类的解决⽅案
  9.结果可视化
  10.解读类
  11.验证结果
1.层次聚类分析gardens
the green hornet  案例:采⽤flexclust的营养数据集作为参考
    1.基于5种营养标准的27类鱼,禽,⾁的相同点和不同点是什么
    2.是否有⼀种办法把这些⾷物分成若⼲各类
    1.1计算距离
1 data(nutrient,package = 'flexclust')
2 head(nutrient,4)
3 d <- dist(nutrient)
4 as.matrix(d)[1:4,1:4]
    结论:观测的距离越⼤,异质性越⼤
    1.2平均联动聚类
1 row.names(nutrient) <- tolower(row.names(nutrient))
2 nutrient.scaled <- scale(nutrient)
3 d2 <- dist(nutrient.scaled)
4 fit.average <- hclust(d2,method = 'average')
5 plot(fit.average,hang=-1,cex=.8,main='Average Linkage Clustering')
    结论:只能提供⾷物营养成分的相似性和相异性
    1.3获取聚类的个数
1 library('NbClust')
2 devAskNewPage(ask = T)
服装店铺陈列3 nc <- NbClust(nutrient.scaled, distance="euclidean",
4              =2, =15, method="average")
5 table(nc$Best.n[1,])
6 barplot(table(nc$Best.n[1,]),
7        xlab = 'Number of Clusters',ylab = 'Number of Criteria',
8        main='Number of Clusters chon by 26 criteria')
    结论:分别有4个投票数最多的聚类(2,3,5,15),从中选择⼀个更适合的聚类数    1.4获取聚类的最终⽅案
1# 聚类分配情况
2 clusters <- cutree(fit.average,k=5)
3 table(clusters)
4# 描述聚类
5 aggregate(nutrient,by=list(clusters=clusters),median)
英文文章格式
囫囵睡是什么意思6 aggregate(as.data.frame(nutrient.scaled),by=list(clusters=clusters),median)
7 plot(fit.average,hang=-1,cex=.8,main='Average Linkpage Clustering\n 5 Cluster Solution')
8 rect.hclust(fit.average,k=5)
    结论:
      1.sardines canned形成⾃⼰的类,因为钙含量⽐较⾼
      2.beef heart也是单独的类,富含蛋⽩质和铁
      3.beef roast到pork simmered含有⾼能量和脂肪
      4.clams raw到clams canned含有较⾼的维⽣素
      5.mackerel canned到bluefish baked含有较低的铁
ncp是什么  2.划分聚类分析
  案例:采⽤rattle.data中的wine数据集进⾏分析
    1.葡萄酒数据的K均值聚类
# 使⽤卵⽯图确定类的数量
wssplot <- function(data,nc=15,ed=1234){
wss <- (nrow(data)-1) * sum(apply(data,2,var))
for (i in 2:nc) {
t.ed(ed)
wss[i] <- sum(kmeans(data,centers = i)$withinss)
}
plot(1:nc,wss,type = 'b',xlab = 'Number of Clusters',ylab = 'Within groups sum of squares') }
1 data(wine,package = 'rattle.data')
2
3 head(wine)
4 df <- scale(wine[-1])
5 wssplot(df)
6 library(NbClust)自考英语论文
7 t.ed(1234)
8# 确定聚类的数量
9 nc <- NbClust(df, =2, =15, method="kmeans")
10 table(nc$Best.n[1,])
11 barplot(table(nc$Best.n[1,]),
12        xlab="Numer of Clusters", ylab="Number of Criteria",
13        main="Number of Clusters Chon by 26 Criteria")
14 t.ed(1234)
15# 进⾏k值聚类分析
16 fit.km <- kmeans(df, 3, nstart=25)
17 fit.km$size
18 fit.km$centers
19 aggregate(wine[-1], by=list(cluster=fit.km$cluster), mean)
    结论:分3个聚类对数据有很好的拟合
# 使⽤兰德系数来量化类型变量和类之间的协议
ct.km <- table(wine$Type,fit.km$cluster)
library(flexclust)
randIndex(ct.km)
  结论:拟合结果优秀
  围绕中⼼点的分类:因为K均值聚类⽅法是基于均值的,所以对异常值较为敏感,更为稳健的⽅法是围绕中⼼点的划分,          k均值聚类⼀般使⽤欧⼏⾥得距离,⽽PAM可以使⽤任意的距离来计算
好听的伤感英文歌
1 library(cluster)
2 t.ed(1234)
3 fit.pam <- pam(wine[-1],k=3,stand = T)
4 fit.pam$medoids
5 clusplot(fit.pam,main = 'Bivariate Cluster Plot')
6 ct.pam <- table(wine$Type,fit.pam$clustering)
7 randIndex(ct.pam)
唯一英文
  结论:调整后的兰德指数从之前的0.9下降到0.7
  3.避免不存在的聚类anyhow
  3.1查看数据集
1 library(fMultivar)
2 t.ed(1234)
3 df <- rnorm2d(1000,rho=.5)
4 df <- as.data.frame(df)
5 plot(df,main='Bivariate Normal Distribution with rho=0.5')
  结论:没有存在的类
  3.2计算聚类的个数
library(NbClust)
nc <- NbClust( = = 15,method = 'kmeans')
barplot(table(nc$Best.n[1,]),xlab="Numer of Clusters", ylab="Number of Criteria",        main="Number of Clusters Chon by 26 Criteria")
  结论:⼀共可分为3各类
  3.3聚类图像

本文发布于:2023-06-27 06:30:25,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/159104.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:遗传平衡定律
下一篇:光电器件术语
标签:聚类   数据   结论
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图