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中cPickle用法例子分享
Jan 03 Python
python中使用enumerate函数遍历元素实例
Jun 16 Python
Python编写检测数据库SA用户的方法
Jul 11 Python
python简单程序读取串口信息的方法
Mar 13 Python
python安装mysql-python简明笔记(ubuntu环境)
Jun 25 Python
Zabbix实现微信报警功能
Oct 09 Python
Python实现直方图均衡基本原理解析
Aug 08 Python
基于Python实现船舶的MMSI的获取(推荐)
Oct 21 Python
如何写python的配置文件
Jun 07 Python
python求解汉诺塔游戏
Jul 09 Python
浅谈Python __init__.py的作用
Oct 28 Python
关于python scrapy中添加cookie踩坑记录
Nov 17 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中输出转义JavaScript代码的实现代码
2011/04/22 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
php中apc缓存使用示例
2013/12/25 PHP
PHP可变变量学习小结
2015/11/29 PHP
值得分享的php+ajax实时聊天室
2016/07/20 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
cloudgamer出品ImageZoom 图片放大效果
2010/04/01 Javascript
判定是否原生方法的JS代码
2013/11/12 Javascript
判断javascript的数据类型(示例代码)
2013/12/11 Javascript
js实现仿爱微网两级导航菜单效果代码
2015/08/31 Javascript
Jquery uploadify上传插件使用详解
2016/01/13 Javascript
jquery获取所有选中的checkbox实现代码
2016/05/26 Javascript
Ionic默认的Tabs模板使用实例
2016/08/29 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
javascript实现点击星星小游戏
2019/12/24 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
Python下载懒人图库JavaScript特效
2015/05/28 Python
python如何求解两数的最大公约数
2018/09/27 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
python数据类型强制转换实例详解
2020/06/22 Python
python 监控服务器是否有人远程登录(详细思路+代码)
2020/12/18 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
解决Pyinstaller打包软件失败的一个坑
2021/03/04 Python
印度电子产品购物网站:Vijay Sales
2021/02/16 全球购物
面料业务员岗位职责
2013/12/26 职场文书
竞聘副主任科员演讲稿
2014/01/11 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
2015年幼儿园卫生保健工作总结
2015/05/12 职场文书
2015年全民创业工作总结
2015/07/23 职场文书
新人入职感言
2015/07/31 职场文书
搭建Yolov5服务器
2022/04/30 Servers
Java版 单机五子棋
2022/05/04 Java/Android