Kmeans聚类_R代码


首先,简单介绍下k-means聚类:效果简单有效,易于map—reduce化

算法思路:1、选择k个点作为原始的质心(k如何定)

     2、将每个点指派到最近的质心,形成k个簇

     3、重新计算每个簇的质心(x,y坐标的均值)--[新的质心不一定为样本点哦]

     4、迭代2、3步直到簇心收敛于某一个阈值

优缺点:

     1、不太受原始点选择的影响

     2、初始的簇数k到底选几呢(聪明人的方法:先用层次聚类法跑一下呗,看形成几个簇)——>不过听说sass软件对使用此方法的k值选择有很好的帮助

     3、分类的结果还是球形的比较好

     4、离群值干扰较大(记得剔除哦)

来吧,我们进入R代码实验一下哦:

prepare:

  rnorm(n,mean=0,sd=1)   ——>  生成N(0,1)的服从正态分布的数,从中随机抽取n个;

  matrix(data, nrow = , ncol = , byrow = F)  ——>  以data数据集生成 几行几列的矩阵,byrow=F默认是按列来排列数据

  rbind()    ——>  纵向合并矩阵,行增加了,列不变

  cbind()    ——>  横向合并矩阵,列增加了,行不变  —— 不过听说效率很低,上面也是哦

正式代码:

用于聚类的数据

1 library()
2 x <- rbind(matrix(rnorm(100, sd = 0.3),ncol = 2),
3                 matrix(rnorm(100,mean = 1 ,sd = 0.3) , ncol = 2) )
4 colnames(x) <- c("x","y")

使用数据集生成聚类

1 cl <- kmeans(x,2) #把数据用kmeans进行聚类,聚成两类

outcome:  

K-means clustering with 2 clusters of sizes 50, 50

Cluster means:  #每个聚类中各个列生成的最终平均值
x y
1 -0.006916551 -0.02923474
2 0.960444585 1.01887784

Clustering vector:
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[29] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2
[57] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
[85] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

Within cluster sum of squares by cluster: #每个聚类内部的距离平方和
[1] 9.319024 8.556416
(between_SS / total_SS = 74.0 %)#组间的距离平方和占了总体距离平方和的74%,也就是说各个聚类间的距离做到了最大

Available components:  #运行kmeans时函数返回的对象所包含的各个组成部分

[1] "cluster" "centers" "totss"
[4] "withinss" "tot.withinss" "betweenss"
[7] "size" "iter" "ifault"

("cluster"是一个整数向量,用于表示记录所属的聚类  
"centers"是一个矩阵,表示每聚类中各个变量的中心点
"totss"表示所生成聚类的总体距离平方和
"withinss"表示各个聚类组内的距离平方和
"tot.withinss"表示聚类组内的距离平方和总量
"betweenss"表示聚类组间的聚类平方和总量
"size"表示每个聚类组中成员的数量)

1 #承上使用cl,使用如下命令行可以独立显示聚类后的结果
2 cl$cluster   #显示所有数据所分的类
3 cl$centers  #显示每个簇的中中心心中心
时间: 2024-08-11 01:34:02

Kmeans聚类_R代码的相关文章

【Python数据挖掘课程】 三.Kmeans聚类代码实现、作业及优化

这篇文章直接给出上次关于Kmeans聚类的篮球远动员数据分析案例,同时介绍这次作业同学们完成的图例,最后介绍Matplotlib包绘图的优化知识.        前文推荐:       [Python数据挖掘课程]一.安装Python及爬虫入门介绍       [Python数据挖掘课程]二.Kmeans聚类数据分析及Anaconda介绍        希望这篇文章对你有所帮助,尤其是刚刚接触数据挖掘以及大数据的同学,同时准备尝试以案例为主的方式进行讲解.如果文章中存在不足或错误的地方,还请海涵

K-Means 聚类算法原理分析与代码实现

前言 在前面的文章中,涉及到的机器学习算法均为监督学习算法. 所谓监督学习,就是有训练过程的学习.再确切点,就是有 "分类标签集" 的学习. 现在开始,将进入到非监督学习领域.从经典的聚类问题展开讨论.所谓聚类,就是事先并不知道具体分类方案的分类 (允许知道分类个数). 本文将介绍一个最为经典的聚类算法 - K-Means 聚类算法以及它的两种实现. 现实中的聚类分析问题 - 总统大选 假设 M 国又开始全民选举总统了,目前 Mr.OBM 的投票率为48%(投票数占所有选民人数的百分比

Kmeans聚类算法原理与实现

Kmeans聚类算法 1 Kmeans聚类算法的基本原理 K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一.K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类.通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果. 假设要把样本集分为k个类别,算法描述如下: (1)适当选择k个类的初始中心,最初一般为随机选取: (2)在每次迭代中,对任意一个样本,分别求其到k个中心的欧式距离,将该样本归到距离最短的中心所在的类: (3)利用

Spark MLlib KMeans聚类算法

1.1 KMeans聚类算法 1.1.1 基础理论 KMeans算法的基本思想是初始随机给定K个簇中心,按照最邻近原则把待分类样本点分到各个簇.然后按平均法重新计算各个簇的质心,从而确定新的簇心.一直迭代,直到簇心的移动距离小于某个给定的值. K-Means聚类算法主要分为三个步骤: (1)第一步是为待聚类的点寻找聚类中心: (2)第二步是计算每个点到聚类中心的距离,将每个点聚类到离该点最近的聚类中去: (3)第三步是计算每个聚类中所有点的坐标平均值,并将这个平均值作为新的聚类中心: 反复执行(

K-Means 聚类算法

K-Means 概念定义: K-Means 是一种基于距离的排他的聚类划分方法. 上面的 K-Means 描述中包含了几个概念: 聚类(Clustering):K-Means 是一种聚类分析(Cluster Analysis)方法.聚类就是将数据对象分组成为多个类或者簇 (Cluster),使得在同一个簇中的对象之间具有较高的相似度,而不同簇中的对象差别较大. 划分(Partitioning):聚类可以基于划分,也可以基于分层.划分即将对象划分成不同的簇,而分层是将对象分等级. 排他(Exclu

SparkMLlib聚类学习之KMeans聚类

(一),KMeans聚类 k均值算法的计算过程非常直观: 1.从D中随机取k个元素,作为k个簇的各自的中心. 2.分别计算剩下的元素到k个簇中心的相异度,将这些元素分别划归到相异度最低的簇. 3.根据聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所有元素各自维度的算术平均数. 4.将D中全部元素按照新的中心重新聚类. 5.重复第4步,直到聚类结果不再变化. 6.将结果输出. (二),Spark下KMeans的应用 1,数据集下载:数据来源电影集ml-100k,解压后内容如下: 2,加载数据

k-means聚类算法python实现

K-means聚类算法 算法优缺点: 优点:容易实现缺点:可能收敛到局部最小值,在大规模数据集上收敛较慢使用数据类型:数值型数据 算法思想 k-means算法实际上就是通过计算不同样本间的距离来判断他们的相近关系的,相近的就会放到同一个类别中去. 1.首先我们需要选择一个k值,也就是我们希望把数据分成多少类,这里k值的选择对结果的影响很大,Ng的课说的选择方法有两种一种是elbow method,简单的说就是根据聚类的结果和k的函数关系判断k为多少的时候效果最好.另一种则是根据具体的需求确定,比

KMeans聚类算法思想与可视化

1.聚类分析 1.0 概念 聚类分析简称聚类(clustering),是一个把数据集划分成子集的过程,每一个子集是一个簇(cluster),使得簇中的样本彼此相似,但与其他簇中的样本不相似. 聚类分析不需要事先知道样本的类别,甚至不用知道类别个数,因此它是一种无监督的学习算法,一般用于数据探索,比如群组发现和离群点检测,还可以作为其他算法的预处理步骤. 下面的动图展示的是一个聚类过程,感受一下: 1.1 基本聚类方法 主要的聚类算法一般可以划分为以下几类: 方法 一般特点 划分方法 1.发现球形

Python实现K-means聚类算法

因为自己对python也有一定的了解,之前也用R做过一些数据分析,又恰好看到几篇文章介绍python实现算法的,觉得挺有意思,所以参考了一些书籍来自己实现一个K-means的聚类算法.<Python数据分析基础教程:NumPy学习指南(第2版)>和 < Matplotlib手册>是做数据分析的挺不错的两个入门级教材,推荐给大家. 链接:http://pan.baidu.com/s/1FSheY 密码:ulsa 数据聚类是对于静态数据分析的一门技术,在许多领域内都被广泛地应用,包括机