Numpy 随机数种子在整个Jupyter笔记本中有效
在进行数据分析和机器学习时,经常需要使用随机数来进行训练、测试和验证。Python中的Numpy库提供了丰富的随机数生成方法,在其内部使用一个生成器来生成随机数。使用随机数时,我们需要设置一个随机数种子,以保证生成的随机数具有可重复性和一致性。但是,在使用Jupyter笔记本进行数据分析时,如果没有正确设置随机数种子,可能会导致随机数不一致的问题,从而影响到数据分析的结果。本文将介绍Numpy随机数种子在整个Jupyter笔记本中有效的方法。
阅读更多:Numpy 教程
Numpy随机数生成器
Numpy通过使用随机数生成器来生成随机数。随机数生成器有两种类型:一种是全局随机数生成器,另一种是本地随机数生成器。全局随机数生成器由numpy.random模块生成,本地随机数生成器由numpy.random.RandomState类生成。
在使用全局随机数生成器时,我们没有手动进行任何设置,直接调用相关函数即可生成随机数,例如:
import numpy as np
arr = np.random.rand(10)
print(arr)
# [0.35325633 0.65677238 0.72434811 0.16156209 0.60254716 0.74191132
# 0.4488987 0.51717484 0.17473136 0.60728203]
这将生成一个长度为10的随机浮点数组。然而,在使用本地随机数生成器时,需要先实例化一个RandomState对象,然后使用该对象生成随机数,例如:
import numpy as np
random_state = np.random.RandomState(42)
arr = random_state.rand(10)
print(arr)
# [0.37454012 0.95071431 0.73199394 0.59865848 0.15601864 0.15599452
# 0.05808361 0.86617615 0.60111501 0.70807258]
这将生成一个长度为10的随机浮点数组,其随机数生成遵循随机数种子42。
Numpy随机数种子
随机数种子是一个整数,被用来初始化随机数生成器的状态。不同的随机数种子会导致不同的随机数序列。当我们使用相同的随机数种子时,随机数序列将是相同的。在使用Numpy进行数据分析时,我们需要设置随机数种子,以保证在后续的数据分析中生成的随机数具有可重复性和一致性。设置随机数种子的方法如下:
import numpy as np
np.random.seed(42) # 设置随机数种子为42
arr = np.random.rand(10)
print(arr)
# [0.37454012 0.95071431 0.73199394 0.59865848 0.15601864 0.15599452
# 0.05808361 0.86617615 0.60111501 0.70807258]
在上面的代码中,我们使用np.random.seed(42)来设置随机数种子为42。此时,随机数序列将会是相同的,无论我们何时运行代码。
随机数种子在整个笔记本中的有效性
在Jupyter笔记本中,每次执行一个单元格(Cell)的代码时,随机数种子都会重新初始化为一个随机值,这可能会导致随机数序列不一致的问题。为了解决这个问题,我们需要将随机数种子设置为全局的,以保证整个笔记本中的随机数序列是一致的。具体来说,我们可以在第一个代码单元格中设置随机数种子,然后在后面的代码单元格中不再设置随机数种子。这将保证整个笔记本中的随机数序列是相同的。
例如,在下面的代码中,我们在第一个代码单元格中设置了随机数种子为42,然后在后面的代码单元格中不再设置随机数种子。这将保证整个笔记本中的随机数序列是相同的:
import numpy as np
np.random.seed(42) # 全局设置随机数种子为42
# 生成一个长度为10的随机浮点数组
arr = np.random.rand(10)
print(arr)
# [0.37454012 0.95071431 0.73199394 0.59865848 0.15601864 0.15599452
# 0.05808361 0.86617615 0.60111501 0.70807258]
# 生成一个长度为5的随机整数数组
arr_int = np.random.randint(0, 10, size=5)
print(arr_int)
# [8 9 2 6 3]
在上面的代码中,我们在第一个代码单元格中设置了随机数种子为42(np.random.seed(42)),然后在后面的代码单元格中生成了一个长度为10的随机浮点数组和一个长度为5的随机整数数组。由于我们没有再次设置随机数种子,因此整个笔记本中的随机数序列是相同的。
总结
在进行数据分析和机器学习时,随机数经常被用于训练、测试和验证。为了保证生成的随机数具有可重复性和一致性,我们需要设置随机数种子。在Jupyter笔记本中,由于每次执行一个代码单元格时随机数种子都会重新初始化为一个随机值,需要将随机数种子设置为全局的,以保证整个笔记本中的随机数序列是一致的。具体来说,我们可以在第一个代码单元格中设置随机数种子,然后在后面的代码单元格中不再设置随机数种子。这将保证整个笔记本中的随机数序列是相同的。
极客笔记