《数据挖掘》-- 不放回简单抽样

不放回简单抽样

题目:设有一组数据:[11,13,16,19,27,36,43,54,62,75],现在想要从中不放回随机抽样5个数据,每个数据被抽中的概率分别为[0.1,0.05,0.05,0.05,0.05,0.1,0.1,0.1,0.1,0.3]。
抽样过程如下。

  1. 根据待抽样数据的概率,计算以数组形式表示的累计分布概率cdf,并规范化。
    计算:cdf=[0.1,0.15,0.2,0.25,0.3,0.4,0.5,0.6,0.7,1]
    规范化:cdf/=cdf[-1],得到:[0.1,0.15,0.2,0.25,0.3,0.4,0.5,0.6,0.7,1]
    归一化的处理 需要cdf每次都除以cdf列表的最后一个数据,本例中就是除以1
  2. 根据还需抽样的个数,生成[0,1]的随机数数组x。
    [0.04504848 0.5299489 0.0734825 0.52341745 0.17316974]
  3. 将x中的随机数按照cdf值升序找到插入位置,形成索引数组new。
    [0 7 0 7 2]
    比如随机数组x中大于0.04504848的最小数是0.1,下标为0;大于0.5299489的最小数是0.6,下标为7
  4. 找出数组new中不重复的索引位置,作为本次抽样的位置索引。
    [0 7 2]
  5. 在概率数组p中,将已经抽样的索引位置置0。
    P=[0.,0.05,0.,0.05,0.05,0.1,0.1,0.,0.1,0.3]
  6. 重复上述步骤,直到输出指定数目的样本。
    第二轮依旧先累计P,按照一样的步骤进行,第一次抽样抽了3个,这次随机数数组x的个数应该为2个
    最终被抽中的样本在原数组中的位置索引:[0 7 2 9 5]
    抽样结果:[11 54 16 75 36]
    代码如下:

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值