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

Author

kaka

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、versicolor、virginica )的数据连接起来,在 “Sepal.Length”“Sepal.Width”“Petal.Length”“Petal.Width” 等指标维度上,清晰呈现出各指标间的数值变化趋势和不同类别间的差异。通过线条的走向和分布,能快速捕捉到不同类别在各指标上的特征,比如某些类别在特定指标上数值的集中或离散情况,有助于深入分析数据的内在结构和规律。

2.2 雷达图

  • 采用ggiraphExtra::ggRadar 绘图

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

  • 这张雷达图,能直观感受到它在展示多维度数据方面的独特魅力。以中心为原点,不同维度(Sepal.Length、Sepal.Width、Petal.Length、Petal.Width )从中心向外辐射,各维度上的点通过线条连接成多边形,不同颜色对应不同类别(setosa、versicolor、virginica )。通过图形可清晰对比不同类别在各个维度上的数值差异,比如直观看到某些类别在某维度上数值较高,而在其他维度上数值较低,有助于快速把握不同类别数据的特征和差异,挖掘数据背后的潜在信息。

3 星图和脸谱图

3.1 星图

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

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

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

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

  • 众多的小扇形图案排列整齐,通过颜色区分不同类别(setosa、versicolor、virginica )。每个小扇形可能代表了数据在不同维度(如 Sepal.Length、Sepal.Width 等 )上的占比情况。从整体上看,能初步感受到不同类别在各维度上的分布差异,但由于图案密集,需要仔细分辨颜色和扇形大小才能准确解读。这种图形独特之处在于以重复且规律的方式展示多组数据的比例关系,有助于发现数据在整体分布上的共性与特性,不过在细节观察上需要花费更多精力。

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” 类别。这种可视化方式打破常规,以更具创意和趣味性的形式呈现数据,让人在轻松的氛围中对不同类别有直观印象。相较于传统图表,它更能吸引注意力,激发对数据背后信息的探索欲,也便于快速记忆和区分不同类别特征。

4 聚类图和热图

4.1 系统聚类树状图

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

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

  • 以环形布局展示数据,色彩鲜明的分区(绿色、红色、蓝色 )分别代表不同类别(可能是 setosa、versicolor、virginica )。环形上密集的文字重复标注类别名称,结合环形分区大小,能大致看出不同类别数据的占比情况。独特的环形设计打破常规线性或矩阵式展示,从全新视角呈现数据分布,给人强烈的视觉冲击,便于快速对比不同类别数据的规模差异,激发对数据深层次结构和关系的思考。

4.2 K-menas聚类主成分图

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

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

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

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

  • 这张 K - means 聚类图,能直观感受到聚类分析在数据分类上的强大功能。不同颜色和形状的标记清晰区分出 4 个聚类类别,每个类别中的数据点分布在特定区域内,通过图形可清晰看到各类别在 Dim1 和 Dim2 维度上的分布范围与集中趋势。椭圆边界直观展示了每个聚类的离散程度,帮助快速理解数据点围绕聚类中心的聚集情况。这种可视化方式能有效揭示数据的内在结构,便于发现不同类别数据的特征差异,为进一步分析和决策提供直观依据。

4.3 热图

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

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

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

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

  • 将色键、直方图与聚类树状图、数据矩阵相结合,呈现方式新颖且信息丰富。左上角的色键与直方图展示了 “Value” 变量的分布情况,色彩的渐变和柱状的高低能直观反映数据的取值范围和出现频次。下方的树状图通过分支结构呈现数据的聚类关系,可清晰看出不同数据点的聚合层次。右侧的数据矩阵以色彩填充单元格,不同颜色对应不同类别(versicolor、virginica、setosa ),同时结合变量(Sepal.Length 等 )维度,方便对比不同类别在各变量上的数据特征,帮助快速洞察数据的内在结构和类别间的差异。