Poe*_*dit 7 python scikit-learn random-seed
关于使用 运行机器学习算法时的播种系统Scikit-Learn,通常提到三种不同的事情:
random.seednp.random.seedrandom_stateat SkLearn(交叉验证迭代器、ML 算法等)我已经在我的脑海这个常见问题的SkLearn有关如何解决全球直播系统和物品,其指出,这不应该是一个简单的常见问题。
我的最终问题是在运行 ML 算法时如何获得绝对可重现的结果SkLearn?
更详细地说,
np.random.seed并且不指定任何random_state,SkLearn那么我的结果是否绝对可重现?至少为了知识而提出一个问题:
np.random.seed和random_state的SkLearn是内部关系吗?如何np.random.seed影响播种系统 ( random_state)SkLearn并使其(至少在假设上)重现相同的结果?定义随机种子将确保每次运行算法时,随机数都会生成相同的数字。恕我直言,只要我们使用相同的数据以及任何其他参数的相同值,结果将始终相同。
正如您在 sklearn 的常见问题解答中所读到的那样,无论您通过全局定义它numpy.random.seed()还是通过random_state在所有涉及的算法中设置参数来定义它,只要您为这两种情况设置相同的数字,它都是相同的。
我以 sklearn文档为例来说明它。
import numpy
from sklearn.model_selection import train_test_split
# numpy.random.seed(42)
X, y = np.arange(10).reshape((5, 2)), range(5)
#1 running this many times, Xtr will remain [[4, 5],[0, 1],[6, 7]].
Xtr, Xte, ytr, yte = train_test_split(X, y, test_size=0.33, random_state=42)
#2 try running this line many times, you will get various Xtr
Xtr, Xte, ytr, yte = train_test_split(X, y, test_size=0.33)
Run Code Online (Sandbox Code Playgroud)
现在取消第三行的注释。多次运行#2。Xtr一直会[[4, 5],[0, 1],[6, 7]]
通过numpy.random.seed(),它将种子设置为默认值(无),然后它将尝试从 /dev/urandom (或 Windows 类似物)读取数据(如果可用),否则从时钟读取种子。文档
| 归档时间: |
|
| 查看次数: |
3578 次 |
| 最近记录: |