gpt4 book ai didi

python - 可以从 shogun 的 python 界面控制随机种子吗?

转载 作者:行者123 更新时间:2023-12-01 00:40:27 27 4
gpt4 key购买 nike

使用 shogun 6.1.3 和 python 3.6。

出于测试目的,我试图在 shogun 中获得可复制的结果,但我没有找到控制随机种子的方法。

我已经尝试过:

import random
import numpy
from shogun import KMeans

random.seed(0)
numpy.random.seed(0)
km = KMeans(seed=0)

我想对许多将军算法执行此操作,但这里是使用 KMeans 的简单示例:

from shogun import KMeans, RealFeatures, MulticlassLabels, EuclideanDistance
import numpy

trainX = numpy.array([[0, 0, 1], [0, 1, 0], [1, 0, 0]] * 3).astype(float)
trainY = numpy.array([[0], [1], [2]] * 3).astype(float).flatten()
testX = numpy.array([[0, 1, 0], [0, 0, 1], [1, 0, 0]]).astype(float)

Xtrain = RealFeatures(trainX.T)
Ytrain = MulticlassLabels(trainY)
Xtest = RealFeatures(testX.T)

km = KMeans()
km.set_distance(EuclideanDistance(Xtrain, Xtrain))
km.train(Xtrain)
labs = km.apply_multiclass(Xtest)
labs.get_labels()

labs.get_labels() 每次都不同,但我相信设置随机种子应该会产生一致的结果。是否有我可以设置的属性,或其他方式来控制随机性并获得一致的结果?

最佳答案

在 Shogun 6.1.3(及更早版本)中,您可以使用(全局)静态调用 Math.init_random(seed)

由于全局种子会导致多线程设置中的再现性问题,因此在 Shogun 的开发分支中,我们最近删除了它。相反,您可以使用 obj.put("seed", my_seed) 来设置特定对象的种子(递归地)。或者,更简单的是,在 Python 中使用 kwargs 样式初始化器:km = sg.machine("KMeans", k=2, distance=d, seeds=1)

这两者都记录在生成的元示例中,分别使用 6.1.3 和开发分支。网站示例将随下一版本更新。

关于python - 可以从 shogun 的 python 界面控制随机种子吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57384802/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com