Python 里的随机种子random.seed()

Posted 玛丽莲茼蒿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 里的随机种子random.seed()相关的知识,希望对你有一定的参考价值。

一、带有随机性的实验

常见的带有随机性的一些算法及处理步骤:

(1)神经网络当中的初始化权重。

(2)聚类算法,例如K-means算法的初试聚类中心;

(3)随机森林中牵涉到的数据或特征抽样;

(4)随机抽取训练集测试集时,不使用随机种子第一次和第二次随机抽取的数据集会不同;使用随机种子,第一次第二次随机抽取的数据集就会相同。

但是问题来了,因为牵涉到随机因素,那么不要说复现别人的结果,那么即使自己对比自己上一个做的结果,那么结果可能也会不一样。那么怎么复现或者进行结果对比呢?使用随机种子

(1)神经网络当中的初始化权重。不使用随机种子第一次和第二次的初始化权重会不同,使用随机种子,第一次和第二次的初始化权重就会相同。

(2)聚类算法,例如K-means算法的初始聚类中心。不使用随机种子第一次和第二次的初始聚类中心会不同,使用随机种子,第一次和第二次的初始聚类中心就会相同。

(3)随机森林中牵涉到的数据或特征抽样。不使用随机种子第一次和第二次的抽样会不同,使用随机种子,第一次和第二次的抽样就会相同。

(4)随机抽取训练集测试集时,不使用随机种子第一次和第二次随机抽取的数据集会不同;使用随机种子,第一次第二次随机抽取的数据集就会相同。

二、随机种子

        用random.seed()函数指定随机种子。

import random
                             # 这里我们没有使用random.seed指定随机种子

num = random.randint(1,1000) # 每次得到的随机数都是随机的

                             # 同理,神经网络的随机权重也是随机的

                             # 其他随机产生的东西都是随机的

#-----------------------------------------------------------------------


random.seed(2)  # 只要在这里指定一个数(多少都可以)

num = random.randint(1,1000)  # 每次得到的随机数就相同
                                
                              # 同理,神经网络的随机权重也相同

                              # 其他随机产生的东西都相同
#-----------------------------------------------------------------------


random.seed(5)  # 换一个数

num = random.randint(1,1000)  # 每次得到的随机数都相同,只不过不同于random.seed(2)时
                                
                              # 同理.。。

                        

以上是关于Python 里的随机种子random.seed()的主要内容,如果未能解决你的问题,请参考以下文章

关于随机种子random.seed()测试 pytorch完全设置随机种子

python 包之 random 随机数库教程

(转)python随机数用法

[Tips] pyton 设置随机种子

随机种子random_state,random seed

python之random.seed()函数