Python的sklearn库AgglomerativeClustering聚类算法的距离阈值精度是多少
关于sklearn中AgglomerativeClustering的distance_threshold参数精度问题
- 参数本身的存储精度
distance_threshold接收Python标准float类型(64位双精度浮点数),有效十进制精度为15~17位,可表示的最小正非零值约为2.2×10^-308。你举例的d=0.000002远大于最小可表示阈值,会被算法直接使用,不会被四舍五入为0。 - 实际有效精度的限制因素
- 输入数据精度限制:如果你的输入特征矩阵
i的特征本身只有有限位小数,那么计算得到的样本间欧氏距离精度也会匹配输入精度,此时设置过高的distance_threshold小数位不会对聚类结果产生实际影响。 - 簇合并临界距离限制:只有当
distance_threshold的数值变化超过当前场景下可合并簇的最小距离差时,聚类结果才会发生变化,否则即使参数数值被准确存储,也不会改变输出的聚类簇数,这是业务场景的数值敏感度问题,和参数存储精度无关。
- 精度验证方法
你可以直接打印初始化后的聚类对象参数,确认输入的阈值是否被准确保留:
d = 0.000002 clustering = AgglomerativeClustering(n_clusters=None, affinity='euclidean', distance_threshold=d, linkage='single') print(clustering.distance_threshold)
运行后输出为2e-06,和你设置的数值完全一致。
内容的提问来源于stack exchange,提问作者Lois
相关产品推荐
相关产品推荐

