DBSCAN聚类算法实用案例

1、DBSCAN算法介绍

下图中,左边的图形可以使用K-Means算法进行聚类,右边两个有交叉部分【噪音】,故需要使用密度聚类(DBSCAN)算法
在这里插入图片描述
K-Means和层次聚类算法,是基于对象之间的距离进行聚类,这样的方法只能发现球状的簇,【密度聚类】只要临近区域的密度,对象或数据点的数目超过某个阈值就继续聚类,也就是说它会继续搜索自己附近的点或者簇,将符合阈值的合并在一起,这样【密度聚类方法】就可以用于过滤噪声,孤立点数据,发现任意形状的簇。
在这里插入图片描述

  • 密度
  • 邻域
  • 核心点
  • 边界点
  • 噪声点

4、DBSCAN 的参数选择

  • eps 设置得非常小,则意味着没有点是核心样本,可能会导致所有点被标记为噪声
  • eps 设置得非常大,可能会导致所有点形成单个簇。
  • 虽然不需要显示设置簇的个数,但设置 eps 可以隐式地控制找到 eps 的个数。
  • 使用 StandarScaler 或 MinMaxScaler 对数据进行缩放,有时更容易找到 eps 的较好取值。因为使用缩放技术将确保所有特征具有相似的范围。
    在这里插入图片描述
属于簇的点是实心,噪声点则显示为空心,核心样本点显示为较大的标记,而边界点则显示为较小的标记.png
from sklearn.cluster import DBSCAN
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
import mglearn

X,y=make_blobs(random_state=0,n_samples=12)
dbscan=DBSCAN()
clusters=dbscan.fit_predict(X)
# 都被标记为噪声
print('Cluster memberships:\n{}'.format(clusters))
mglearn.plots.plot_dbscan()

plt.show()

5、Scikit-learn中的DBSCAN的使用

def __init__(self, eps=0.5, min_samples=5, metric='euclidean',
                 metric_params=None, algorithm='auto', leaf_size=30, p=None,
                 n_jobs=1):

核心参数:

  • eps: float,ϵ-邻域的距离阈值
  • min_samples :int,样本点要成为核心对象所需要的 ϵ-邻域的样本数阈值

属性:

  • core_sample_indices_ : 核心点的索引,因为labels_不能区分核心点还是边界点,所以需要用这个索引确定核心点
  • components_:训练样本的核心点
  • labels_:每个点所属集群的标签,-1代表噪声点

参考链接:
[1] DBSCAN 算法 2019.1

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值