聚类分析,简单的说,就是对数据分群,它以相似性为基础,相同类中的样本比不同类中的本更具相似性。在商业应用中,聚类通常用来划分用户群,然后分别加以研究。另外,它还可以挖掘数据中潜在的模式,基于此改进业务流程或设计新产品等。常见的聚类算法有k- Means算法、系统聚类算法,下面将依次介绍。

目录

1. K-Means算法

(1)用于衡量好的标准

(2)K- Means实现的基本步骤

2. 代码实现

(1)R语言

(2)Python实现


1. K-Means算法

K- Means算法是一种基于划分的经典聚类算法,对于给定的含有N条记录的数据集,算法将把数据集分成k组(k<N),使得每一分组至少包含一条数据记录,每条记录属于且仅属于一个分组。算法首先会給出一个随机初始的分组,再通过反复迭代改变分组,使每一次改进的分组比上一次好。

(1)用于衡量好的标准

同一分组中的记录越近越好,而不同分组中的记录越远越好,通常使用欧氏距离作为相异性度量。

(2)K- Means实现的基本步骤

  • ① 从数据中随机抽取K个点作为初始聚类的K个中心,分别代表K个聚类
  • ② 计算数据中所有的点到这K个中心点的距离,通常是欧氏距离
  • ③ 将每个点归属到离其最近的聚类里,生成K个聚类
  • ④ 重新计算每类的中心点,即计算每类中所有点的几何中心(即平均值)
  • ⑤ 如果满足终止条件,算法将结束;否则,进入第②步。

    终止条件通常有如下三种:

  • ① 聚类的中心点不再移动
  • ② 聚类的中心点移动的大小在给定的阀值范围内
  • ③ 迭次次数达到上限

2. 代码实现

(1)R语言

R语言中,使用kmeans()函数来实现聚类,其定义及参数定义如下:

使用K-Means算法对AirPassagers的年度标准曲线进行聚类,旨在发现乘客数据的年度变化模式,代码如下:

#重构数据
ap.data<-t(mapply(function(i){AirPassengers[(12*(i-1)+1):(i*12)]},1:12))  # t()转置
# mapply、apply之后原始数据的行列会互换,因此需要将其t转置回来#标准化曲线
ap.data.std<-t(apply(ap.data,1,function(x){(x-min(x))/(max(x)-min(x))}))
#使用kmeans函数进行聚类,假定分成两类
kOut<-kmeans(ap.data.std,centers=2,nstart=20,iter.max=200)
#聚类统计情况如下
table(kOut$cluster)
# 1 2  分类1有8个,分类2有4个
# 8 4
# kOut$cluster   2 2 2 1 2 1 1 1 1 1 1 1#设置类标签
ap.data.std<-cbind(ap.data.std,kOut$cluster)
#画出曲线图
plot(1:12,1:12,col='white',ylim=c(0,1),xlab="年份",ylab="标准化值")
for(i in 1:nrow(ap.data.std))
{lines(1:12,ap.data.std[i,1:12],col=ap.data.std[i,13]+2)
}
legend(1,1,c("类1","类2"),lty=1,col=c("blue","green "))

AirPassengers 1949-1960 12年数据
         Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1949 112 118 132 129 121 135 148 148 136 119 104 118
1950 115 126 141 135 125 149 170 170 158 133 114 140
1951 145 150 178 163 172 178 199 199 184 162 146 166
1952 171 180 193 181 183 218 230 242 209 191 172 194
1953 196 196 236 235 229 243 264 272 237 211 180 201
1954 204 188 235 227 234 264 302 293 259 229 203 229
1955 242 233 267 269 270 315 364 347 312 274 237 278
1956 284 277 317 313 318 374 413 405 355 306 271 306
1957 315 301 356 348 355 422 465 467 404 347 305 336
1958 340 318 362 348 363 435 491 505 404 359 310 337
1959 360 342 406 396 420 472 548 559 463 407 362 405
1960 417 391 419 461 472 535 622 606 508 461 390 432

效果如图所示,12条年度曲线被分成了两类,蓝色线表示类1,绿色线表示类2,可以到,各类里面曲线彼此接近,而类间的差异较大。细致观察,可以看出,乘客数量在6、7、8及10月份比较稳定,这或许与季节比较相关,具体如何还需进一步考察。

(2)Python实现

聚类算法(1):K-Means算法相关推荐

  1. kmeans改进 matlab,基于距离函数的改进k―means 算法

    摘要:聚类算法在自然科学和和社会科学中都有很普遍的应用,而K-means算法是聚类算法中经典的划分方法之一.但如果数据集内相邻的簇之间离散度相差较大,或者是属性分布区间相差较大,则算法的聚类效果十分有 ...

  2. 数据挖掘--“聚类”详解、K-means、K-平均值算法、K均值算法

    一. 什么是聚类 二. 聚类步骤 三. 聚类算法有哪些 1 层次聚类算法 2 划分聚类算法 3 基于密度的聚类算法 4 基于网格的聚类算法 5 基于模型的聚类算法 一. 什么是聚类? 物以类聚,人以群 ...

  3. k均值算法 二分k均值算法_如何获得K均值算法面试问题

    k均值算法 二分k均值算法 数据科学访谈 (Data Science Interviews) KMeans is one of the most common and important cluste ...

  4. k均值算法 二分k均值算法_使用K均值对加勒比珊瑚礁进行分类

    k均值算法 二分k均值算法 Have you ever seen a Caribbean reef? Well if you haven't, prepare yourself. 您见过加勒比礁吗? ...

  5. KNN算法(K临近算法)及使用KNN算法实现手写数字0-9识别

    首先感谢博主倔强的小彬雅,本文使用的素材及部分代码来源其博文机器学习入门-用KNN实现手写数字图片识别(包含自己图片转化),需要下载素材的可以到其博文最后进行下载. 关于KNN算法 knn算法也叫K临 ...

  6. k means算法C语言伪代码,K均值算法(K-Means)

    1. K-Means算法步骤 算法步骤 收敛性定义,畸变函数(distortion function): 伪代码: 1) 创建k个点作为K个簇的起始质心(经常随机选择) 2) 当任意一个点的蔟分配结果 ...

  7. 5 模式识别-动态聚类算法(K均值算法、迭代自组织的数据分析ISOData算法)

    武汉理工大学资源 郭志强 动态聚类算法:先选取初始的中心(每个类别的初始中心),然后把所有的样本进行聚类分析,聚类完成后,就去判断这个聚类结果合不合理(满不满足设计指标要求),如果合理就输出聚类结果( ...

  8. 机器学习算法总结--K均值算法

    参考自: <机器学习> 机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) K-Means Clustering 斯坦福大学公开课 :机器学习课程 简介 K-均值是 ...

  9. KNN算法(K最近邻算法)详解

    K 最近邻的核心数学知识是距离的计算和权重的计算.我们把需要预测的点作为中心点,然后计算其周围一定半径内的已知点距其的距离,挑选前 k 个点,进行投票,这 k 个点中,哪个类别的点多,该预测点就被判定 ...

  10. 机器学习算法基础——k近邻算法

    23.k-近邻算法以及案例预测入住位置 24.K-近邻算法案例 分类算法-k近邻算法(KNN) 定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本 ...

最新文章

  1. iOS中构造函数与析构函数
  2. 5.IA-32寄存器
  3. ExtJS4.x 开发环境搭建
  4. java spring 集成定时器
  5. WordPress更新时提示无法连接到FTP服务器的解决方案
  6. django 创建mysql失败_创建表时出现Django MySQL错误
  7. 计算机与广播电视论文,浅谈广播电视中计算机技术的作用论文.pdf
  8. java光标位置无效_ResultSet.getString(1)引发java.sql.SQLException:当前光标位置的无效操作...
  9. 7-5-无向图生成树-图-第7章-《数据结构》课本源码-严蔚敏吴伟民版
  10. Git 修改commit 相关操作
  11. 在线问诊、找科室、找医生、查疾病、图文问诊、电话急诊、健康咨询、问诊平台、咨询平台、问诊服务、语音问诊、开药问诊、看病平台、在线医疗、健康平台、登录注册、信息架构图、全局说明、组件规范、需求清单、
  12. 2.Linux 高性能服务器编程 --- IP 协议详解
  13. mid、mif文件转shapefile、geojson等格式的数据
  14. 什么是数据库防火墙 数据库防火墙作用是什么
  15. 网吧带宽很大,为什么三层更新下载游戏很慢?
  16. 建行手机银行4.0版本转账怎么不要求输入支付密码?
  17. AutoMapper源码解析
  18. 背景动态变化登陆界面
  19. mysql把用户权限授予新用户_如何创建新用户和授予MySQL中的权限
  20. 金融行业云都有什么需求

热门文章

  1. Spring 的@Bean 的用法
  2. 《Spring Cloud Netflix官方文档》2. 服务发现:Eureka服务器
  3. Java 洛谷 P1200 [USACO1.1]你的飞碟在这儿 Your Ride Is Here
  4. vue后端框架mysql_springboot + vue 前后端结合·数据库查询
  5. Equinix 位于伦敦的LD8数据中心发生严重故障
  6. 机房布线的最高境界......
  7. 广东移动数据中心攻关“液/气双通道散热技术”
  8. 数据中心节能专题—他山之石可以攻玉
  9. “数据中心迁移到IDC数据中心”最怕遇到这几个问题
  10. 成功解决PermissionError: [WinError 5] 拒绝访问 \lib\\site-packages\\h5py\\_errors.cp38-win_amd64.pyd‘