[R]聚类算法:k-means模组

延伸<[Excel]k-means聚类算法的应用,以评价现有供应商的水平为例。>文章,同时恰巧在图书馆看到一本R语言机器学习书籍,因此正好可进一步了解如何用R语言来实现k-means算法和应用,一并将k-means模组建立起来,做为未来参照使用。

利用R语言常用的iris数据集,同时在已知有三个品种的鸢尾花(setosa, versicolor, virginica),分别各有50个样品,程式码如下:

#clear
rm(list=ls())
#pull in data
kmean_iris<-iris
#erase species data
kmean_iris$Species<-NULL

#apply k-mean with k=3
clusters<-kmeans(kmean_iris,3,iter.max=100,nstart = 20)

#plot the clustered points along sepal length and width
plot(kmean_iris[c("Petal.Length","Petal.Width")], col=clusters$cluster,pch=16, cex=1)
#plot the center of group
points(clusters$centers[,c("Petal.Length","Petal.Width")],col="blue",pch=8, cex=5)

#comparsion
Realdata<-as.data.frame(table(iris$Species))
kmeanresult<-as.data.frame(table(clusters$cluster))

#输出结果
> kmeanresult
  Var1 Freq
1    1   62
2    2   50
3    3   38

由结果可知,依照k-means算法,根据花瓣(Petal)的长度和宽度的分布,若以设定三种类别来区分,分别各有62个, 50个和38个,换言之,两个品种(versicolor和virginica)花瓣的长度和宽度相似。

Reference:

R语言机器学习(实用案例分析),ISBN 978-7-111-56590-1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章