You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DBSCAN聚类结果异常:部分预期聚类点被识别为噪声,如何调参?

问题

我实现了一个针对简单点数组的DBSCAN聚类代码,但结果不符合预期。

代码

from pandas import DataFrame
import matplotlib.pyplot as plt
import matplotlib
from sklearn.cluster import DBSCAN

x1 = [[10.0, 1.0], [10.0, 2.0], [10.0, 10.0], [10.0, 10.0], [10.0, 23.0], [10.0, 22.0]]
x2 = [[20.0, 2.0], [20.0, 15.0], [20.0, 26.0], [20.0, 13.0], [20.0, 32.0], [20.0, 35.0]]
x3 = [[30.0, 25.0], [30.0, 28.0], [30.0, 17.0], [30.0, 16.0], [30.0, 15.0], [30.0, 38.0]]
x4 = [[40.0, 1.0], [40.0, 2.0], [40.0, 16.0], [40.0, 41.0], [40.0, 40.0], [40.0, 39.0]]
x5 = [[60.0, 1.0], [60.0, 10.0], [60.0, 12.0], [60.0, 32.0], [60.0, 33.0], [60.0, 50.0]]

df1 = DataFrame(data= x1) 
df2 = DataFrame(data= x2)
df3 = DataFrame(data= x3)
df4 = DataFrame(data= x4)
df5 = DataFrame(data= x5)

data = df5

dbscan_opt=DBSCAN(eps=1,min_samples=2)
dbscan_opt.fit(data[[0,1]])
data['DBSCAN_opt_labels']=dbscan_opt.labels_
data['DBSCAN_opt_labels'].value_counts()

# Plotting the resulting clusters
colors=['purple','red','blue','green']
plt.figure(figsize=(6,6))
plt.scatter(data[0],data[1],c=data['DBSCAN_opt_labels'],cmap=matplotlib.colors.ListedColormap(colors),s=60)
plt.title('DBSCAN Clustering',fontsize=20)
plt.xlabel('Feature 1',fontsize=14)
plt.ylabel('Feature 2',fontsize=14)
plt.show()

结果说明

运行后,红圈标注的点被识别为噪声点,但这些点我预期应该归为聚类。需要调整DBSCAN参数以正确识别这些聚类。


解决方案

问题核心是DBSCAN的eps参数设置过小,导致相邻的目标点不在邻域范围内,结合min_samples的要求被判定为噪声。具体调整方案如下:

1. 调整eps参数

观察x5数据:

  • 点[60.0,10.0]和[60.0,12.0]的欧氏距离为2,当前eps=1的阈值无法覆盖这个距离,因此无法被归为同一聚类。

把eps从1调整为2,即可将这两个点纳入同一邻域:

dbscan_opt=DBSCAN(eps=2,min_samples=2)

2. 可选:调整min_samples参数

如果希望孤立点(比如[60.0,50.0])也能被视为一个独立聚类而非噪声,可以将min_samples设置为1:

dbscan_opt=DBSCAN(eps=2,min_samples=1)

注意:min_samples=1会让所有孤立点都成为单个样本的聚类,需根据实际需求选择。

调整后的效果

  • 当设置eps=2, min_samples=2时:[60.0,10.0]和[60.0,12.0]归为同一聚类,[60.0,1.0]、[60.0,50.0]仍为噪声。
  • 当设置eps=2, min_samples=1时:所有点都会被归为聚类,其中[60.0,1.0]、[60.0,50.0]各成一类,另外两组相邻点分别成类。

内容的提问来源于stack exchange,提问作者mohsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 15:25:19