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

HDBSCAN聚类后如何单独绘制单个聚类及匹配pandas数据框列

仅绘制单个聚类的实现方案

首先补全原有代码缺失的依赖导入(现有代码漏了seaborn和matplotlib的导入):

import seaborn as sns
import matplotlib.pyplot as plt

之后通过布尔索引筛选目标聚类的样本即可,修改后的完整代码示例如下(以绘制聚类ID为1的簇为例):

import hdbscan
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs

# 生成测试数据
blobs, labels = make_blobs(n_samples=2000, n_features=10)

# 聚类训练
clusterer = hdbscan.HDBSCAN(min_cluster_size=15).fit(blobs)

# 定义你要绘制的目标聚类ID,总共有3个聚类,可选值为0、1、2
target_cluster = 1
# 生成布尔掩码,筛选属于目标聚类的样本
mask = clusterer.labels_ == target_cluster

# 仅提取目标聚类的样本、颜色、概率数据
target_blobs = blobs[mask]
target_probs = clusterer.probabilities_[mask]
color_palette = sns.color_palette('deep', 8)
target_color = color_palette[target_cluster]
target_colors = [sns.desaturate(target_color, p) for p in target_probs]

# 绘图
plt.scatter(target_blobs[:, 2], target_blobs[:, 5], s=50, linewidth=0, c=target_colors, alpha=0.25)
plt.show()

注意:标签为-1的是HDBSCAN识别的噪声点,不属于你提到的3个有效聚类,筛选目标聚类时不需要包含该值。如果需要保留其他聚类/噪声点作为灰色背景,不需要做样本过滤,仅把非目标聚类的颜色统一设置为灰色即可。


聚类点关联pandas数据框的方法

首先明确:HDBSCAN输出的聚类标签和输入数据的行(单个样本)是一一对应的,和列(特征字段)没有直接的匹配关系,匹配逻辑如下:

  1. 如果你是要把聚类结果追加到原始pandas数据框,直接把标签作为新列写入即可:
# 假设你的原始数据框为df,行数和聚类输入的blobs一致
df = pd.DataFrame(blobs, columns=[f'feature_{i}' for i in range(10)])
# 新增聚类标签列,第i行的标签对应第i个样本的聚类结果
df['cluster_label'] = clusterer.labels_
  1. 如果你要提取某个聚类对应的所有样本数据,直接按标签筛选行即可:
# 提取聚类ID为1的所有样本的全部特征字段
target_cluster_df = df[df['cluster_label'] == 1]

如果你是想问可视化时选择哪两列(特征)绘制散点图,这完全取决于你的分析需求:你现有代码里选的是第3个(索引2)和第6个(索引5)特征,对应上述示例数据框的feature_2和feature_5列,你可以按需换成其他特征列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:54:02