第六章 样本相似性可视化课堂练习
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 图形观察和代码编写的心得体会
图形特点:
每条线代表一个观测样本(共150个样本)
不同颜色代表不同鸢尾花物种(setosa, versicolor, virginica)
x轴是四个测量指标(花萼长度、花萼宽度、花瓣长度、花瓣宽度)
y轴是各指标的数值
使用线条连接同一观测在不同指标上的值
在每个指标位置添加了小圆点标记
这种可视化方法能有效展示多维数据中不同类别的分布模式,特别适合中等规模数据集的多变量比较分析。
2.2 雷达图
采用
ggiraphExtra::ggRadar
绘图
2.2.1 图形观察和代码编写的心得体会
图形特点:
每个物种(Species)用不同颜色表示,形成一个多边形区域
四条轴分别代表四个测量指标(花萼长度、花萼宽度、花瓣长度、花瓣宽度)
多边形顶点位置表示该物种在该指标上的平均值或汇总值
设置了透明度(alpha=0.1)使重叠区域可见
y轴范围限定在0-6之间,使图形比例协调
这种雷达图特别适合展示不同类别在多维特征上的整体模式,能直观呈现各类别的优势指标和特征轮廓。
3 星图和脸谱图
3.1 星图
采用
stars
函数,对标准化数据绘制圆弧星图需要先将四个数值变量转化为矩阵,并将
Species
作为矩阵的行名;设置图例在合适位置,能完整显示;将图形分为10行。
3.1.1 图形观察和代码编写的心得体会
图形特点:
每个观测样本(共150个)用一片”星瓣”表示,三种颜色代表三个物种
四个测量指标对应星瓣的四个扇形区域
数据经过标准化处理(scale=TRUE),使各指标具有可比性
采用圆弧图形式(draw.segments=TRUE),每个扇形面积反映指标值大小
图形采用10行布局(nrow=10),150个观测整齐排列
星图与前两种多变量可视化方法相比具有独特优势:
能同时展示所有个体观测而非仅群体特征
扇形面积编码方式直观反映数值大小
矩阵式排列便于发现数据中的模式和异常值
特别适合中等规模数据集的整体浏览
这种星图在探索性数据分析阶段非常有用,能快速发现数据中的聚类模式、异常值和变量间关系,是数据科学家工具箱中的重要可视化工具之一。
3.2 脸谱图
- 采用
aplpack::faces
函数,作Species
三个类别的脸谱图 - 需要先将四个数值变量转化为矩阵,并将
Species
作为矩阵的行名; - 设置图例在合适位置,能完整显示;将图形分为12列。
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、Versicolor、Virginica)
四个面部特征(如脸型、眼睛大小、嘴巴弧度等)对应四个测量指标
数据经过标准化处理(scale=TRUE)使各指标可比
采用4列布局(ncol.plot=4)展示脸谱
脸部特征变化直观反映不同物种的特征差异
脸谱图的独特价值:
利用人类对人脸的高度辨识能力,使数据模式更易被察觉
适合展示中等数量观测的多维数据
能同时呈现个体特征和整体模式
生动有趣,适合非技术观众
局限性:
面部特征与数据指标的对应关系需要解释
对太多观测或变量效果会下降
精确数值难以从图形中读取
脸谱图在探索性数据分析和数据故事讲述中特别有用,能将抽象数据转化为易于理解的人类面部特征,帮助快速识别数据中的模式和异常。
4 聚类图和热图
4.1 系统聚类树状图
- 采用
factoextra::fviz_dend
函数,对标准化后数据作图; - 需要先将四个数值变量转化为矩阵,并将
Species
作为矩阵的行名; - 要求分为3类,观察分类结果和
Species
的差异;树状图的外观为圆形。
4.1.1 图形观察和代码编写的心得体会
图形特点:
采用圆形布局(type=“circular”)的树状图,结构清晰美观
使用Ward.D2方法进行层次聚类,分为3个主要类别(k=3)
不同聚类用不同颜色区分(Set1调色板)
每个叶节点代表一个样本,标签显示物种名称
矩形框标记聚类分组,填充颜色增强可视化效果
数据经过标准化和欧式距离计算处理
系统聚类树状图的独特价值:
直观展示数据层次结构和聚类过程
可以同时观察个体样本和整体聚类模式
圆形布局节省空间且美观
能评估不同聚类数量的效果
特别发现:
从图形可见,Setosa物种能很好地区分开来
Versicolor和Virginica有一定重叠,与实际情况相符
聚类结果与真实物种分类高度一致,验证了鸢尾花特征的判别力
这种可视化方法在探索数据自然分组、评估特征判别力等方面极具价值,是数据科学家进行无监督学习的重要工具。
4.2 K-menas聚类主成分图
采用
factoextra::fviz_cluster
函数,对标准化后数据作图;需要先将四个数值变量转化为矩阵,并将
1:150
作为矩阵的行名;要求分为3类,类别轮廓为正态分布,观察哪些观察值比较异常。
4.2.1 图形观察和代码编写的心得体会
图形特点:
基于主成分分析(PCA)降维后的二维可视化
3个聚类中心用不同颜色表示
椭圆表示每个聚类的正态分布轮廓(ellipse.type=“norm”)
样本点根据所属聚类着色,点旁标注行号(1:150)
repel=TRUE避免标签重叠,保持图形清晰
图形标题说明聚类方法和类别数
相比层次聚类,K-means计算效率更高:
PCA投影保留了主要变异信息
椭圆置信区域直观显示聚类紧密度
适合中等规模数据集的快速聚类分析
这种可视化方法能有效评估聚类效果,识别潜在异常值,是探索性数据分析中常用的技术手段。
4.3 热图
采用
gplots::heatmap.2
函数,对原始数据绘制热力图需要先将四个数值变量转化为矩阵,并将
Species
作为矩阵的行名;要求横轴和纵轴均添加聚类树状图
4.3.1 图形观察和代码编写的心得体会
图形特点:
矩阵展示:行代表150个观测样本,列代表4个测量指标
颜色编码:使用rainbow色阶(256色)表示数值大小
聚类分析:行列均显示聚类树状图(dendrogram=“both”)
标签处理:调整行/列标签大小和角度提高可读性
辅助元素:包含色键(color key)说明数值与颜色的对应关系
热图的独特优势:
同时展示数值分布和聚类结构
适合中等规模矩阵数据的整体模式识别
颜色编码使微小差异可视化
行列聚类揭示双向关系
热图在基因表达分析、市场细分、质量控制等领域应用广泛,是探索数据结构和识别模式的强大工具。