最好免费观看高清播放南京seo圈子
前文为JoyT的科研之旅第一周——科研工具学习及论文阅读收获-CSDN博客
DBSCAN 介绍
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,它能够识别出任意形状的簇,并有效地处理噪声点。DBSCAN 不需要事先指定聚类的数量,这是其与许多其他聚类算法(如 K-means)的一个主要区别。
DBSCAN 基本原理
-
核心点:如果一个点的 ϵ 邻域内至少有
min_samples
个点(包括点本身),则此点被认为是一个核心点。 -
边界点和噪声点:距离核心点不远(在 ϵ 范围内),但自身不满足核心点条件的点被视为边界点。不属于核心点或边界点的点被视为噪声点。
-
聚类形成:通过连接在 ϵ 范围内互相可达的核心点,形成聚类。边界点会被归入其所连接的核心点所在的聚类,而噪声点不被归入任何聚类。
代码分析
取前文代码的DBSCAN部分进行介绍:
# DBSCAN去噪
epsilon = 0.3 # DBSCAN的半径参数
min_samples = 3 # DBSCAN的最小样本数参数(MinPts)
dbscan = DBSCAN(eps=epsilon, min_samples=min_samples)
clusters = dbscan.fit_predict(np.column_stack((filtered_longitudes, filtered_latitudes)))# 去除噪声点
denoised_longitudes = filtered_longitudes[clusters != -1]
denoised_latitudes = filtered_latitudes[clusters != -1]
denoised_timestamps = filtered_timestamps[clusters != -1]
代码中的 DBSCAN 工作流程
-
参数设置(与前文呼应,加入KDC能够使得参数个数为1):
epsilon
(eps
): 定义了邻域的半径大小。在这个范围内的点被认为是邻近的。min_samples
: 定义了一个点成为核心点所需的最小邻居数目。
-
DBSCAN 实例化和拟合:
- 创建 DBSCAN 对象,使用上述参数。
- 该对象调用
fit_predict
方法对数据进行聚类,数据由经纬度构成(filtered_longitudes
,filtered_latitudes
)。
-
噪声点的处理:
fit_predict
方法返回的clusters
数组为每个点指定了一个聚类标签。噪声点被标记为-1
。- 通过检查
clusters != -1
来筛选出非噪声点,即那些属于某个聚类的点。
-
结果可视化:
- 在散点图中绘制去噪后的数据。这些点是 DBSCAN 确定为属于某个聚类的点。
结论
在代码中,DBSCAN 被用来识别和移除噪声点,只保留那些被归为某个聚类的点。这种方法特别适合于处理包含噪声和具有不规则形状簇的数据,是一种强大且灵活的聚类工具。