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

使用GitHub开源DBSCAN代码聚类无效,输出与输入一致求助

DBSCAN聚类无效果排查(输出与输入一致)

我使用某GitHub仓库的DBSCAN代码处理数据集时,输出结果和输入数据完全一致,没有执行任何聚类操作;更换其他数据集后问题依然存在,需要技术协助。

以下是我使用的结果打印函数代码:

void printResults(vector<Point>& points, int num_points)
{
    int i = 0;
    printf("Number of points: %u\n"
        " x     y     z     cluster_id\n"
        "-----------------------------\n"
        , num_points);
    while (i < num_points)
    {
          printf("%5.4lf %5.4lf %5.4lf: %d\n",
                 points[i].x,
                 points[i].y, points[i].z,
                 points[i].clusterID);
          ++i;    
    }
}

可能的排查方向

  • 确认核心聚类函数是否被调用:检查主程序流程,是否真的执行了DBSCAN的核心聚类逻辑(比如仓库中的dbscan函数),如果只是读取数据后直接调用printResults,自然不会有聚类结果。
  • 检查DBSCAN参数合理性:epsilon(邻域半径)和minPoints(邻域最小点数)是DBSCAN的核心参数。如果epsilon过小,或者minPoints过大,会导致所有点都被判定为噪声点,clusterID保持初始值,看起来和原始数据无区别。建议先统计数据点间的距离分布,调整参数后再测试。
  • 验证Point结构体的初始化:确认Point的clusterID字段初始值是否为未聚类状态(比如-1),如果初始值设置为0或其他默认值,而聚类逻辑未正确修改该字段,就会出现输出无变化的情况。
  • 排查数据读取正确性:确保数据集被正确加载到vector<Point>中,x、y、z数值读取无误,没有出现数据类型不匹配或读取失败的情况。
  • 调试聚类逻辑:在DBSCAN核心函数中添加调试输出,比如打印每个点的邻域点数量、聚类标记的过程,确认函数是否正常执行,有没有逻辑分支错误导致聚类未生效。

从提供的printResults函数来看,它仅负责数据打印,问题根源不在此,重点要放在聚类逻辑的执行和配置上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:57:13