gama包基本介绍
gama包是一种分类包,它是一种执行硬分区聚类的进化方法。该算法使用由关于各个分区的质量的信息引导的遗传算子。该方法寻找最佳的重中心/质心配置(编码为实际值)以最大化或最小化给定的聚类验证标准之一:Silhou-ette,Dunn Index,C-Index或Calinski-Harabasz Index。与许多其他聚类算法一样,'gama'要求k:固定先验确定的分区数。如果用户不知道k的最佳值,则算法通过使用两个用户指定的选项之一来估计它:最小值或宽度。第一种方法使用一组点的二阶导数的近似来自动检测群内平方和误差(WCSSE)图中的最大曲率。第二种方法通过24个指数的多数表决来估计最佳k值。 'gama'的主要优点之一是引入偏差来检测参与特定标准的分区。
参考文献:Scrucca,L。(2013)<doi:10.18637 / jss.v053.i04>; CHARRAD,Malika et al(2014)<doi:10.18637 / jss.v061.i06>; Tsagris M,Papadakis M.(2018)<doi:10.7287 / peerj.preprints.26605v1>; Kaufman,L.,&Rousseeuw,P。(1990,ISBN:0-47 1-73578-7)。
案例展示
导入包和查看数据
library(gama)
data(flame)
GGally::ggpairs(iris)
结果如下
data_show.jpg
通过上图可知,该数据可以被分为4类
进行分类
par(mfrow = c(1,2))
gama.obj <- gama(flame, k = 4, plot.internals = TRUE, generations =200)
#当数据量较少的时候迭代次数generations至少是100次,数量较多的时候是500次
如果不清楚分类数量,可以通过broad参数来进行自动确定
gama.obj1 <- gama(flame, k = "broad", plot.internals = FALSE, generations = 100)
通过上述代码可以绘制出来判断分类好坏的指标以及循环过程中的变化
class_cretiea.jpg
分类结果可视化化
par(mfrow = c(1,1))

最低分类确定
gama.how.many.k(dataset = flame, method = "minimal")
结果为2,即表示该数据集至少被分为两类
minum_class.jpg
重复上述分类代码,将k改为2,结果如下
k2.jpg
更多需求,请查看个人介绍