Python中Numpy库的随机抽样

这篇博客详细介绍了Python Numpy库中的随机抽样,包括离散型随机变量如二项分布、泊松分布和正态分布的使用,以及如何进行其他随机函数操作,如从序列中随机抽取元素,并探讨了在机器学习中数据洗牌的重要性。

@[cible] 个人学习笔记

Numpy——随机抽样

这是本次学习的流程图
在这里插入图片描述

离散型随机变量

1.二项分布:结果只有两种,成立或不成立

     umpy.random.binomial(n, p, size=None)

n:表示n重伯努利实验
p:成功的概率
size:表示采样次数

#例 :模拟投硬币,投5次,请问两次都为正面的概率
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
np.random.seed(20201124)
n = 5
p = 0.5
size = 3000
x = np.random.binomial(n,p,size)
print(np.sum(x == 0)/size)
print(np.sum(x == 1)/size)
print(np.sum(x == 2)/size)

plt.hist(x,density = True)
plt.xlabel('随机变量:硬币为正面的次数')
plt.ylabel('3000个样本中出现的次数')
plt.show()
s = stats.binom.pmf(range(n+1),n,p)
print(np.around(s,4))

2.泊松分布:估计某个时间段某事发生的概率
     numpy.random.poisson(lam=1.0, size=None) 

lam 表示一个单位内发生事件的平均值
size 表示采样的次数
函数的返回值表示一个单位内事件发生的次数。


 
#### 3.超几何分布:概率不相同且样本不独立 
         numpy.random.hypergeometric(ngood, nbad, nsample, size=None) 
size :表示采样的次数, 
ngood :表示总体中具有成功标志的元素个数
nbad :表示总体中不具有成功标志的元素个数
ngood+nbad: 表示总体样本容量
nsample :表示抽取元素的次数(小于或等于总体样本容量)
函数的返回值表示抽取 nsample 个元素中具有成功标识的元素个数。
hypergeom.pmf(k ,M ,n ,N ) 
M 为总体容量 
n为总体中具有成功标志的元素个数 
N,k表示抽取N个元素有k个是成功元素

## 连续型随机变量 
### 1.均匀分布
          numpy.random.uniform(low=0.0, high=1.0, size=None)
 
  作为 uniform 的另一特例,可以得到 [low,high) 之间均匀分布的随机整数。
         numpy.random.randint(low, high=None, size=None, dtype='l')

```python
#例:若 high 不为 None 时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数。
import numpy as np
np.random.seed(20201125)
x = np.random.randint(2,size = 10)
print(x)
 
x = np.random.randint(5,size = (2,4))
print(x)
 
x = np.random.randint(1,10,[3,4])
print(x)

2.正态分布

     numpy.random.randn(d0, d1, ..., dn)

#还可以指定分布以及所需参数来进行随机,例如高斯分布中的mu和sigma。
numpy.random.normal(loc=0.0, scale=1.0, size=None)
normal() 为创建均值为 loc(mu)
标准差为 scale(sigma)
大小为 size 的数组。
sigma * np.random.randn(…) + mu

3.指数分布 : 指数分布描述时间发生的时间长度间隔
      numpy.random.exponential(scale=1.0, size=None)
: scale = 1/lambda
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
np.random.seed(20201125)
lam = 7
size = 30000
x = np.random.exponential(1/lam,size)
y1 = (np.sum(x < 1/7)) / size
y2 = (np.sum(x < 2/7)) / size
y3 = (np.sum(x < 3/7)) / size
print(y1)
print(y2)
print(y3)
​
plt.hist(x , bins = 20)
plt.show()
 
y1 = stats.expon.cdf(1 / 7,scale = 1 / lam)
y2 = stats.expon.cdf(2 / 7,scale = 1 / lam) 
y3 = stats.expon.cdf(3 / 7,scale = 1 / lam)
print(y1)
print(y2)
print(y3)

三、其他随机函数

1.随机从序列中获得函数

numpy.random.choice(a, size=None, replace=True, p=None)
若 a 为整数,元素取值从 np.range(a) 中随机获取;若 a 为数组,取值从 a 数组 元素中随机获取。该函数还可以控制生成数组中的元素是否重复 replace ,以及选取元素的概率 p 。

数据一般都是按照采集顺序排列的,但是在机器学习中很多算法都要求数据之间相互独立,所以需要先对数据集进行洗牌操作。

        numpy.random.shuffle(x)

#对 x 进行重排序,如果 x 为多维数组,只沿第 0 轴洗牌,改变原来的数组,输出为None。

      numpy.random.permutation(x)

permutation() 函数的作用与 shuffle() 函数相同,可以打乱第0轴的数据,但是它不会改变原来的数 组。

总结

通过本次对Numpy库中random函数的学习,深入对随机抽样进行操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值