options(repos = c(CRAN = "https://cloud.r-project.org/"))
setwd("D:/桌面/多元统计分析数据data") #设定工作路径
ex4.1<-read.csv("ex4.1.csv",header=T) #将ex4.1.csv数据读入
d4.1=ex4.1[,-1]#去掉第1列指标名称,数据集取名为d4.1
d4.1[is.na(d4.1)] <- sapply(d4.1, function(x) mean(x, na.rm = TRUE))
rownames(d4.1)=ex4.1[,1]#用ex4.1的第一列为d4.1的行重新命名
KM<-kmeans(d4.1, 4, nstart=20,algorithm="Hartigan-Wong")#聚类的个数为4#初始随机集合的个数为20,算法为"Hartigan-Wong"(默认)
sort(KM$cluster)
## Budweiser Ionenbrau Heineken Old-milnaukee Strchs-bohemi
## 1 1 1 1 1
## Coors Michelos-lich Secrs Kkirin Hamms
## 1 1 1 1 1
## Heilemans-old Schlitz Kronensourc Aucsberger
## 1 1 2 2 2
## Pabst-extral Olympia-gold Miller-lite Sudeiser-lich Coorslicht
## 3 3 4 4 4
## Schlite-light
## 4
KM<-kmeans(d4.1, 5, nstart=15); sort(KM$cluster) #聚类的个数 k=5
## Schlitz Kronensourc Aucsberger Ionenbrau Heineken
## 1 1 1 2 2
## Secrs Kkirin Budweiser Old-milnaukee Strchs-bohemi
## 2 2 3 3 3
## Coors Michelos-lich Hamms Heilemans-old
## 3 3 3 3 3
## Pabst-extral Olympia-gold Miller-lite Sudeiser-lich Coorslicht
## 4 4 5 5 5
## Schlite-light
## 5
install.packages("Cairo")
## 将程序包安装入'C:/Users/33880/AppData/Local/R/win-library/4.4'
## (因为'lib'没有被指定)
## 程序包'Cairo'打开成功,MD5和检查也通过
## Warning: 无法删除软件包 'Cairo' 的先前安装
## Warning in file.copy(savedcopy, lib, recursive = TRUE):
## 拷贝C:\Users\33880\AppData\Local\R\win-library\4.4\00LOCK\Cairo\libs\x64\Cairo.dll到C:\Users\33880\AppData\Local\R\win-library\4.4\Cairo\libs\x64\Cairo.dll时出了问题:Permission
## denied
## Warning: 回复了'Cairo'
##
## 下载的二进制程序包在
## C:\Users\33880\AppData\Local\Temp\RtmpOipmfa\downloaded_packages里
library(Cairo)
setwd("D:/桌面/多元统计分析数据data") # 设定工作路径
d4.1 <- read.csv("ex4.1.csv", header=T) # 将ex4.1.csv数据读入到d4.1中
# 检查数据中是否有NA值
sum(is.na(d4.1))
## [1] 4
# 如果有NA值,可以选择删除这些行
d4.1 <- na.omit(d4.1)
# 检查每列是否包含NaN值
nan_counts <- sapply(d4.1, function(x) sum(is.nan(x)))
if (any(nan_counts > 0)) {
# 如果有NaN值,可以选择删除这些行或用其他值填充
d4.1 <- d4.1[!rowSums(sapply(d4.1, function(x) is.nan(x))), ]
}
# 检查每列是否包含Inf值
inf_counts <- sapply(d4.1, function(x) sum(is.infinite(x)))
if (any(inf_counts > 0)) {
# 如果有Inf值,可以选择删除这些行或用其他值填充
d4.1 <- d4.1[!rowSums(sapply(d4.1, function(x) is.infinite(x))), ]
}
# 重新计算距离矩阵
d <- dist(d4.1, method="euclidean", diag=TRUE, upper=FALSE)
## Warning in dist(d4.1, method = "euclidean", diag = TRUE, upper = FALSE):
## 强制改变过程中产生了NA
HC <- hclust(d, method="single")
plot(HC, hang=-1)
# 用红色矩形框出3个分类
rect.hclust(HC, k=3, border="red")
###
在这张树状图中,数据点在较低的高度就被合并,这表明使用最小距离法时,数据点之间的相似性较高,或者数据点之间的差异较小。树状图的高度轴显示了聚类之间的距离,这里的范围是0到20。较低的合并高度表明聚类之间的差异较小,这可能意味着数据集中的个体在特征空间中相对接近。这种聚类结果可能适合于那些需要识别紧密相关小组的场景。
setwd("D:/桌面/多元统计分析数据data") #设定工作路径
ex4.5<-read.csv("ex4.5.csv", header=T) #将ex4.5.csv数据读入到d4.1中
d4.5=ex4.5[,-1] #ex4.5的第一列为地名,不是数值先去掉
rownames(d4.5)=ex4.5[,1] #用ex4.2的第一列为d4.2的行重新命名
KM<-kmeans(d4.5, 4, nstart=20, algorithm="Hartigan-Wong") #聚类的个数为4#初始随机集合的个数为20, 算法为"Hartigan-Wong"(默认)
sort(KM$cluster) #对分类结果进行排序并查看
## 河北 山西 内蒙古 吉林 黑龙江 安徽 江西 贵州 云南 陕西 甘肃
## 1 1 1 1 1 1 1 1 1 1 1
## 青海 宁夏 新疆 北京 上海 天津 浙江 福建 广东 海南 辽宁
## 1 1 1 2 2 3 3 3 3 3 4
## 江苏 山东 河南 湖北 湖南 广西 重庆 四川
## 4 4 4 4 4 4 4 4
KM<-kmeans(d4.5, 5, nstart=15);sort(KM$cluster) #聚类的个数 k=5
## 天津 浙江 福建 海南 北京 上海 辽宁 江苏 山东 河南 湖北
## 1 1 1 1 2 2 3 3 3 3 3
## 湖南 广西 重庆 四川 河北 山西 内蒙古 吉林 黑龙江 安徽 江西
## 3 3 3 3 4 4 4 4 4 4 4
## 贵州 云南 陕西 甘肃 青海 宁夏 新疆 广东
## 4 4 4 4 4 4 4 5
install.packages("ggplot2")
## 将程序包安装入'C:/Users/33880/AppData/Local/R/win-library/4.4'
## (因为'lib'没有被指定)
## 程序包'ggplot2'打开成功,MD5和检查也通过
##
## 下载的二进制程序包在
## C:\Users\33880\AppData\Local\Temp\RtmpOipmfa\downloaded_packages里
install.packages("ggfortify")
## 将程序包安装入'C:/Users/33880/AppData/Local/R/win-library/4.4'
## (因为'lib'没有被指定)
## 程序包'ggfortify'打开成功,MD5和检查也通过
##
## 下载的二进制程序包在
## C:\Users\33880\AppData\Local\Temp\RtmpOipmfa\downloaded_packages里
install.packages("cluster")
## 将程序包安装入'C:/Users/33880/AppData/Local/R/win-library/4.4'
## (因为'lib'没有被指定)
##
## 有二进制版本,但源代码版本更新:
## binary source needs_compilation
## cluster 2.1.6 2.1.7 TRUE
##
## Binaries will be installed
## 程序包'cluster'打开成功,MD5和检查也通过
## Warning: 无法删除软件包 'cluster' 的先前安装
## Warning in file.copy(savedcopy, lib, recursive = TRUE):
## 拷贝C:\Users\33880\AppData\Local\R\win-library\4.4\00LOCK\cluster\libs\x64\cluster.dll到C:\Users\33880\AppData\Local\R\win-library\4.4\cluster\libs\x64\cluster.dll时出了问题:Permission
## denied
## Warning: 回复了'cluster'
##
## 下载的二进制程序包在
## C:\Users\33880\AppData\Local\Temp\RtmpOipmfa\downloaded_packages里
#加载安装包
library(ggplot2)
library(ggfortify)
library(cluster)
head(iris)# 聚类分析的可视化
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
#k-means聚类
autoplot(kmeans(USArrests, 3), data = USArrests, label = TRUE, label.size = 3)
library(cluster)
autoplot(pam(iris[-5], 3), frame = TRUE, frame.type = 'norm')