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

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(红色)与其他两种鸢尾花在特征上有明显的区分,尤其是在Petal.Length和Petal.Width上。Setosa的花瓣长度和宽度明显小于其他两种。Versicolor(绿色)和Virginica(蓝色)在某些特征上存在重叠
  • 采用ggiraphExtra::ggRadar 绘图

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

  • Setosa(红色)在所有特征上的数值都相对较低,与其他两种鸢尾花有明显的区分。Petal.Length和Petal.Width的数值范围较大,而Sepal.Length和Sepal.Width的数值范围相对较小。

3 星图和脸谱图

3.1 星图

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

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

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

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

  • Setosa(红色)在所有特征上都显示出较小的数值,这与Setosa在其他图表中的表现一致,显示出其与其他两种鸢尾花的明显区别。Petal.Length和Petal.Width的数值范围较大,而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(蓝色)。这表明聚类分析成功地将数据分为三类,与实际的物种分类相匹配。

  • Setosa与其他两种鸢尾花在聚类过程中最早被分开,这与Setosa在其他特征图(如平行坐标图和雷达图)中的表现一致。

4.2 K-menas聚类主成分图

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

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

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

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

  • 图的两个轴分别代表两个主成分(Dim1和Dim2),这两个主成分解释了数据的大部分变异。Dim1解释了74%的变异,而Dim2解释了24.8%的变异,这意味着大部分信息可以通过这两个维度来表示

  • 每个聚类内部的数据点分布较为紧密,表明同一聚类内的数据点相似度较高。

  • 每个聚类的中心(通常用较大的点或星号表示)位于聚类区域的中心位置,这有助于理解每个聚类的特征。

4.3 热图

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

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

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

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

  • 图表的上半部分显示了特征之间的聚类关系(层次聚类树状图),而下半部分的热图展示了特征值的大小,颜色从蓝色(低值)到红色(高值)变化。

  • 右侧的颜色条显示了不同物种的分类,其中Setosa(红色)、Versicolor(绿色)、Virginica(蓝色)在热图中以不同的颜色块表示,这有助于直观地看出不同物种在各个特征上的分布差异。

  • 通过观察热图,可以看到不同特征(如Sepal.Length、Petal.Width、Sepal.Width、Petal.Length)之间的值分布和它们之间的关系。例如,Petal.Length和Petal.Width的值在不同物种中有明显的区别。