聚类主要是一种无监督学习。用来发现未标注数据的隐藏结构,主要是用来给数据分组。聚类算法一般有硬聚类(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直到样本点属于中心点的相关系数不变或者变化在一个可控的范围内或者迭代次数到达了设定的值。

聚类k-means/k-means++/fcm学习笔记的更多相关文章

  1. 【学习笔记】K 短路问题详解

    \(k\) 短路问题简介 所谓"\(k\) 短路"问题,即给定一张 \(n\) 个点,\(m\) 条边的有向图,给定起点 \(s\) 和终点 \(t\),求出所有 \(s\to t ...

  2. 主席树学习笔记(静态区间第k大)

    题目背景 这是个非常经典的主席树入门题——静态区间第K小 数据已经过加强,请使用主席树.同时请注意常数优化 题目描述 如题,给定N个整数构成的序列,将对于指定的闭区间查询其区间内的第K小值. 输入输出 ...

  3. 机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记

    机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记 关键字:k-均值.kMeans.聚类.非监督学习作者:米仓山下时间: ...

  4. 机器学习理论与实战(十)K均值聚类和二分K均值聚类

    接下来就要说下无监督机器学习方法,所谓无监督机器学习前面也说过,就是没有标签的情况,对样本数据进行聚类分析.关联性分析等.主要包括K均值聚类(K-means clustering)和关联分析,这两大类 ...

  5. 机器学习实战5:k-means聚类:二分k均值聚类+地理位置聚簇实例

    k-均值聚类是非监督学习的一种,输入必须指定聚簇中心个数k.k均值是基于相似度的聚类,为没有标签的一簇实例分为一类. 一 经典的k-均值聚类 思路: 1 随机创建k个质心(k必须指定,二维的很容易确定 ...

  6. Python_sklearn机器学习库学习笔记(五)k-means(聚类)

    # K的选择:肘部法则 如果问题中没有指定 的值,可以通过肘部法则这一技术来估计聚类数量.肘部法则会把不同 值的成本函数值画出来.随着 值的增大,平均畸变程度会减小:每个类包含的样本数会减少,于是样本 ...

  7. ArcGIS案例学习笔记-聚类点的空间统计特征

    ArcGIS案例学习笔记-聚类点的空间统计特征 联系方式:谢老师,135-4855-4328,xiexiaokui@qq.com 目的:对于聚集点,根据分组字段case field,计算空间统计特征 ...

  8. R语言中聚类确定最佳K值之Calinsky criterion

    Calinski-Harabasz准则有时称为方差比准则 (VRC),它可以用来确定聚类的最佳K值.Calinski Harabasz 指数定义为: 其中,K是聚类数,N是样本数,SSB是组与组之间的 ...

  9. [笔记] $f(i)$ 为 $k$ 次多项式,$\sum_{i=0}^nf(i)\cdot q^i$ 的 $O(k\log k)$ 求法

    \(f(i)\) 为 \(k\) 次多项式,\(\sum_{i=0}^nf(i)\cdot q^i\) 的 \(O(k\log k)\) 求法 令 \(S(n)=\sum_{i=0}^{n-1}f(i ...

随机推荐

  1. Watchcow(欧拉回路)

    http://poj.org/problem?id=2230 题意:给出n个field及m个连接field的边,然后要求遍历每条边仅且2次,求出一条路径来. #include <stdio.h& ...

  2. 没调出来 P2023

    #include<iostream> #include<cstdio> #include<cstring> #define ll long long #define ...

  3. 修改DIV滚动条样式

    /*滚动条样式*/ div::-webkit-scrollbar { /*滚动条整体样式*/ width: 5px; /*高宽分别对应横竖滚动条的尺寸*/ height: 5px; } div::-w ...

  4. 修改CAS源码是的基于DB的认证方式配置更灵活

    最近在做CAS配置的时候,遇到了数据源不提供密码等数据的情况下,怎样实现密码输入认证呢? 第一步:新建Java项目,根据假面算法生成CAS加密工具 出于保密需要不提供自定义的加密工具,在您的实际项目中 ...

  5. Django学习案例一(blog):四. 使用Admin

    1. 创建超级用户 python manage.py createsuperuser 创建过程中输入用户名,并设定密码(记住). 后台管理汉化.修改settings.py中LANGUAGE_CODE ...

  6. py2exe打包遇到的问题

    py2exe打包python成.exe文件 打包过程和结果 1.创建setup脚本打包文件,其中设置打包的属性和方法.注意:尽量将被打包文件和此打包脚本放在同目录下(因为在尝试非同目录下时,出现了非可 ...

  7. ASP.NET刷新页面的六种方法

    第一: private void Button1_Click( object sender, System.EventArgs e )   {      Response.Redirect( Requ ...

  8. Webpack 打包学习

    前段时间项目主管让测试组长研究webpack打包方式,闲暇时自己想学习一下,留着备用,本周日学习一下. https://www.jianshu.com/p/42e11515c10f

  9. Caffe2:使用Caffe构建LSTM网络

    前言: 一般所称的LSTM网络全叫全了应该是使用LSTM单元的RNN网络. 原文:(Caffe)LSTM层分析 入门篇:理解LSTM网络 LSTM的官方简介: http://deeplearning. ...

  10. Asp.Net Core 中利用QuartzHostedService 实现 Quartz 注入依赖 (DI)

    QuartzHostedService  是一个用来在Asp.Net Core 中实现 Quartz 的任务注入依赖的nuget 包: 基本示例如下: using System; using Syst ...