DBSCAN聚类算法实用案例

目录

  • 1、DBSCAN算法介绍
  • 4、DBSCAN 的参数选择
  • 5、Scikit-learn中的DBSCAN的使用
    • 核心参数:
    • 属性:

1、DBSCAN算法介绍

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

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

4、DBSCAN 的参数选择

  • eps 设置得非常小,则意味着没有点是核心样本,可能会导致所有点被标记为噪声
  • eps 设置得非常大,可能会导致所有点形成单个簇。
  • 虽然不需要显示设置簇的个数,但设置 eps 可以隐式地控制找到 eps 的个数。
  • 使用 StandarScaler 或 MinMaxScaler 对数据进行缩放,有时更容易找到 eps 的较好取值。因为使用缩放技术将确保所有特征具有相似的范围。
    DBSCAN聚类算法实用案例_第3张图片
属于簇的点是实心,噪声点则显示为空心,核心样本点显示为较大的标记,而边界点则显示为较小的标记.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

你可能感兴趣的:(#,聚类,聚类,算法,机器学习,DBSCAN)