首页 > 编程语言 >聚类算法

聚类算法

时间:2024-02-27 23:24:05浏览次数:44  
标签:对象 距离 算法 参数 密度 聚类

这个算法是无监督算法,没有标签。

K-MEANS算法

基本概念

  1. 要得到蔟的个数,需要指定K值
  2. 质心:均值,向量各维度取平均值
  3. 距离的度量:常用欧几里得距离和余弦相似度(先标准化)
  4. 优化目标如下,

\[\min \sum_{i=1}^{K} \sum_{x \in C_{i}} \operatorname{dist}\left(c_{i}, x\right)^{2} \]

算法流程

对a图中如果是要分成两个蔟,随机选择两个点如图b,以每个点选择距离自己最近为标准进行聚类得到c,计算两个蔟的质心为图d,继续以上操作得到图e、f,一直迭代,直到质心不再变化。

优缺点

优势,简单、快速、适合常规数据集

劣势,K值难确定、复杂度与样本呈线性关系、很难发现任意形状的簇,初始值对结果影响非常大,建议随机做多次取平均。

DBSCAN聚类算法

基本概念(Density-Based Spatial Clustering of Applications with Noise)

  1. 核心对象:若某个点的密度达到算法设定的阈值则其为核心点。(即r邻域内点的数量不小于minPts)
  2. 邻域内的距离阈值:设定的半径r
  3. 直接密度可达:若某点p在点q的r邻域内,且q是核心点则p-q直接密度可达。
  4. 密度可达:若有一个点的序列\(q_{0}\)、\(q_{1}\)、...\(q_{k}\),对任意\(q_{i}-q_{i-1}\)是直接密度可达的,则称从\(q_{0}\)到\(q_{k}\)密度可达,这实际上是直接密度可达的“传播“。
  5. 密度相连:若从某核心点p出发,点q和点k都是密度可达的,则称点q和点k是密度相连的。
  6. 边界点:属于某一个类的非核心点,不能发展下线了。
  7. 噪声点:不属于任何一个类蔟的点,从任何一个核心点出发都是密度可达的。

A为核心对象;B、C为边界点;N为离群点。

其实还可以通过找离群点,做异常检测任务。

算法流程

以下参数D:输入数据集;参数r:指定半径;MinPts:密度阈值。

标记所有对象为unvisited;
Do
随机选择一个unvisited对象p;
标记p为visited;
If p的r领域内至少有MinPts个对象
  创建一个新簇C,并把p添加到C;
  令N为p的r领域中的对象集合
  For N中每个点p
    If p是unvisited;
      标记p为visited;
      If p的r领域至少有MinPts个对象,把这些对象添加到N;
      If p还不是任何簇的成员,把p添加到C;
  End For;
  输出C;
Else 标记p为噪声;
Until没有标记为unvisited的对象;

参数选择

半径r:可以根据K距离来设定,找突变点K距离,给定数据集P={p(i);i=0,1,...n},计算点p(i)到集合D的子集S中所有点之间的距离,距离按照从小到大的顺序排序,d(k)就被称为k-距离。

MinPts:k-距离中k的值,一般取的小一些,多次尝试。

优缺点

优点:不需要指定簇的个数、可以发现任意形状的簇、擅长找到离群点(检测任务)、两个参数就够了,没有额外的参数。

缺点:高维数据有些困难(可以做降维)、参数难以选择(参数对结果的影响非常大)、SKLearn库上的效率很慢(数据削减策略)

标签:对象,距离,算法,参数,密度,聚类
From: https://www.cnblogs.com/CallMeRoot/p/18038687

相关文章

  • day43 动态规划part5 代码随想录算法训练营 474. 一和零 【粗略理解】
    题目:474.一和零我的感悟:有点难想,加油、111本题没敲,有机会敲一遍理解难点:两个维度的背包听课笔记:代码示例:classSolution:deffindMaxForm(self,strs:List[str],m:int,n:int)->int:dp=[[0]*(n+1)for_inrange(m+1)]#创建二维动......
  • day43 动态规划part5 代码随想录算法训练营 494. 目标和
    题目:494.目标和我的感悟:加油!理解难点:dp的几种方法的应用记住dp[j]+=dp[j-nums[i]]听课笔记:代码示例:classSolution:deffindTargetSumWays(self,nums:List[int],target:int)->int:total_sum=sum(nums)ifabs(target)>total_sum:......
  • 2024牛客寒假算法基础集训营5 题解 ( A,C,G,H,I,L,M )
    2024牛客寒假算法基础集训营5题解(A,C,G,H,I,L,M)A mutsumi的质数合数题意有一个由\(n\)个正整数组成的数组,她想知道数组中质数和合数共有几个。思路由质数和合数的定义可知,正整数范围内除\(1\)外,要么是质数要么是合数,本题直接统计不是\(1\)的正整数的个数即可代码......
  • day43 动态规划part5 代码随想录算法训练营 1049. 最后一块石头的重量 II
    题目:1049.最后一块石头的重量II我的感悟:复习了昨天的模板是不一样,今天这个我推出来了。哈哈 理解难点:按照昨天的思路,dp[target]里面是能凑出来的最大值。a是另外能凑出来的和。diff是两者的差。听课笔记:我自己先写出的代码:classSolution:deflastStoneW......
  • 代码随想录算法训练营第三十天|回溯法总结
    回溯法总结回溯算法能解决如下问题:组合问题:N个数里面按一定规则找出k个数的集合排列问题:N个数按一定规则全排列,有几种排列方式切割问题:一个字符串按一定规则有几种切割方式子集问题:一个N个数的集合里有多少符合条件的子集棋盘问题:N皇后,解数独等等代码随想录(programmerc......
  • m基于深度学习的QPSK调制解调系统相位检测和补偿算法matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:  2.算法涉及理论知识概要         在数字通信中,正交相移键控(QPSK)是一种高效的调制方法,它能够在有限的带宽内传输更多的信息。然而,在实际通信过程中,由于信道噪声、多径效应等因素,接收到的QPSK信号可能会出现相位偏移,导......
  • 复习回顾-动态规划算法-416. 分割等和子集
    注意点&感悟:其实也没啥,不行就背呗~~题目链接:416.分割等和子集自己独立写的代码:classSolution:defcanPartition(self,nums:List[int])->bool:target=sum(nums)iftarget%2==1:#说明是奇数returnFalsetarget=......
  • 基础字符串算法
    1哈希1.1概念哈希就是构造一个数字使之唯一的代表一个字符串。我们来考虑一下二进制数的转化:$(1001)2=1\times23+0\times22+0\times2^1+1=(9)$现在,我们令$'a'=1,'b'=2,'c'=3\cdots,'z'=26$。然后将进制$p$设为$131$。就能得到:$(abc)p=1\timesp^2+2\timesp+3=(22483......
  • 随机化算法
    1随机化算法简介随机化算法,是一种十分玄学的做法。百度百科对其的定义是:随机化算法(randomizedalgorithm),是这样一种算法,在算法中使用了随机函数,且随机函数的返回值直接或者间接的影响了算法的执行流程或执行结果。就是将算法的某一步或某几步置于运气的控制之下,即该算法在运......
  • 算法入门:数据结构
    文章目录1.什么是算法和数据结构2.算法2.1.算法的特性2.2.算法设计的要求3.数据结构3.1.数组3.1.1.数组的定义3.1.2.数组的基本特性3.1.3.多维数组3.1.4.数组的同质性3.1.5.动态数组3.1.6.数组的优缺点3.1.7.数组的应用场景3.1.8.结论3.2.链表3.2.1.链表的定义......