我有一个名为“admissions”的数据集。
我正在尝试对简单数据集执行保持验证。为了对数据集的索引进行排列,我使用以下命令:
import numpy as np
np.random.permutation(admissions.index)
我需要在排列之前使用np.random.seed()
吗?如果是,那么为什么np.random.seed(number)
中的数字代表什么?
答案 0 :(得分:5)
您不需要在随机排列之前初始化种子,因为这已经为您设置了。 根据{{3}}的文件:
参数:
种子:{None,int,array_like},可选 随机种子初始化伪随机数发生器。可以是一个 整数,任意长度的整数数组(或其他序列),或 无(默认)。如果seed为None,则RandomState将尝试读取 来自/ dev / urandom(或Windows模拟)的数据(如果可用)或种子 从时钟开始。
种子的概念与随机数的生成有关。您可以阅读更多相关信息RandomState。
要将此答案与评论(来自JohnColeman)整合到您的问题中,我想提及此示例:
>>> numpy.random.seed(0)
>>> numpy.random.permutation(4)
array([2, 3, 1, 0])
>>> numpy.random.seed(0)
>>> numpy.random.permutation(4)
array([2, 3, 1, 0])
答案 1 :(得分:1)
请注意,np.random.seed 已弃用,仅保留用于向后兼容。这是因为重新播种现有的随机数生成器 (RNG) 是不好的做法。如果您需要种子(例如,使计算可重现以进行测试),请创建一个新的 RNG:
import numpy as np
rng = np.random.default_rng(seed=0)
out = rng.random(5)