聚类 python 代码_基于SNN密度的聚类及python代码实现

在某些情况下,依赖于相似度和密度的标准方法的聚类技术不能产生理想的聚类效果。

存在的问题

1.传统的相似度在高维数据上的问题

传统的欧几里得密度在高维空间变得没有意义。特别在文本处理之中,以分词作为特征,数据的维度将会非常得高,文本与文本之间的相似度低并不罕见。然而许多文档都有着不同类的最近邻,虽然近邻之间相似度虽然高,然而却不是同一类文档。由此可以看出,传统的相似度成为了不可靠的指导。

2.密度不同的问题

传统的基于密度的聚类问题,虽然能够有效的发现不同形状的簇,然而由于在计算密度的时候是通过计算之间的欧式距离确定密度的,若存在密度差别较大的簇将无法很好地识别。

如下图,显示了一对具有不同密度点的二维簇。右边的簇尽管不太稠密,但形成了同样合法的簇。

若使用传统的dbscan聚类算法(sklearn开源包),将获得以下聚类效果,其中黑色点表示噪声。

SNN相似度

为了解决上诉问题,提出了 共享最近邻 (Shared Nearest Neighbor, SNN)相似度。如字面意思,通过计算2个点之间共享的近邻个数,确定两点之间的相似度。

算法流程

找出所有点的k-最近邻if 两个点x和y不是在对方的k-最近邻中 then similarity(x, y) = 0else similarity(x, y) = 共享的近邻个数

SNN相似度只依赖于两个对象共享的最近邻的个数,而不是这些近邻之间相距多远。这样一来相似度关于点的密度自动进行缩放

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值