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

运行时间序列聚类代码遇TypeError:Population需为序列或集合的解决方法

修复TypeError: Population must be a sequence or set的时间序列聚类问题

嘿,这个问题我熟!你碰到的错误完全是因为random.sample()的参数规则——它只接受序列(比如普通列表)或者集合类型的输入,但你传入的data应该是pandas DataFrame或者numpy数组,这类结构不符合它的要求,所以才会报错。

咱们直接看问题代码的核心:

centroids=random.sample(data,num_clust)

这里的data如果是DataFrame,random.sample没法直接识别它的行结构,自然会抛出"Population must be a sequence or set"的错误。

具体修复方案

根据你的data类型,选对应的修改方式:

情况1:data是pandas DataFrame

把DataFrame的行转换成可抽样的列表结构,比如用values.tolist()把每行转成嵌套列表,再传入random.sample:

# 转换为嵌套列表后抽样,得到的centroids是列表格式
centroids = random.sample(data.values.tolist(), num_clust)

# 如果后续需要保持numpy数组格式,可以再转回去
centroids = np.array(centroids)

情况2:data是numpy数组

把数组转换成列表后再抽样,最后转回数组保持格式一致:

centroids = np.array(random.sample(list(data), num_clust))

额外提醒

修复抽样后,要确保centroids的格式和你的原始数据匹配——比如原始数据是每行一个时间序列,那抽样得到的质心也得是同样的行结构,这样后续计算时间序列距离(比如DTW)的时候才不会出其他问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:56:27