R语言使用K均值方法处理数据

来源:互联网 发布:网站美工设计教程 编辑:程序博客网 时间:2024/05/22 11:49

说明

K(均值)聚类属于扁平聚类算法,即进行一层划分得到k簇,与层次聚类算法开始不需要决定簇数不同,K均值算法需要用户事先确定好簇个数,因为构建一棵聚类树是非常耗时的事,所以K均值聚类算法的效率要优于层次聚类。

操作

set.seed(22)> fit = kmeans(customer,4)> fitK-means clustering with 4 clusters of sizes 8, 11, 16, 25Cluster means:  Visit.Time Average.Expense        Sex        Age1  1.3302016       1.0155226 -1.4566845  0.55913072 -0.7771737      -0.5178412 -1.4566845 -0.47745993  0.8571173       0.9887331  0.6750489  1.05050154 -0.6322632      -0.7299063  0.6750489 -0.6411604Clustering vector: [1] 2 2 1 2 1 2 1 1 2 2 2 1 1 2 2 2 1 2 1 3 4 3 4 3 3 4 4 3 4 4 4 3 3 3 4 4 3 4 4 4 4 4 4 4 3 3 4 4 4 3 4 3 3 4 4 4 3 4 4 3Within cluster sum of squares by cluster:[1]  5.90040 11.97454 22.58236 20.89159 (between_SS / total_SS =  74.0 %)Available components:[1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss" "betweenss"    "size"         "iter"        [9] "ifault"          

调用barplot函数绘制每个中心的条形图

barplot(t(fit$centers),beside = TRUE,xlab = "cluster",ylab = "value")

四个簇不同属性
四个簇不同属性
可以绘制簇的散点图,不同簇的观测点使用不同的颜色

plot(customer,col = fit$cluster)

根据簇标签区分簇散点图
根据簇标签区分簇散点图

原理

k均值聚类属于分裂聚类,算法目标是通过将n个对象划分到K个簇中,使得同一个簇中的对象之间的距离最近,算法的目的是使组合平方合(within cluster sum of square,WCSS)最小。假定x是一组给定观测点,s = {s1,s2,s3,…,sk}代表k个划分,ui是si的中心。
k均值聚类过程可以分成以下5个步骤:
1.指定聚类个数k
2.随机产生k个划分
3.计算每个划分的中心
4.将观测点分配到距离簇中心最近的一个簇中。
5.重复2,3,4,直到WDSS基本不发生变化(或者最小化)
在样例中确定了簇个数为 k = 4,通过观测训练好的模型可以得到每个簇的大小,4个簇的聚类中心,簇中每个观测点的向量以及每个簇组内平方和等信息。
我们还使用条形图展示簇的信息,使得我们能够更好地理解属性是如何影响簇划分的,最后我们能根据聚类标签使用带彩色的类标签的散点图来展示数据点。

原创粉丝点击