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 调用win32pai 操作cmd的方法
May 28 Python
python 列表,数组,矩阵两两转换tolist()的实例
Apr 04 Python
Python贪心算法实例小结
Apr 22 Python
Django框架实现分页显示内容的方法详解
May 10 Python
python pytest进阶之fixture详解
Jun 27 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
详解Python3 pandas.merge用法
Sep 05 Python
python实现获取单向链表倒数第k个结点的值示例
Oct 24 Python
简单了解python元组tuple相关原理
Dec 02 Python
wxpython多线程防假死与线程间传递消息实例详解
Dec 13 Python
Python统计学一数据的概括性度量详解
Mar 03 Python
Pandas 数据编码的十种方法
Apr 20 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实现对xml进行简单的增删改查(CRUD)操作示例
2017/05/19 PHP
php 数据结构之链表队列
2017/10/17 PHP
Laravel相关的一些故障解决
2020/08/19 PHP
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
2011/04/01 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
js获取所有checkbox的值的简单实例
2016/05/30 Javascript
JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面
2016/08/04 Javascript
基于原生js淡入淡出函数封装(兼容IE)
2016/10/20 Javascript
微信小程序 聊天室简单实现
2017/04/19 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
2017/08/03 Javascript
详解基于Koa2开发微信二维码扫码支付相关流程
2018/05/16 Javascript
vuex实现及简略解析(小结)
2019/03/01 Javascript
Vue中jsx不完全应用指南小结
2019/11/01 Javascript
js实现点击上传图片并设为模糊背景
2020/08/02 Javascript
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
2018/02/13 Python
numpy中的高维数组转置实例
2018/04/17 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
2019/04/12 Python
python实现FTP文件传输的方法(服务器端和客户端)
2020/03/20 Python
基于tensorflow for循环 while循环案例
2020/06/30 Python
Python TestSuite生成测试报告过程解析
2020/07/23 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
python subprocess pipe 实时输出日志的操作
2020/12/05 Python
Python排序函数的使用方法详解
2020/12/11 Python
澳大利亚小众服装品牌:Maurie & Eve
2018/03/27 全球购物
用C#语言写出在本地创建一个UDP接收端口的具体过程
2016/02/22 面试题
中科前程Java笔试题
2016/11/20 面试题
医学专业职业生涯规划范文
2014/02/05 职场文书
《小石潭记》教学反思
2014/02/13 职场文书
服务质量承诺书
2014/03/27 职场文书
2014年国庆节活动总结
2014/08/26 职场文书
老干部工作汇报材料
2014/10/28 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
大连导游词
2015/02/12 职场文书
求职信内容一般写什么?
2015/03/20 职场文书
ORACLE数据库应用开发的三十个注意事项
2021/06/07 Oracle