参考:
https://blog.csdn.net/yexudengzhidao/article/details/81051542
在做机器学习算法实验的时候,可能会使用一些按照一定的分布随机生成的数值来作为training样本。
这时候我们总是会用到一些python自带的random库中的一些函数, 或者是numpy 中的一些函数。
下面我们来看一下他们的具体用法。
(注意:random()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法)
01 python 内置的 random 库
其主要的函数如下
print( random.randint(1,10) ) # 产生 1 到 10 的一个整数型随机数 print( random.random() ) # 产生 0 到 1 之间的随机浮点数 print( random.uniform(1.1,5.4) ) # 产生 1.1 到 5.4 之间的随机浮点数,区间可以不是整数 print( random.choice('tomorrow') ) # 从序列中随机选取一个元素 print( random.randrange(1,100,2) ) # 生成从1到100的间隔为2的随机整数 另外, 还有一个 shuffle 函数,顾名思义,是一个打乱顺序的操作。 a=[1,3,5,6,7] # 将序列a中的元素顺序打乱 random.shuffle(a) print(a)
总结, python 自带的 random库只能生成一些特定类型的随机数, 不能定义这些数据的分布情况。
如果你想要定义一组大体上服从高斯分布的随机数, 那么下面的numpy 库将会帮到你。
02 numpy 的 random 库
一些常用的如下:
random.rand()
numpy.random.rand(d0,d1,…,dn)
rand函数根据给定维度生成[0,1)之间的数据,包含0,不包含1
dn表格每个维度
返回值为指定维度的array
返回[0,1)之间的数,rand()返回一个数字,rand(1)返回一个一维的一个数字数组,rand(2)返回一个一维的2个数字数组,
以此类推。rand(3,4)返回3行4列的二维数组。
random.randn()
randn函数返回一个或一组样本,具有标准正态分布。
dn表格每个维度
返回值为指定维度的array
用法同np.random.rand()一样,只 不过是这些 0-1 的数据 服从标准的正态分布。
random.normal()
也是生成正态分布的数据,只不过这个函数可以定义正太分布的参数, μ 和 x(不会打) ,
这个函数一共有三个参数,分别是(loc, scale, size),分别代表生成的高斯分布的随机数的均值、方差以及输出的size(想要输出多少个这个的值)
random.random
和 python 自带的 random库中的用法相同,不再做过多的介绍。。。
random.seed()
其实seed本身并不难理解, 就是一种生成相同随机数的方法,
比如你定义了 seed(5) , 然后生成了一组符合高斯分布的随机数。
如果在下面的程序当中, 你还想使用这组数据,一模一样的数据, 你也可以先声明 seed = 5
然后在生成数据, 这样你得到的就是和第一次一模一样的数据。
然而使人困惑的是 seed当中的参数, 你可能经常会见到类似于 seed(45), seed(20) 等这类的东西,
这和seed(0), seed(1) 有什么区别呢?
其实。。。他们之间没什么区别,只不过是名字不同罢了。
。。。
。。
。