一、概念
基于划分的聚类方法:给定m个对象的数据集D以及要生成的簇数k,划分算法把数据对象分成k个簇,C1,C2,...,Ck,使得Ci∩Cj=空集
目标函数用来评估划分的质量,使得簇内对象相互相似,而其他簇中对象相异
二、目标函数—误差平方和
使得生成的结果簇尽量紧凑和独立
三、k-Means算法
输入:k—簇的数目;D—包含m个对象的数据集
输出:k个簇的集合
从D中随机选择k个对象作为初始簇中心
Repeat
根据离簇中心的远近,将每个对象分配到相应的簇
更新簇均值,即重新计算每个簇中对象的均值作为簇中心
Until 不再发生变化
原理解释
四、算法实现
scores% select(yw:sw) imodelimodel$totss #与整体中心的平均距离imodel$withinss #与不同类中心的距离# 绘制聚类效果图library(factoextra)fviz_cluster(imodel, data=scores, ellipse.type="convox")+ theme_minimal() # 模型评估与k值选择library(fpc)kmeans_resultskmeans_results$bestk #可得到最好的k(分类数)kmeans_results$crit #可显示出不同k取值的轮廓系数#与实际类标签相比较min(Metrics::ce(cjb$wlfk, c("理科", "文科")[imodel$cluster]), 1-Metrics::ce(cjb$wlfk, c("理科", "文科")[imodel$cluster]))