R包介绍系列-适用于分类的gama包

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))
![class_result.jpg](https://upload-images.jianshu.io/upload_images/6847638-10a1452be406f856.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

最低分类确定

gama.how.many.k(dataset = flame, method = "minimal")

结果为2,即表示该数据集至少被分为两类


minum_class.jpg

重复上述分类代码,将k改为2,结果如下


k2.jpg

更多需求,请查看个人介绍

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容