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

如何基于HDBSCAN聚类代码用Plotly提取树状图?

从HDBSCAN提取树状图并使用Plotly可视化

HDBSCAN聚类器内置了可用于生成树状图的树形结构数据,你可以通过以下步骤提取并结合Plotly完成可视化:

1. 提取HDBSCAN的链接矩阵

训练完成的HDBSCAN对象包含single_linkage_tree_属性,其to_linkage_tree()方法能生成与scipy.cluster.hierarchy.linkage格式一致的链接矩阵——这正是Plotly create_dendrogram所需的核心输入。

在你的现有代码基础上添加如下代码:

# 从HDBSCAN聚类器中提取链接矩阵
linkage_matrix = clusterer.single_linkage_tree_.to_linkage_tree()

2. 使用Plotly生成标准树状图

调用plotly.figure_factory.create_dendrogram,传入原始数据矩阵和提取的链接矩阵,还可结合HDBSCAN的聚类阈值自动为不同簇上色:

import plotly.figure_factory as ff

# 生成树状图
fig = ff.create_dendrogram(
    df_matrix,
    linkagefun=lambda x: linkage_matrix,  # 指定自定义链接矩阵
    color_threshold=clusterer.cluster_selection_epsilon_,  # 用HDBSCAN聚类阈值划分颜色
    labels=df.index.tolist()  # 可选:传入数据索引作为节点标签
)

# 调整图形布局(按需修改)
fig.update_layout(
    width=800,
    height=600,
    title='HDBSCAN 聚类树状图'
)

# 展示图形
fig.show()

3. 可选:可视化HDBSCAN凝聚树(更贴合算法逻辑)

如果你想直观展示HDBSCAN的簇形成过程,可以直接利用聚类器的condensed_tree_属性构建自定义树状图:

import plotly.graph_objects as go

# 获取凝聚树数据
condensed_tree = clusterer.condensed_tree_

# 提取节点和边信息
nodes = condensed_tree._select_nodes()
edges = condensed_tree._select_edges()

# 构建Plotly图形
fig = go.Figure()

# 添加树的边
for edge in edges:
    fig.add_trace(go.Scatter(
        x=[edge['child'], edge['parent']],
        y=[edge['lambda_val'], edge['lambda_val']],
        mode='lines',
        line=dict(color='#cccccc')
    ))

# 添加树的节点,用颜色区分聚类结果
fig.add_trace(go.Scatter(
    x=nodes['node_id'],
    y=nodes['lambda_val'],
    mode='markers',
    marker=dict(
        color=[clusters[int(node)] if node < len(clusters) else 'gray' for node in nodes['node_id']],
        size=8
    ),
    text=[f"Size: {size}" for size in nodes['size']],
    hoverinfo='text'
))

# 调整布局
fig.update_layout(
    title='HDBSCAN 凝聚树',
    xaxis_title='节点ID',
    yaxis_title='Lambda 值',
    height=600,
    showlegend=False
)

fig.show()

关键说明

  • color_threshold设置为clusterer.cluster_selection_epsilon_时,树状图会自动按HDBSCAN的聚类结果为分支上色
  • 若你的数据无索引,可省略labels参数
  • 凝聚树可视化能清晰展示HDBSCAN从噪声到簇的分层形成过程,适合算法逻辑分析

内容的提问来源于stack exchange,提问作者Mr.Slow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:50:22