当前位置:   article > 正文

吉林大学 数据挖掘期末大作业 第二题报告_数据挖掘大作业报告

数据挖掘大作业报告

一、操作说明:
根据第一题我们在这里使用Class10中的sheet6“成绩详情”,讨论一下不同成绩之间的关系。我们首先对数据进行处理,去掉SID,五级制等级,综合成绩和证书发放四个列,这里用到了数据集成。剩下的有五个列,我们不用全部讨论,我们使用数据规约,进行主成分分析,对进行分析后的列再次处理。最后先进行k-means聚类分析,在进行根据距离函数进行的聚类分析,得到最终结果。
二、代码

# 加载所需的包略
data=read.xlsx("F:\\数据包\\Class10.xlsx",6)
#删除不需要的列
data <-data[ , !names(data) %in% c("SID","综合成绩","五级制等级(ABCDE)","证书发放")]
data=as.data.frame(lapply(data,as.numeric))#将字符串转换为数字
PCA = princomp(data,cor = TRUE)#进行主成分分析
names(PCA) #查看输出项
(PCA$sdev)^2 #主成分特征根
PCA$loadings #主成分载荷
PCA$scores #主成分得分
summary(PCA) #主成分贡献率
data=data[,-4]#去掉次要成分列
data=data[,-4]
df <- scale(data)#标准化
#判断需要分为几个聚类
fviz_nbclust(data, kmeans, method = "wss") + geom_vline(xintercept = 5, linetype = 2)
#聚类结果
km_result <- kmeans(data, 5, nstart = 24)
print(km_result)
#先求样本之间两两相似性
result <- dist(data, method = "euclidean")
#产生层次结构
result_hc <- hclust(d = result, method = "ward.D2")
#进行初步展示
fviz_dend(result_hc, k = 5, 
          cex = 0.5, 
          k_colors = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07","#229BDF"),
          color_labels_by_k = TRUE, 
          rect = TRUE          
)
#距离函数求各行之间的距离:
#欧氏距离
dist(data,p=2)
#曼哈顿距离
dist(data,"manhattan")
#切比雪夫距离
dist(data,"maximum")
#闵可夫斯基距离
dist(data,"minkowski")
#蓝氏距离
dist(data,"canberra")
#相关系数表示距离
1-cor(t(data))
#利用各种距离进行聚类
#欧氏距离
dist(data,p=2)
out.dist=dist(data,method="euclidean")
out.hclust=hclust(out.dist,method="complete")
plclust(out.hclust)
rect.hclust(out.hclust, k=5)
#曼哈顿距离
dist(data,"manhattan")
out.dist=dist(data,method="manhattan")
out.hclust=hclust(out.dist,method="complete")
plclust(out.hclust)
rect.hclust(out.hclust, k=5)
#切比雪夫距离
dist(data,"maximum")
out.dist=dist(data,method="maximum")
out.hclust=hclust(out.dist,method="complete")
plclust(out.hclust)
rect.hclust(out.hclust, k=5)
#闵可夫斯基距离
dist(data,"minkowski")
out.dist=dist(data,method="minkowski")
out.hclust=hclust(out.dist,method="complete")
plclust(out.hclust)
rect.hclust(out.hclust, k=5)
#蓝氏距离
out.dist=dist(data,method="canberra")
out.hclust=hclust(out.dist,method="complete")
plclust(out.hclust)
rect.hclust(out.hclust, k=5)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73

三、程序截图与分析
① 首先载入数据进行数据集成,删除不需要的列,再进行主成分分析删除次要成分。
相关代码分析:
data=read.xlsx(“F:\数据包\Class10.xlsx”,6)
data <-data[ , !names(data) %in% c(“SID”,“综合成绩”,“五级制等级(ABCDE)”,“证书发放”)]
PCA = princomp(data,cor = TRUE)
names(PCA)
(PCA s d e v ) 2 P C A sdev)^2 PCA sdev)2PCAloadings
PCA$scores
summary(PCA)
得到数据如图:
在这里插入图片描述

由图可知:当有三个主成分时,数据的利用率达到了85.5%,基本符合我们的需要。所以我们只要保留三个主成分就可以了。
去掉次要成分列
data=data[,-4]
data=data[,-4]
② 接下来进行聚类分析,有原数据我们可以了解我们的数据应该是可以分为5个聚类的(参考“五级制等级”),不过我们仍然需要再次根据数据进行判断,首先将数据进行标准化,利用fviz_nbclust函数进行判断。得出聚类个数,最后显示出聚类的层次结构,我们首先用“k-means,层次聚类”进行展示。、
相关代码分析:
data=as.data.frame(lapply(data,as.numeric))#将字符串转换为数字
df <- scale(data)#标准化
#判断需要分为几个聚类
fviz_nbclust(data, kmeans, method = “wss”) + geom_vline(xintercept = 5, linetype = 2)
如图:
在这里插入图片描述

容易得出当数值为5 的时候曲线变得平缓,所以应该分为五个聚类。
#聚类结果
km_result <- kmeans(data, 5, nstart = 24)
print(km_result)
聚类结果:
在这里插入图片描述

#先求样本之间两两相似性
result <- dist(data, method = “euclidean”)
#产生层次结构
result_hc <- hclust(d = result, method = “ward.D2”)
#进行初步展示
fviz_dend(result_hc, k = 5,
cex = 0.5,
k_colors = c("#2E9FDF", “#00AFBB”, “#E7B800”, “#FC4E07”,"#229BDF"),
color_labels_by_k = TRUE,
rect = TRUE
)
层次结构:
在这里插入图片描述

③ 根据距离函数求各行之间的距离:
欧氏距离 dist(data,p=2)
#曼哈顿距离 dist(data,“manhattan”)
切比雪夫距离 dist(data,“maximum”)
闵可夫斯基距离 dist(data,“minkowski”)
蓝氏距离 dist(data,“canberra”)
相关系数表示距离 1-cor(t(data))
上面的截图都是简单数据我们这里只截取欧氏距离作为例子:
欧氏距离数据:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

利用上述各种距离进行聚类,默认以最远距离进行聚类。
欧氏距离
out.dist=dist(data,method=“euclidean”)
out.hclust=hclust(out.dist,method=“complete”)
plclust(out.hclust)
rect.hclust(out.hclust, k=5)
结果如图:
在这里插入图片描述

曼哈顿距离
out.dist=dist(data,method=“manhattan”)
out.hclust=hclust(out.dist,method=“complete”)
plclust(out.hclust)
rect.hclust(out.hclust, k=5)
结果如图:
在这里插入图片描述

切比雪夫距离
dist(data,“maximum”)
out.dist=dist(data,method=“maximum”)
out.hclust=hclust(out.dist,method=“complete”)
plclust(out.hclust)
rect.hclust(out.hclust, k=5)
结果如图:
在这里插入图片描述

闵可夫斯基距离
out.dist=dist(data,method=“minkowski”)
out.hclust=hclust(out.dist,method=“complete”)
plclust(out.hclust)
rect.hclust(out.hclust, k=5)
结果如图:
在这里插入图片描述

蓝氏距离
out.dist=dist(data,method=“canberra”)
out.hclust=hclust(out.dist,method=“complete”)
plclust(out.hclust)
rect.hclust(out.hclust, k=5)
结果如图:
在这里插入图片描述

四、结果分析:
1、与原数据相似,根据数据计算后我们还是分成了5个聚类。
2、对于不同的距离函数,聚类结果不同。
3、对于曼哈顿距离进行距离,与我们使用k-means相似,存在极大可能我使用的k-means方法利用的也是曼哈顿距离。
4、相对于其他距离蓝氏距离更符合我们的需要,与原数据的分类相似。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/713498
推荐阅读
相关标签
  

闽ICP备14008679号