我是个编程行家。
我试着在一本书中运行一个简单的线性回归示例。Y=4*X+6
我已经设置了np.random.seed(0)
。
创建X时,书中的代码使用了2 * np.random.rand(100,1)
。
我用下面的方法创建了X1,X2,X3。下面是代码
import numpy as np
np.random.seed(0)
X1 = 2 * np.random.rand(5,1)
X2 = np.random.rand(5,1)
X3 = 2 * X2
print('X1= ', X1)
print('X2= ', X2)
print('X3= ', X3)
我这里有问题
我猜您希望np.random.rand()返回相同的值,因为您正在设置种子。这是一种误解。将种子设置一次意味着,从它们开始,它将返回一系列随机值。如果随后再次设置相同的种子,它将随后返回相同的序列。请尝试以下方法:
X1将等于X2,因为每个都是与种子0相关联的序列的开始
现在,试试这个:
现在X1=X2,Y1=Y2。但是X1!=Y1(除非你随机画两次相同的东西)
要回答第一个问题,是的——将随机抽取的结果乘以2,因此它现在将返回0到2的元素,而不是0到1的元素
现在,您可能需要两个相同的随机数生成器,而无需每次重置种子。如果是这种情况,请初始化两个numpy.random.RandomState: https://numpy.org/doc/stable/reference/random/legacy.html?highlight=numpy%20random%20randomstate#numpy.random.RandomState
或者他们的新发电机。然后,您可以使用相同的种子对它们进行初始化,并从一个种子中提取一段时间,然后从该种子的随机序列中“更早”的另一个种子中提取
它使值加倍。你怎么认为它没有呢
它们是不同的,因为您在两个不同的位置调用了一个随机数组。为什么期望
random
在两个连续调用中返回相同的值?那么,这个序列很难是随机的X2
值介于0和1之间X3
值是X2
值的两倍,介于0和2之间X1
值是不同的数字,但也在0和2之间相关问题 更多 >
编程相关推荐