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模拟登录百度代码分享(获取百度贴吧等级)
Dec 27 Python
python在命令行下使用google翻译(带语音)
Jan 16 Python
Python中使用PIL库实现图片高斯模糊实例
Feb 08 Python
详细解析Python中的变量的数据类型
May 13 Python
Ubuntu下创建虚拟独立的Python环境全过程
Feb 10 Python
Python双精度浮点数运算并分行显示操作示例
Jul 21 Python
python实现简易版计算器
Jun 22 Python
使用python画个小猪佩奇的示例代码
Jun 06 Python
10分钟教你用Python实现微信自动回复功能
Nov 28 Python
Pytorch中实现只导入部分模型参数的方式
Jan 02 Python
Python批量启动多线程代码实例
Feb 18 Python
python实现人脸签到系统
Apr 13 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
分享PHP header函数使用教程
2013/09/05 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
php中数字、字符与对象判断函数用法实例
2014/11/26 PHP
nginx下安装php7+php5
2016/07/31 PHP
PHP实现字符串的全排列详解
2019/04/24 PHP
php生成微信红包数组的方法
2019/09/05 PHP
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
js自定义事件及事件交互原理概述(二)
2013/02/01 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
2013/08/07 Javascript
js禁止回车提交表单的示例代码
2013/12/23 Javascript
JS实现方向键切换输入框焦点的方法
2015/08/19 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
js实现日历与定时器
2017/02/22 Javascript
js实现动态显示时间效果
2017/03/06 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
2017/06/15 Javascript
web.py在SAE中的Session问题解决方法(使用mysql存储)
2015/06/24 Python
Pandas标记删除重复记录的方法
2018/04/08 Python
Python 字符串与数字输出方法
2018/07/16 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
python爬取淘宝商品销量信息
2018/11/16 Python
python射线法判断检测点是否位于区域外接矩形内
2019/06/28 Python
简单了解python filter、map、reduce的区别
2020/01/14 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
python中time包实例详解
2021/02/02 Python
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
找到不普通的东西:Bonanza
2016/10/20 全球购物
Alba Moda瑞士网上商店:独家意大利时尚女装销售
2016/11/28 全球购物
获奖的大学生创业计划书
2014/01/05 职场文书
银行纠风工作实施方案
2014/06/08 职场文书
小学生运动会通讯稿
2014/09/23 职场文书
2014年度培训工作总结
2014/11/27 职场文书
中秋节晚会开场白
2015/05/29 职场文书
新教师2015年度工作总结
2015/07/22 职场文书
《猴王出世》教学反思
2016/02/23 职场文书
解析CSS 提取图片主题色功能(小技巧)
2021/05/12 HTML / CSS