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

890

被折叠的 条评论
为什么被折叠?



