聚类主要是一种无监督学习。用来发现未标注数据的隐藏结构,主要是用来给数据分组。聚类算法一般有硬聚类(k-means,k-means++)和软聚类FCM(fuzzy c-means)。聚类眼下广泛应用于文档,音乐,电影的分组,以及基于用户的行为对用户分组等。聚类一般有例如以下分类,基于层级(hierarchical)的聚类,基于密度(density-based)的聚类还有基于原型(prototype-based)的聚类。

k-means实现思路:

1. 随机从数据集中选择k个中心点

2. 对于数据集中的每一条数据,比較与k个中心点的距离,然后把当前数据分配给近期的中心点

3. 又一次计算数据集中k个中心点

4. 反复第二步和第三步。仅仅到中心点的位置变化不变或者变化在指定的范围内或者迭代次数满足设定的目标。

比較与中心点的距离一般採用的是欧式距离,k-means可能会选择到最差的结果,须要多跑几次,并且每次跑的结果不一定同样。





k-means++ 实现思路:

1. 初始化一个空的集合M来存储k个中心点

2. 随机的从数据集中选择第一个中心点并存到M中

3. 对数据集中的每一条不在M中的数据,计算对M所产生的最小平方距离

4. 随机的选择下一个中心点。此时中心点的选择会依据一个有权重的概率分布,规则是距离中心点越远的点,选择的概率也越大。计算公式=当前中心点与M最小的距离/第三步产生的数据求和。

5. 反复2.3.4直到k中心点都选择完毕。

6. 使用k-means的方式来处理以后的过程。





另一种称之为软聚类的方法,这个主要是依据概率来推断当前数据属于那一个cluster

如对上图中有三个中心点的样例。对于一个新的样本点,使用k-means或k-means++得出的结果为[k1=0,k2=1,k3=0],使用FCM得到的结果应该是这个样子的[k1=0.1,k2=0.75,k3=0.15]。这个说明这个新的样本点属于k2的概率是最大的。

FCM实现思路:

1. 指定中心点的个数k而且随机的为每一个数据点分配中心点的概率

2. 又一次计算中心点

3. 更新每一个数据点属于中心点的依据

4. 反复2.3直到样本点属于中心点的相关系数不变或者变化在一个可控的范围内或者迭代次数到达了设定的值。

最新文章

  1. 干货来袭-整套完整安全的API接口解决方案
  2. ajax删除DB数据
  3. sys.argv
  4. 在一台机器上模拟mongodb分片
  5. JAVA环境配置-Eclipse新建项目
  6. 【JavaEE企业应用实战学习记录】struts国际化
  7. ASP.NET环境下配置FCKEditor并上传图片及其它文件
  8. 基于ARM-LINUX的温度传感器驱动-DS18B20
  9. php递归无限极分类
  10. PyQt4中无边框窗口的移动(拖动)
  11. ng-select 下拉的两种方式
  12. CSS-单位em 和 rem
  13. 强大的jQGrid的傻瓜式使用方法。以及一些注意事项,备有相应的引入文件。
  14. RestFul风格API(Swagger)--从零开始Swagger
  15. NOI 2002 贪吃的九头龙
  16. GUI_键盘事件
  17. angular学习笔记(三十一)-$location(2)
  18. CMPXCHG指令
  19. Tomcat中JVM参数设置
  20. 【NLP+Deep learning】好文

热门文章

  1. 试用php的ping命令
  2. go的接口
  3. HTML <!DOCTYPE>标签 各版本对应的标签是否有无
  4. 5.14web相关概念
  5. Eclipse 每次ctrl-c ctrl-v 就变慢?
  6. HTML+CSS(10)
  7. python--7、面向对象
  8. 努比亚 Z17s (Nubia NX595J) 解锁BootLoader 并刷入recovery ROOT
  9. 【Oracle】数据迁移工具(1):SQL Loader
  10. We wanted {"required":["value"]} and you sent ["text","value","id","sessionId"]