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

如何获取Dtaidistance K-means模型的SSE值与轮廓系数

解决方案:基于Dtaidistance K-means结果计算SSE与轮廓系数

计算SSE(误差平方和)

利用训练后已有的簇分配结果cluster_idx和质心km0.means,直接遍历每个簇计算样本到对应质心的DTW距离平方和即可,无需重新训练:

from dtaidistance import dtw

sse = 0.0
for cluster_id, sample_indices in enumerate(cluster_idx):
    centroid = km0.means[cluster_id]
    for idx in sample_indices:
        # 获取当前样本并计算到质心的DTW距离
        dist = dtw.distance(x_red[idx], centroid)
        sse += dist ** 2

print(f"SSE值: {sse:.4f}")

计算Silhouette Score(轮廓系数)

需要先把簇分配结果转换为每个样本对应的标签数组,再结合sklearn的silhouette_score函数,传入DTW作为自定义距离度量:

from sklearn.metrics import silhouette_score
import numpy as np

# 将cluster_idx转换为全局标签数组
labels = np.zeros(len(x_red), dtype=int)
for cluster_id, sample_indices in enumerate(cluster_idx):
    labels[sample_indices] = cluster_id

# 定义适配sklearn的DTW距离函数
def dtw_metric(a, b):
    return dtw.distance(a, b)

# 计算轮廓系数
sil_score = silhouette_score(x_red, labels, metric=dtw_metric)
print(f"轮廓系数: {sil_score:.4f}")

注意事项

  • 针对大规模数据集,使用自定义metric参数的方式会按需计算距离,避免生成完整距离矩阵占用过多内存;
  • 所有计算都复用训练后的已有结果,完全无需重新执行K-means训练流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:52:15