第六章 样本相似性可视化课堂练习
1 案例数据
1.1 iris:鸢尾花数据集
- R语言内置的
iris数据集(鸢尾花数据集)是统计学和机器学习领域最经典的案例数据集之一,由英国统计学家 Ronald Fisher 在1936年首次提出。它包含了3种鸢尾花的测量数据,每个类别有50个样本,共150行数据。
| 变量名 | 数据类型 | 单位 | 说明 |
|---|---|---|---|
| Sepal.Length | numeric | cm | 花萼(萼片)长度,即花朵最外层绿色叶状结构的长度 |
| Sepal.Width | numeric | cm | 花萼(萼片)宽度 |
| Petal.Length | numeric | cm | 花瓣长度,即花朵内部彩色叶状结构的长度 |
| Petal.Width | numeric | cm | 花瓣宽度 |
| Species | factor | - | 鸢尾花种类(分类标签),包含3个水平: • setosa山鸢尾• versicolor变色鸢尾• virginica维吉尼亚鸢尾 |
setosa类的花通常较小,花瓣短而宽,与其他两类差异明显;versicolor和virginica在部分特征上有重叠,分类难度更高。
2 平行坐标图和雷达图
2.1 平行坐标图
ggplot(group=id)+geom_line+geom_point绘图Species映射为颜色
2.1.1 图形观察和代码编写的心得体会
平行坐标图非常适合展示多维数据,可以直观比较不同类别的特征
从图中可以明显看出setosa与其他两个物种在花瓣测量值上有明显差异
versicolor和virginica在某些指标上有重叠但在花瓣长度和宽度上可以区分
数据处理时保持因子顺序很重要,fct_inorder可以保持原始列顺序
对于多线条图形,适当调整透明度可以提高可视化效果
图例和标签的精心设计可以大大提高图形的可读性
2.2 雷达图
- 采用
ggiraphExtra::ggRadar绘图
2.2.1 图形观察和代码编写的心得体会
雷达图能直观展示多维数据中各物种的特征差异
从归一化后的雷达图可以更清晰地比较各物种的相对特征
setosa的花瓣尺寸明显小于其他两类,花萼特征也有差异
versicolor和virginica在归一化后显示出更清晰的差异模式
分面展示可以避免图形过度重叠,提高可读性
合理设置alpha透明度可以改善重叠部分的视觉效果
ylim参数的调整对图形展示效果影响很大,需要根据数据范围合理设置
3 星图和脸谱图
3.1 星图
采用
stars函数,对标准化数据绘制圆弧星图需要先将四个数值变量转化为矩阵,并将
Species作为矩阵的行名;设置图例在合适位置,能完整显示;将图形分为10行。
3.1.1 图形观察和代码编写的心得体会
圆弧星图能清晰显示各测量指标的比例关系
多边形星图则更强调各物种的整体形态差异
明显可见setosa的花瓣尺寸(Petal.Length/Width)显著小于其他两类
versicolor和virginica在花萼指标上较为相似
3.2 脸谱图
- 采用
aplpack::faces函数,作Species三个类别的脸谱图 - 需要先将四个数值变量转化为矩阵,并将
Species作为矩阵的行名; - 设置图例在合适位置,能完整显示;将图形分为3列。
effect of variables:
modified item Var
"height of face " "Sepal.Length"
"width of face " "Sepal.Width"
"structure of face" "Petal.Length"
"height of mouth " "Petal.Width"
"width of mouth " "Sepal.Length"
"smiling " "Sepal.Width"
"height of eyes " "Petal.Length"
"width of eyes " "Petal.Width"
"height of hair " "Sepal.Length"
"width of hair " "Sepal.Width"
"style of hair " "Petal.Length"
"height of nose " "Petal.Width"
"width of nose " "Sepal.Length"
"width of ear " "Sepal.Width"
"height of ear " "Petal.Length"
3.2.1 图形观察和代码编写的心得体会
三种鸢尾花的脸部特征有明显差异
setosa的脸型(可能对应花萼指标)最为”圆润”
virginica的脸部特征(可能对应花瓣指标)最为”夸张”
脸谱的嘴巴、眼睛等部位差异反映了各测量指标的大小关系
4 聚类图和热图
4.1 系统聚类树状图
- 采用
factoextra::fviz_dend函数,对标准化后数据作图; - 需要先将四个数值变量转化为矩阵,并将
Species作为矩阵的行名; - 要求分为3类,观察分类结果和
Species的差异;树状图的外观为圆形。
真实类别
聚类结果 setosa versicolor virginica
1 49 0 0
2 1 27 2
3 0 23 48
4.1.1 图形观察和代码编写的心得体会
树状图清晰显示setosa与其他两类明显分离
versicolor和virginica存在部分重叠
圆形布局适合展示中等规模数据集(150个样本)
4.2 K-menas聚类主成分图
采用
factoextra::fviz_cluster函数,对标准化后数据作图;需要先将四个数值变量转化为矩阵,并将
1:150作为矩阵的行名;要求分为3类,类别轮廓为正态分布,观察哪些观察值比较异常。
最异常的5个样本编号: 132, 118, 61, 110, 119
4.2.1 图形观察和代码编写的心得体会
主成分图显示三个簇的分离情况
正态椭圆显示versicolor和virginica有部分重叠区域
异常点多位于两类交界处
4.3 热图
采用
gplots::heatmap.2函数,对原始数据绘制热力图需要先将四个数值变量转化为矩阵,并将
Species作为矩阵的行名;要求横轴和纵轴均添加聚类树状图
4.3.1 图形观察和代码编写的心得体会
关键参数设置:
dendrogram="both"同时显示行列聚类树col=bluered(100)提供直观的温度图效果margins=c(8,8)适应长标签显示
可视化发现:
行聚类清晰分离三个物种(setosa明显独立)
列聚类显示花萼和花瓣指标各自聚为两类
颜色梯度揭示virginica的花瓣尺寸普遍较大