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

hdbscan有效性索引报错:dtype不匹配及零尺寸数组问题求助

人脸聚类DBCV计算错误的解决方法

错误1:Buffer dtype mismatch, expected 'double_t' but got 'float'

原因

hdbscan底层Cython实现的有效性指标计算逻辑仅支持float64(double)类型输入,而你的特征向量是float32,导致类型不匹配。

解决

将特征向量转换为float64类型:

feature_vectors = feature_vectors.astype(np.float64)

错误2:ValueError: zero-size array to reduction operation maximum which has no identity

原因

DBCV计算需要为每个聚类构建内部最小生成树(MST),但你的聚类标签中存在仅包含单个样本的聚类——单个样本无法生成MST,导致代码尝试对空数组执行max()操作时抛出错误。

解决

预处理过滤掉样本数≤1的聚类,只保留有效聚类的特征和标签:

import numpy as np

# 统计每个聚类的样本数量
unique_labels, label_counts = np.unique(archive_labels, return_counts=True)
# 筛选出样本数≥2的有效聚类
valid_clusters = unique_labels[label_counts >= 2]
# 生成过滤掩码
filter_mask = np.isin(archive_labels, valid_clusters)
# 过滤特征和标签
filtered_features = feature_vectors[filter_mask].astype(np.float64)
filtered_labels = archive_labels[filter_mask]

# 重新计算DBCV分数
dbcv_score_output = hdbscan.validity.validity_index(filtered_features, filtered_labels)

额外说明

  • 转换为float64后出现的invalid value encountered in true_divide警告,本质也是单样本聚类导致的,过滤后会自动消失
  • 原始的overflow encountered in power警告是float32精度不足引发的,转成float64即可解决

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 01:12:57