Python 按比例获取样本数据或执行任务的实现代码


Posted in Python onDecember 03, 2020

按比例获取样本数据或执行任务

By:授客 QQ:1033553122

开发环境

win 10

python 3.6.5

需求

已知每种分类的样本占比数,及样本总数,需要按比例获取这些分类的样本。比如,我有4种任务要执行,分别为任务A,任务B,任务C,任务D, 要求执行的总任务次数为100000,且不同分类任务执行次数占比为 A:B:C:D = 3:5:7:9,且在宏观上这些任务同时进行

代码实现

#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
 
__author__ = 'shouke'
 
import time
from copy import deepcopy
 
 
def main():
 
  class_propotion_map = {'A':3, 'B':5, 'C':7, 'D':7} # 分类及样本数比例映射
  class_list = [] # 分类
  class_proption_list = [] # 存放分类样本数比例
 
  for class_type, propotion in class_propotion_map.items(): # 同一个循环,可以保证比例索引和对应分类索引一一对应
    class_list.append(class_type)
    class_proption_list.append(propotion)
 
  temp_class_propotion_list = deepcopy(class_proption_list)
  result = []
 
  t1 = time.time()
  total_sample_num = 100000 #任务执行次数
  for i in range(1, total_sample_num+1):
    max_propotion = max(temp_class_propotion_list)
    if max_propotion > 0:
      index = temp_class_propotion_list.index(max_propotion)
      result.append(class_list[index])
      temp_class_propotion_list[index] -= 1
    elif max_propotion == 0 and min(temp_class_propotion_list) == 0:
      temp_class_propotion_list = deepcopy(class_proption_list)
      index = temp_class_propotion_list.index(max(temp_class_propotion_list))
      result.append(class_list[index])
      temp_class_propotion_list[index] -= 1

  t2 = time.time()
  from collections import Counter
  c = Counter(result)
  for item in c.items():
    print(item[0], item[1]/total_sample_num)
  print('耗时:%s'%(t2-t1))
 
main()

运行结果

Python 按比例获取样本数据或执行任务的实现代码

说明

以上方式大致实现思路就是,获取每种分类样本数所占比例副本数据列表,然后每次从中获取最大比例值,并查找该比例值对应的分类(获取分类后就可以根据需要构造、获取分类样本数据),找到目标分类后,把比例数据副本中该比例值减1,直到最大比例和最小比例都等于0,接着重置比例副本数据为样本数比例值,重复前面的过程,直到样本数达到目标样本总数,这种方式实现的前提是得提前知道样本总数及不同分类样本数所占比例,且比例值为整数

到此这篇关于Python 按比例获取样本数据或执行任务的文章就介绍到这了,更多相关Python获取样本数据执行任务内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
使用Python标准库中的wave模块绘制乐谱的简单教程
Mar 30 Python
详解Python的Django框架中的中间件
Jul 24 Python
深入学习Python中的装饰器使用
Jun 20 Python
PyQt5每天必学之切换按钮
Aug 20 Python
Python 类的特殊成员解析
Jun 20 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
Jan 05 Python
手把手教你使用Python创建微信机器人
Apr 29 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
Aug 31 Python
解决pyshp UnicodeDecodeError的问题
Dec 06 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
Feb 24 Python
Python中logger日志模块详解
Aug 04 Python
python 实现Requests发送带cookies的请求
Feb 08 Python
用 Django 开发一个 Python Web API的方法步骤
Dec 03 #Python
分享unittest单元测试框架中几种常用的用例加载方法
Dec 02 #Python
python 使用cycle构造无限循环迭代器
Dec 02 #Python
python 使用csv模块读写csv格式文件的示例
Dec 02 #Python
python 发送邮件的四种方法汇总
Dec 02 #Python
如何用PyPy让你的Python代码运行得更快
Dec 02 #Python
python 实现波浪滤镜特效
Dec 02 #Python
You might like
Linux下 php7安装redis的方法
2018/11/01 PHP
laravel 出现command not found问题的解决方案
2019/10/23 PHP
Javascript 面向对象编程(coolshell)
2012/03/18 Javascript
使用jquery实现以post打开新窗口
2014/03/19 Javascript
使用jquery制作弹出框效果
2015/04/03 Javascript
浅谈Javascript中substr和substring的区别
2015/09/30 Javascript
JS+JSP通过img标签调用实现静态页面访问次数统计的方法
2015/12/14 Javascript
ionic2打包android时gradle无法下载的解决方法
2017/04/05 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
2017/05/10 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
axios中cookie跨域及相关配置示例详解
2017/12/20 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
2018/05/03 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
在主机商的共享服务器上部署Django站点的方法
2015/07/22 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
2017/11/30 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
2018/01/04 Python
Python简单计算给定某一年的某一天是星期几示例
2018/06/27 Python
django解决跨域请求的问题
2018/11/11 Python
Django 1.10以上版本 url 配置注意事项详解
2019/08/05 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
2020/02/26 Python
在python image 中实现安装中文字体
2020/05/16 Python
基于python实现操作git过程代码解析
2020/07/27 Python
html5 自定义播放器核心代码
2013/12/20 HTML / CSS
一个C/C++编程面试题
2013/11/10 面试题
25道Java面试题集合
2013/05/21 面试题
小车司机岗位职责
2013/11/25 职场文书
大学本科毕业生的自我鉴定
2013/11/26 职场文书
遗体告别仪式主持词
2014/03/20 职场文书
医院保洁服务方案
2014/06/11 职场文书
《改造我们的学习》心得体会
2014/11/07 职场文书
优秀护士事迹材料
2014/12/25 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
Django使用channels + websocket打造在线聊天室
2021/05/20 Python
JavaScript模拟实现网易云轮播效果
2022/04/04 Javascript