第六章 样本相似性可视化课堂练习

Author

221527116 古林琳

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 类的花通常较小,花瓣短而宽,与其他两类差异明显;versicolorvirginica 在部分特征上有重叠,分类难度更高。

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 图形观察和代码编写的心得体会

  • 图形特点:

    1. 每个物种(Species)用不同颜色表示,形成一个多边形区域

    2. 四条轴分别代表四个测量指标(花萼长度、花萼宽度、花瓣长度、花瓣宽度)

    3. 多边形顶点位置表示该物种在该指标上的平均值或汇总值

    4. 设置了透明度(alpha=0.1)使重叠区域可见

    5. y轴范围限定在0-6之间,使图形比例协调

      这种雷达图特别适合展示不同类别在多维特征上的整体模式,能直观呈现各类别的优势指标和特征轮廓。

3 星图和脸谱图

3.1 星图

  • 采用stars 函数,对标准化数据绘制圆弧星图

  • 需要先将四个数值变量转化为矩阵,并将Species 作为矩阵的行名;

  • 设置图例在合适位置,能完整显示;将图形分为10行。

3.1.1 图形观察和代码编写的心得体会

  • 图形特点:

    1. 每个观测样本(共150个)用一片”星瓣”表示,三种颜色代表三个物种

    2. 四个测量指标对应星瓣的四个扇形区域

    3. 数据经过标准化处理(scale=TRUE),使各指标具有可比性

    4. 采用圆弧图形式(draw.segments=TRUE),每个扇形面积反映指标值大小

    5. 图形采用10行布局(nrow=10),150个观测整齐排列

  • 星图与前两种多变量可视化方法相比具有独特优势:

    1. 能同时展示所有个体观测而非仅群体特征

    2. 扇形面积编码方式直观反映数值大小

    3. 矩阵式排列便于发现数据中的模式和异常值

    4. 特别适合中等规模数据集的整体浏览

    这种星图在探索性数据分析阶段非常有用,能快速发现数据中的聚类模式、异常值和变量间关系,是数据科学家工具箱中的重要可视化工具之一。

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 图形观察和代码编写的心得体会

  • 图形特点:

    1. 每个脸谱代表一个鸢尾花物种(Setosa、Versicolor、Virginica)

    2. 四个面部特征(如脸型、眼睛大小、嘴巴弧度等)对应四个测量指标

    3. 数据经过标准化处理(scale=TRUE)使各指标可比

    4. 采用4列布局(ncol.plot=4)展示脸谱

    5. 脸部特征变化直观反映不同物种的特征差异

  • 脸谱图的独特价值:

    1. 利用人类对人脸的高度辨识能力,使数据模式更易被察觉

    2. 适合展示中等数量观测的多维数据

    3. 能同时呈现个体特征和整体模式

    4. 生动有趣,适合非技术观众

    局限性:

    1. 面部特征与数据指标的对应关系需要解释

    2. 对太多观测或变量效果会下降

    3. 精确数值难以从图形中读取

    脸谱图在探索性数据分析和数据故事讲述中特别有用,能将抽象数据转化为易于理解的人类面部特征,帮助快速识别数据中的模式和异常。

4 聚类图和热图

4.1 系统聚类树状图

  • 采用factoextra::fviz_dend 函数,对标准化后数据作图;
  • 需要先将四个数值变量转化为矩阵,并将Species 作为矩阵的行名;
  • 要求分为3类,观察分类结果和Species 的差异;树状图的外观为圆形。

4.1.1 图形观察和代码编写的心得体会

  • 图形特点:

    1. 采用圆形布局(type=“circular”)的树状图,结构清晰美观

    2. 使用Ward.D2方法进行层次聚类,分为3个主要类别(k=3)

    3. 不同聚类用不同颜色区分(Set1调色板)

    4. 每个叶节点代表一个样本,标签显示物种名称

    5. 矩形框标记聚类分组,填充颜色增强可视化效果

    6. 数据经过标准化和欧式距离计算处理

  • 系统聚类树状图的独特价值:

    1. 直观展示数据层次结构和聚类过程

    2. 可以同时观察个体样本和整体聚类模式

    3. 圆形布局节省空间且美观

    4. 能评估不同聚类数量的效果

    特别发现:

    • 从图形可见,Setosa物种能很好地区分开来

    • Versicolor和Virginica有一定重叠,与实际情况相符

    • 聚类结果与真实物种分类高度一致,验证了鸢尾花特征的判别力

    这种可视化方法在探索数据自然分组、评估特征判别力等方面极具价值,是数据科学家进行无监督学习的重要工具。

4.2 K-menas聚类主成分图

  • 采用factoextra::fviz_cluster 函数,对标准化后数据作图;

  • 需要先将四个数值变量转化为矩阵,并将1:150 作为矩阵的行名;

  • 要求分为3类,类别轮廓为正态分布,观察哪些观察值比较异常。

4.2.1 图形观察和代码编写的心得体会

  • 图形特点:

    1. 基于主成分分析(PCA)降维后的二维可视化

    2. 3个聚类中心用不同颜色表示

    3. 椭圆表示每个聚类的正态分布轮廓(ellipse.type=“norm”)

    4. 样本点根据所属聚类着色,点旁标注行号(1:150)

    5. repel=TRUE避免标签重叠,保持图形清晰

    6. 图形标题说明聚类方法和类别数

  • 相比层次聚类,K-means计算效率更高:

  1. PCA投影保留了主要变异信息

  2. 椭圆置信区域直观显示聚类紧密度

  3. 适合中等规模数据集的快速聚类分析

这种可视化方法能有效评估聚类效果,识别潜在异常值,是探索性数据分析中常用的技术手段。

4.3 热图

  • 采用gplots::heatmap.2 函数,对原始数据绘制热力图

  • 需要先将四个数值变量转化为矩阵,并将Species 作为矩阵的行名;

  • 要求横轴和纵轴均添加聚类树状图

4.3.1 图形观察和代码编写的心得体会

  • 图形特点:

    1. 矩阵展示:行代表150个观测样本,列代表4个测量指标

    2. 颜色编码:使用rainbow色阶(256色)表示数值大小

    3. 聚类分析:行列均显示聚类树状图(dendrogram=“both”)

    4. 标签处理:调整行/列标签大小和角度提高可读性

    5. 辅助元素:包含色键(color key)说明数值与颜色的对应关系

  • 热图的独特优势:

    1. 同时展示数值分布和聚类结构

    2. 适合中等规模矩阵数据的整体模式识别

    3. 颜色编码使微小差异可视化

    4. 行列聚类揭示双向关系

    热图在基因表达分析、市场细分、质量控制等领域应用广泛,是探索数据结构和识别模式的强大工具。