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

如何让ML.NET中的K-Means聚类算法输出确定性可复现的结果

问题原因
  • MLContext全局设置的seed不会自动作用于KMeans训练器,KMeans的初始质心随机选择逻辑使用独立的随机种子配置,默认是随机值,不受全局seed约束。
  • KMeans默认开启多线程并行训练,并行计算的执行顺序存在随机性,也会导致最终生成的质心结果不一致。
修复步骤

你只需要修改KMeans训练器的初始化代码,显式指定固定随机种子、关闭并行优化即可,修改后的对应代码如下:

var pipeline = mlContext.Transforms                
.Concatenate(featuresColumnName, "Price")                
.Append(mlContext.Clustering.Trainers.KMeans(new KMeansTrainer.Options
{
    FeatureColumnName = featuresColumnName,
    NumberOfClusters = 4,
    // 固定KMeans自身的随机种子
    Seed = 4,
    // 关闭并行训练,消除并行计算带来的随机性
    NumberOfThreads = 1
}));
额外注意事项
  • 请确保每次运行时加载的源数据文件内容完全一致,没有修改、增减数据条目。
  • 如果你在后续流程中添加了数据洗牌(Shuffle)操作,也需要为洗牌操作指定固定的seed值,避免引入额外随机性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:57:03