dbscan算法思路以及sklearn的DBSCAN聚类方法应用
发布日期:2021-05-28 17:02:24 浏览次数:8 分类:技术文章

本文共 976 字,大约阅读时间需要 3 分钟。

dbscan算法思路以及sklearn的DBSCAN聚类方法应用

前言: 对于前面博文中的k-means聚类方法,它有一个很大的缺陷,就是它对于简单成团的数据样本聚类效果较好,但是对于复杂的样本数据分布就搞不定了,比如环形分布的样本数据,或者其它复杂分布的样本数据如下图

在这里插入图片描述

那么DBSCAN能够很好解决k-means算法的这个缺陷,它将具有足够高密度的区域划分为簇,并可以发现任何形状的聚类。

一、DBSCAN聚类算法基本概念和思路

1、基本概念

在这里插入图片描述

如下图,若MinPoints=3,则点P就是一个核心对象,点P和点M就是直接密度可达,点P和点Q就是密度可达,点S和点R就是密度相连
在这里插入图片描述

2、算法思路

在这里插入图片描述

二、在sklearn中利用DBSCAN算法实现聚类

1、示例代码

import numpy as npimport matplotlib.pyplot as pltfrom sklearn.cluster import DBSCANfrom sklearn.cluster import KMeansfrom sklearn import datasets# 生成数据x1, y1 = datasets.make_circles(n_samples=2000, factor=0.5, noise=0.05)x2, y2 = datasets.make_blobs(n_samples=1000, centers=[[1.2, 1.2]], cluster_std=[[0.1]])x = np.concatenate((x1, x2))# k-means方法聚类model = KMeans(n_clusters=3)model.fit(x)result = model.predict(x)plt.scatter(x[:, 0], x[:, 1], c=result)# DBSCAN方法聚类model = DBSCAN(eps=0.2, min_samples=50)model.fit(x)result = model.fit_predict(x)plt.figure()plt.scatter(x[:, 0], x[:, 1], c=result)plt.show()

2、执行结果

在这里插入图片描述

对于这种分布的样本数据,可见DBSCAN聚类结果才是我们想要的。

转载地址:https://blog.csdn.net/qq_34720818/article/details/105905929 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:CFD基础学习
下一篇:sklearn实现k-means聚类算法

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年02月02日 20时42分24秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章