Python 按分类权重(区间)随机获取分类样本
按分类权重(区间)随机获取分类样本
By:授客 QQ:1033553122
开发环境
win 10
python 3.6.5
需求
活动抽奖,参与抽奖产品有iphone, 华为,小米,魅族,vivo,三星手机,要求为这些不同品牌的手机设置被抽奖的概率(基准概率,非绝对概率,即允许存在一定偏差),iphone为0,华为0.35,小米为0.25, 魅族0.1,vivo和三星为0.15
代码实现
#!/usr/bin/env python
# -*- coding:utf-8 -*- __author__ = 'shouke' import random def get_sample_by_rate(sample_rate_list): if sum([item[1] for item in sample_rate_list]) != 1:
raise ValueError("样本比例配置错误,样本占比之和必须为1!") random_normalized_num = random.random() # random() -> x in the interval [0, 1).
accumulated_probability = 0.0
for sample, probabilitie in sample_rate_list:
accumulated_probability += probabilitie
if random_normalized_num < accumulated_probability:
return sample award_dict = {'iphone':0, '华为':0.35, '小米':0.25, '魅族':0.1, 'vivo':0.15, '三星':0.15} # 初始化
output_dict = {} # 存放取样次数
for sample, rate in award_dict.items():
output_dict[sample] = 0 award_list = sorted(award_dict.items(), key=lambda arg:arg[1], reverse=False) n = 1000 # 取样总次数
for i in range(n):
award = get_sample_by_rate(award_list)
output_dict[award] += 1 percentage_dict = {key: output_dict[key]/n for key in output_dict} # 存放样本数占比 print(output_dict)
print(percentage_dict)
运行结果

注意
为啥可以用python的randowm函数来实现这个需求?那是因为python的random函数是平均分布函数,产生的随机数是等可能的。如下,可以把[0,1)区间看作一条线,生成的随机数可以看作是线条上一个个点,这样,就可以根据这个点所在位置,把这个点划分到某个区间(本例中划分了几个区间[0, 0.1),[0.1,0.25),[0.25,0.4),[0.4, 0.65),[0.65,1)),映射样本的概率范围
0 0.25 0.5 1
|--------|--------|----------------|
从运行结果来看,不难看出,这种计算方式存在一定的偏差,比较适合大数据
Python 按分类权重(区间)随机获取分类样本的更多相关文章
- php获取分类以下的全部子类方法
获取分类以下的全部子类方法: static function getMenuTree($arrCat, $parent_id = 0, $level = 0,$all=True) { static $ ...
- MySQL 获取子分类ID的所有父分类ID和Name的集合
CREATE DEFINER=`sa`@`%` PROCEDURE `proc_Product_leimu_ParentIds`( IN pID INT ) BEGIN ) vars, product ...
- wordpress 获取分类ID,分类标题,分类描述,分类链接url函数
get_cat_ID() 根据分类名称获取分类ID ///// get_cat_name() 根据分类ID获取分类名称 用法:<?phpget_cat_ID( $cat_name ...
- php 两种获取分类树的方法
php 两种获取分类树的方法 1. /** * 获取分类树 * @param array $array 数据源 * @param int $pid 父级ID * @param int $level 分 ...
- dt开发之-自定义函数获取分类名称
需要在api/extend.func.php 文件中加入的函数 获取分类名称 cat_name($catid) 传入分类id function cat_name($catid) { global $d ...
- R语言分类算法之随机森林
R语言分类算法之随机森林 1.原理分析: 随机森林是通过自助法(boot-strap)重采样技术,从原始训练样本集N中有放回地重复随机抽取k个样本生成新的训练集样本集合,然后根据自助样本集生成k个决策 ...
- 【Python数据挖掘】决策树、随机森林、Bootsing、
决策树的定义 决策树(decision tree)是一个树结构(可以是二叉树或非二叉树).其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别. ...
- Python 利用 BeautifulSoup 爬取网站获取新闻流
0. 引言 介绍下 Python 用 Beautiful Soup 周期性爬取 xxx 网站获取新闻流: 图 1 项目介绍 1. 开发环境 Python: 3.6.3 BeautifulSoup: ...
- SQL Server中的RAND函数的介绍和区间随机数值函数的实现
工作中会遇到SQL Server模拟数据生成以及数值列值(如整型.日期和时间数据类型)随机填充等等任务,这些任务中都要使用到随机数.鉴于此,本文将对SQL Server中随机数的使用简单做个总 ...
- Python学习总结7:随机字符串和随机数
Python生成随机数与随机字符串,需要import random模块.random模块最常用的几个函数如下: 1. random.random(a, b) 用于生成一个0到1的随机符点数: 0 &l ...
随机推荐
- MySQL中drop/truncate/delete的区别
1.Delete语句执行删除的过程是每次从表中删除一行,并且同时将删除操作作为事务记录在日志中保存以便进行进行回滚操作(只删除表数据). delete是DML,执行delete操作时,每次从表中删除一 ...
- 这是一个基于threading可停止线程的有限容量有限并行度的python任务管理器
这是一个可停止线程的有限容量有限并行度的任务管理器 基于:GitHub - AlitaIcon/StopableThreadJob: 可停止线程任务管理器 Quick Start 基础调用与效果 im ...
- Dijkstra(迪杰斯特拉)算法
Dijkstra是什么算法 Dijkstra是典型最短路径算法,用于计算一个节点到其他节点的最短路径.该算法使用的是贪心策略:每次都找出剩余顶点中与源点距离最近的一个顶点. 什么是最短路径问题 给定 ...
- .Net Core 部署IIS
我相信很多人看了其他的贴子,都没有成功部署,因为里面有很多暗坑.接下来博主就一步一步给大家讲明白,带领大家部署 先基本的发布 操作:右击web项目的<发布>按钮.选文件 配置发布属性 ...
- SemanticKernel:添加插件
SemanticKernel介绍 Semantic Kernel是一个SDK,它将OpenAI.Azure OpenAI和Hugging Face等大型语言模型(LLMs)与C#.Python和Jav ...
- 异步长传文件插件 jquery validate 前端验证
异步文件上传插件:http://fex.baidu.com/webuploader/getting-started.html html5 FormData 可以实现无刷新上传 有空了解 FileRe ...
- 关于 CSDN 的恶臭嘴脸
我有段时间确实希望通过 CSDN 增加我文章的阅读量.但是我怎么使用 CSDN,我想要的大概也就 cnblogs 相对符合预期,CSDN 真是垃圾. 为了钱真是什么都不要了,让我们这种没有自主经济来源 ...
- LeetCode 449. Serialize and Deserialize BST 序列化和反序列化二叉搜索树 (Java)
题目: Serialization is the process of converting a data structure or object into a sequence of bits so ...
- EF EntityFramework 强制从数据库中取数据,而不是上下文
场景:插入了一条数据到数据库,这条数据会有其它程序修改,接着程序想获取最新数据.此时不加额外处理,取的仍是旧的. t_task ta = new t_task(); ta.item_id = item ...
- Prometheus 监控平台组件深度讲解
Prometheus 的重要性和流行度已经无需多言.直入主题,本文对 Prometheus 监控平台的各个组件做深度讲解,希望能帮助读者更好地理解 Prometheus. 监控系统的核心逻辑 对于一套 ...