一、带有随机性的实验
常见的带有随机性的一些算法及处理步骤:
(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)时 # 同理.。。