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

Author

221527125沈灿标

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

  • 纵轴(Y轴)数值,表示每个花部特征的测量值。

  • 横轴(X轴):4个离散的指标,对应鸢尾花的四个特征:

    • Sepal.Length(花萼长度)

    • Sepal.Width(花萼宽度)

    • Petal.Length(花瓣长度)

    • Petal.Width(花瓣宽度)

  • 彩色折线:每条线代表一朵花的4个特征值,颜色区分不同种类

  • 灰色点标记:突出每个特征的具体数值点。

  • 变量相关性:

    • 花瓣特征(Petal.Length/Petal.Width)

      • 折线在这两个指标间交叉较少,说明它们高度相关。
    • 花萼特征(Sepal.Length/Sepal.Width)

      • 折线模式更分散,可能相关性较弱。

2.2 2.2 雷达图

2.3 雷达图

  • 采用ggiraphExtra::ggRadar 绘图

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

  • 雷达图清晰揭示了:

    1. setosa 以“花萼宽、花瓣小”为标志性特征。

    2. virginica 的“花瓣尺寸”远大于其他两类。

    3. versicolor 是前两者的中间形态。

    4. 花瓣特征的分类区分度高于花萼特征。

3 星图和脸谱图

3.1 星图

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

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

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

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

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"

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"

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

4 聚类图和热图

4.1 系统聚类树状图

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

[1] "聚类结果与真实物种的混淆矩阵:"
            Predicted
Actual        1  2  3
  setosa     49  1  0
  versicolor  0 27 23
  virginica   0  2 48

调整兰德指数(ARI): 0.615
聚类结果与真实物种分类有中等程度的一致性

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

  • 纵轴(Height):表示 合并距离(Merge Distance),数值越大,说明两类差异越大。

  • 横轴(样本顺序)

    • 相似样本会较早合并,差异大的样本较晚合并。
  • setosa

    • 由于花萼宽、花瓣小,与其他两类差异明显 → 在树状图中会单独成簇。
  • versicolorvirginica

    • 部分样本可能重叠(尤其在 Petal.LengthPetal.Width 上相似)。

    • 树状图中可能显示 versicolorvirginica 的某些样本被错误分类。

4.2 K-menas聚类主成分图

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

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

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

检测到的异常值:
     ID    Species Cluster Distance Sepal.Length Sepal.Width Petal.Length
16   16     setosa       1     2.39          5.7         4.4          1.5
34   34     setosa       1     1.87          5.5         4.2          1.4
42   42     setosa       1     2.66          4.5         2.3          1.3
61   61 versicolor       2     1.97          5.0         2.0          3.5
118 118  virginica       3     2.09          7.7         3.8          6.7
119 119  virginica       3     1.82          7.7         2.6          6.9
132 132  virginica       3     2.17          7.9         3.8          6.4
    Petal.Width
16          0.4
34          0.2
42          0.3
61          1.0
118         2.2
119         2.3
132         2.0
鸢尾花数据集聚类异常值
ID Species Cluster Distance Sepal.Length Sepal.Width Petal.Length Petal.Width
16 16 setosa 1 2.39 5.7 4.4 1.5 0.4
34 34 setosa 1 1.87 5.5 4.2 1.4 0.2
42 42 setosa 1 2.66 4.5 2.3 1.3 0.3
61 61 versicolor 2 1.97 5.0 2.0 3.5 1.0
118 118 virginica 3 2.09 7.7 3.8 6.7 2.2
119 119 virginica 3 1.82 7.7 2.6 6.9 2.3
132 132 virginica 3 2.17 7.9 3.8 6.4 2.0

异常值特征分析:
1. 异常值数量: 7 
2. 异常值分布:

    setosa versicolor  virginica 
         3          1          3 

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

  • K-means 通过最小化 类内平方和(WCSS) 迭代优化聚类中心。

  • 最终输出 km 包含:

    • cluster:每个样本的聚类标签(1、2、3)。

    • centers:每个聚类的中心点坐标。

  • 横纵轴:前两个主成分(PC1 和 PC2),解释数据的主要变异方向。

  • 颜色:不同聚类(1、2、3)用不同颜色表示。

  • 椭圆:展示每个聚类的分布范围,椭圆重叠少说明聚类分离效果好

4.3 热图

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

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

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

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

  • 聚类分析dendrogram = "both" 表示对行和列进行层次聚类。

  • 颜色映射:使用彩虹色(rainbow)表示数值大小,色键(图例)显示颜色与数值的对应关系。

  • 标签调整:列名旋转30度,避免重叠;行名和列名字体缩小以提高可读性。