
不写算法10 分钟用 ECharts 散点图做 DBSCAN 密度聚类【免费下载链接】echartsApache ECharts is a powerful, interactive charting and data visualization library for browser项目地址: https://gitcode.com/GitHub_Trending/echa/echarts手里有一批设备指标或用户行为数据想把它们自动分成几个“自然群体”又不想手写算法数据聚类就是标准做法。配合 ECharts 的统计扩展echarts-stat 插件可以在纯前端完成聚类计算和散点图可视化整个过程只需要写配置不用碰算法实现。先看效果ECharts 散点图聚类结果长什么样数据接入后散点会按密集程度自动分成几簇每一簇一种颜色零散的点不会被硬塞进任何一组。每个簇中心可以打一个醒目的标记气泡大小还能对应成员数量配合缩放查看各簇的密度细节。仓库里的官方示例就包含“分色散点 聚类中心”两种视图的切换适合先跑一遍建立直观印象。一分钟懂密度聚类原理DBSCAN 不用预设簇数一句话概括密度聚类不是从“有几组”出发而是从“哪里点密”出发。类比夜市人群不用先数出几个团伙只要看哪里人扎堆每一处扎堆算一组落单的过路者归为“噪音”。这就是 DBSCAN基于密度的聚类算法的思路。它与 k-means 的核心区别k-means 必须先指定分几组DBSCAN 则由密度自行决定组数还能识别噪音点。密度聚类最小可运行代码dataset transform 自定义系列配置分三段dataset 声明原始数据transform 串上聚类变换并输出簇编号custom 系列负责按簇上色。// 第一段原始数据 聚类变换 dataset: [ { id: raw, source: rawData }, // 原始数据一行一个样本 { id: clustered, // 派生数据集接收聚类输出 fromDatasetId: raw, transform: { type: ecStat:clustering, config: { method: dbscan, // 切换到密度聚类不写则走默认 k-means eps: 0.5, // 邻域半径定义“两个点算近” minSamples: 5, // 稠密点所需的最少样本数 dimensions: [STE, ATA], // 只取散点图两个维度参与聚类 outputClusterIndexDimension: { name: CLUSTER_IDX } } } } ]// 第二段自定义系列按簇编号上色噪音点单独灰显 series: { type: custom, datasetId: clustered, encode: { x: STE, y: ATA, itemName: ID }, renderItem: function (params, api) { const idx api.value(CLUSTER_IDX); // 读变换输出的簇编号 const color idx 0 ? #999 : CLUSTER_COLORS[idx]; const pos api.coord([api.value(STE), api.value(ATA)]); return { type: circle, shape: { cx: pos[0], cy: pos[1], r: 10 }, style: { fill: color } }; } }不需要整页 HTML完整可运行版本见仓库示例 test/custom-shape-morphing2.html里面还演示了聚类中心的聚合与视图切换。DBSCAN 参数速查eps 与 minSamples 调大调小会怎样参数含义调大的影响调小的影响eps邻域半径即“两点要多近才算一组”簇合并、簇数变少噪音点被吸进簇里簇分裂、簇数变多孤立点更容易被判为噪音minSamples判定“稠密点”所需的最少点数噪音点增多只保留最密集的核心更多点被认作稠密簇变大但边界变模糊 调参建议先固定 minSamples 只动 eps观察簇中心和成员数是否突变再回头微调 minSamples。聚类图最常见的 4 个坑怎么排查簇没分出来、颜色全一样多半是 renderItem 里按字段名取值写错了。api.value(CLUSTER_IDX)拼错会返回 undefined所有点都落到调色板第一个颜色。transform 不生效散点还是原始分布确认调用了echarts.registerTransform(ecStat.transform.clustering)并且系列指向的是聚类输出数据集datasetId: clustered而不是原始数据。改了参数画面没变化transform 只在 option 重建时重算。交互式调参必须用新配置重新setOption原地改对象是无效的。噪音点灰点太多优先调大 eps把被误伤的点拉回簇内minSamples 是第二位的调节项。还能怎么玩聚类可视化的 3 个扩展方向加dataZoom联动缩放平移检查簇边界再挂一组按钮切换 k-means 与 DBSCAN 的结果做对比。按CLUSTER_IDX聚合成员数接一张饼图或柱状图展示各组的占比结构。把聚类维度换成经纬度并挂到 geo 坐标系上得到空间维度的聚类分布。建议先用两个维度的小样本把“dataset transform 自定义系列”这条链路跑通确认结果符合预期后再换上真实数据和更多维度调参。掌握这个模式后把 transform 换成回归、分箱等其他统计变换就能复用同一套代码做更多分析。【免费下载链接】echartsApache ECharts is a powerful, interactive charting and data visualization library for browser项目地址: https://gitcode.com/GitHub_Trending/echa/echarts创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考