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

Author

221527111苏碧慧

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

  • setosa的花瓣尺寸(Petal)普遍较小

    versicolor处于中间过渡状态

    virginica表现出”大花瓣”特征

2.2 雷达图

  • 采用ggiraphExtra::ggRadar 绘图

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

  • 形状特征:

    setosa呈现小而紧凑的五边形,在Sepal.Width维度明显突出

    versicolor形成相对对称的星形

    virginica在Petal.Length和Petal.Width方向显著扩张,形成”瘦长”的星形

    类别区分:

    三个物种在Petal相关维度(Petal.Length/Petal.Width)差异最大

    Sepal.Width是setosa的显著特征

    virginica的花瓣特征(Petal)明显大于其他两类

    数据模式:

    setosa:Sepal.Width > Sepal.Length > Petal.Width ≈ Petal.Length

    versicolor:各维度相对平衡

    virginica:Petal维度显著大于Sepal维度

  • 通过这次雷达图实践,我认识到这种可视化特别适合展示多维数据的”轮廓特征”。相比平行坐标图,雷达图更强调整体形状模式,但需要注意维度不宜过多(通常5-8个为宜),否则会降低可读性。

3 星图和脸谱图

3.1 星图

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

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

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

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

  • key.loc的第一个值越大,图例会越靠右;inset的负值越大,图例也会越靠右。

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

  • 原始数据只有 3 个类别(setosa, versicolor, virginica),分 12 列会导致大量空白

4 聚类图和热图

4.1 系统聚类树状图

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

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

  • 圆形布局(circular)比传统矩形布局更节省空间,颜色区分明显,但k=3与4种颜色的设置不一致需要注意 聚类效果:ward.D2方法通常能产生平衡的聚类结果,矩形框和颜色填充直观展示了聚类分组 标签处理:cex=0.6适当缩小了标签大小,避免重叠color_labels_by_k=TRUE使标签颜色与聚类一致

4.2 K-menas聚类主成分图

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

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

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

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

  • 图形直观展示了3个聚类在降维空间(可能是PCA)中的分布,置信椭圆帮助判断每个聚类的紧密程度和重叠情况 标签处理:repel=TRUE有效避免了标签重叠,提高可读性,标签大小(labelsize)和点大小(pointsize)的调整使图形更平衡

4.3 热图

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

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

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

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

  • 调整标签角度(srtCol)和位置(adjCol)确实能改善长标签的可读性,标签大小调整(cex)对于大量行/列的数据特别重要