初识聚类算法:K均值、凝聚层次聚类和DBSCAN

原文地址http://blog.sina.com.cn/s/blog_62186b460101ard2.html

这里只是将比较重要的部分转一下

另外还有一篇关于层次聚类的 http://blog.csdn.net/jwh_bupt/article/details/7685809

聚类分析就仅根据在数据中发现的描述对象及其关系的信息,将数据对象分组(簇)。其目标是,组内的对象相互之间是相似的,而不同组中的对象是不同的。组内相似性越大,组间差别越大,聚类就越好。

先介绍下聚类的不同类型,通常有以下几种:

(1)层次的与划分的:如果允许簇具有子簇,则我们得到一个层次聚类。层次聚类是嵌套簇的集族,组织成一棵树。划分聚类简单地将数据对象划分成不重叠的子集(簇),使得每个数据对象恰在一个子集中。

(2)互斥的、重叠的与模糊的:互斥的指每个对象都指派到单个簇。重叠的或是模糊聚类用来反映一个对象同时属于多个组的事实。在模糊聚类中,每个数据对象以一个0和1之间的隶属权值属于每个簇。每个对象与各个簇的隶属权值之和往往是1。

(3)完全的与部分的:完全聚类将每个对象指派到一个簇中。部分聚类中,某些对象可能不属于任何组,比如一些噪音对象。

...

基本K均值

根据该算法,实现如下代码:

https://github.com/intergret/snippet/blob/master/Kmeans.py

或是 http://www.oschina.net/code/snippet_176897_14731

凝聚层次聚类

根据该算法,实现如下代码。开始时计算每个点对的距离,并按距离降序依次合并。另外为了防止过度合并,定义的退出条件是90%的簇被合并,即当前簇数是初始簇数的10%:

https://github.com/intergret/snippet/blob/master/HAC.py

或是 http://www.oschina.net/code/snippet_176897_14732

DBSCAN

根据该算法,实现如下代码:

https://github.com/intergret/snippet/blob/master/Dbscan.py

或是 http://www.oschina.net/code/snippet_176897_14734

初识聚类算法:K均值、凝聚层次聚类和DBSCAN

时间: 2024-10-29 19:07:46

初识聚类算法:K均值、凝聚层次聚类和DBSCAN的相关文章

聚类算法:K均值、凝聚层次聚类和DBSCAN

聚类分析就仅根据在数据中发现的描述对象及其关系的信息,将数据对象分组(簇).其目标是,组内的对象相互之间是相似的,而不同组中的对象是不同的.组内相似性越大,组间差别越大,聚类就越好. 先介绍下聚类的不同类型,通常有以下几种: (1)层次的与划分的:如果允许簇具有子簇,则我们得到一个层次聚类.层次聚类是嵌套簇的集族,组织成一棵树.划分聚类简单地将数据对象划分成不重叠的子集(簇),使得每个数据对象恰在一个子集中. (2)互斥的.重叠的与模糊的:互斥的指每个对象都指派到单个簇.重叠的或是模糊聚类用来反

机器学习(6)之聚类算法(k-means\Canopy\层次聚类\谱聚类)

目录 1 聚类的定义 1.1 距离公式(相似度) 1.2 聚类的思想 2 K-means算法 2.1 K-means算法的思考 2.2 总结 3 二分K-Means算法 4 K-Means++算法 4.1 K-Means||算法 5 Canopy算法 5.1 应用场景 6 Mini Batch K-Means算法 7 层次聚类方法 7.1 AGNES算法中簇间距离 7.2 层次聚类优化算法 8 密度聚类 8.1 DBSCAN算法 8.1.1 基本概念 8.1.2 算法流程 8.1.3 DBSCA

聚类算法:K均值

在数据挖掘中,K-Means算法是一种cluster analysis的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法. 基本K均值:选择K个初始质心,其中K是用户指定的参数,即所期望的簇的个数.每次循环中,每个点被指派到最近的质心,指派到同一个质心的点集构成一个簇.然后,根据指派到簇的点,更新每个簇的质心.重复指派和更新操作,直到质心不发生明显的变化. 为了定义二维空间的数据点之间的"最近"概念,我们使用欧几里得距离的平方,即点A(x1,y1)与点B(x2

聚类算法:凝聚层次聚类

凝聚层次聚类: 所谓凝聚的,指的是该算法初始时,将每个点作为一个簇,每一步合并两个最接近的簇.另外即使到最后,对于噪音点或是离群点也往往还是各占一簇的,除非过度合并.对于这里的"最接近",有下面三种定义.我在实现是使用了MIN,该方法在合并时,只要依次取当前最近的点对,如果这个点对当前不在一个簇中,将所在的两个簇合并就行: (1)单链(MIN):定义簇的邻近度为不同两个簇的两个最近的点之间的距离. (2)全链(MAX):定义簇的邻近度为不同两个簇的两个最远的点之间的距离. (3)组平均

机器学习经典算法详解及Python实现--聚类及K均值、二分K-均值聚类算法

摘要 聚类是一种无监督的学习(无监督学习不依赖预先定义的类或带类标记的训练实例),它将相似的对象归到同一个簇中,它是观察式学习,而非示例式的学习,有点像全自动分类.说白了,聚类(clustering)是完全可以按字面意思来理解的--将相同.相似.相近.相关的对象实例聚成一类的过程.机器学习中常见的聚类算法包括 k-Means算法.期望最大化算法(Expectation Maximization,EM,参考"EM算法原理").谱聚类算法(参考机器学习算法复习-谱聚类)以及人工神经网络算法

【ML-7】聚类算法--K-means和k-mediods/密度聚类/层次聚类

目录 简述 K-means聚类 密度聚类 层次聚类 一.简述 聚类算法是常见的无监督学习(无监督学习是在样本的标签未知的情况下,根据样本的内在规律对样本进行分类). 在监督学习中我们常根据模型的误差来衡量模型的好坏,通过优化损失函数来改善模型.而在聚类算法中是怎么来度量模型的好坏呢?聚类算法模型的性能度量大致有两类: 1)将模型结果与某个参考模型(或者称为外部指标)进行对比,个人觉得认为这种方法用的比较少 2)另一种是直接使用模型的内部属性,比如样本之间的距离(闵可夫斯基距离)来作为评判指标,这

05_无监督学习--聚类模型--K 均值

无监督学习--聚类模型--K 均值0.引入依赖1.数据的加载和预处理2.算法实现3.测试 无监督学习--聚类模型--K 均值 0.引入依赖 import numpy as npimport matplotlib.pyplot as plt # 这里直接 sklearn 里的数据集from sklearn.datasets.samples_generator import make_blobs 1.数据的加载和预处理 x, y = make_blobs(n_samples=100, centers

聚类之K均值聚类和EM算法

这篇博客整理K均值聚类的内容,包括: 1.K均值聚类的原理: 2.初始类中心的选择和类别数K的确定: 3.K均值聚类和EM算法.高斯混合模型的关系. 一.K均值聚类的原理 K均值聚类(K-means)是一种基于中心的聚类算法,通过迭代,将样本分到K个类中,使得每个样本与其所属类的中心或均值的距离之和最小. 1.定义损失函数 假设我们有一个数据集{x1, x2,..., xN},每个样本的特征维度是m维,我们的目标是将数据集划分为K个类别.假定K的值已经给定,那么第k个类别的中心定义为μk,k=1

聚类算法:K-means 算法(k均值算法)

k-means算法:      第一步:选$K$个初始聚类中心,$z_1(1),z_2(1),\cdots,z_k(1)$,其中括号内的序号为寻找聚类中心的迭代运算的次序号. 聚类中心的向量值可任意设定,例如可选开始的$K$个模式样本的向量值作为初始聚类中心.      第二步:逐个将需分类的模式样本$\{x\}$按最小距离准则分配给$K$个聚类中心中的某一个$z_j(1)$.假设$i=j$时, \[D_j (k) = \min \{ \left\| {x - z_i (k)} \right\|