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中的异常处理简明介绍
Apr 13 Python
Python与Redis的连接教程
Apr 22 Python
理解Python垃圾回收机制
Feb 12 Python
Python 2与Python 3版本和编码的对比
Feb 14 Python
对Python中gensim库word2vec的使用详解
May 08 Python
Python检查和同步本地时间(北京时间)的实现方法
Dec 03 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
Oct 06 Python
numpy ndarray 取出满足特定条件的某些行实例
Dec 05 Python
Pyqt5自适应布局实例
Dec 13 Python
python函数定义和调用过程详解
Feb 09 Python
python 读txt文件,按‘,’分割每行数据操作
Jul 05 Python
Python实现微信表情包炸群功能
Jan 28 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一些有意思的小区别
2006/12/06 PHP
支持中文的php加密解密类代码
2011/11/27 PHP
PHP字符串中特殊符号的过滤方法介绍
2014/02/18 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
2017/11/06 PHP
JQuery弹出炫丽对话框的同时让背景变灰色
2014/05/22 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
浅析javascript函数表达式
2016/02/10 Javascript
js实现小窗口拖拽效果
2016/12/03 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
JS实现预加载视频音频/视频获取截图(返回canvas截图)
2017/10/09 Javascript
dropload.js插件下拉刷新和上拉加载使用详解
2017/10/20 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
2018/07/03 jQuery
vue.js使用v-model实现父子组件间的双向通信示例
2020/02/05 Javascript
[01:00:04]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第二局
2016/02/26 DOTA
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
Python发送以整个文件夹的内容为附件的邮件的教程
2015/05/06 Python
python简单实现AES加密和解密
2019/03/28 Python
如何使用python操作vmware
2019/07/27 Python
python实现简单井字棋游戏
2020/03/04 Python
python 使用raw socket进行TCP SYN扫描实例
2020/05/05 Python
德国鞋子网上商店:Omoda.de
2017/03/31 全球购物
跑步、骑行和铁人三项的高性能眼镜和服装:ROKA
2018/07/06 全球购物
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
英国景点门票网站:attractiontix
2019/08/27 全球购物
什么是类的返射机制
2016/02/06 面试题
审核会计岗位职责
2013/11/08 职场文书
入学申请自荐信范文
2014/02/26 职场文书
金融学专业大学生职业生涯规划
2014/03/07 职场文书
文员岗位职责范本
2014/03/08 职场文书
临时用工协议书范本
2014/10/29 职场文书
家庭贫困证明
2015/06/16 职场文书
2016年大学生暑期社会实践方案
2015/11/26 职场文书
委托书范本格式
2019/04/18 职场文书
什么是执行力?9个故事告诉您:成功绝非偶然!
2019/07/05 职场文书
Spring Boot DevTools 全局配置学习指南
2022/03/31 Java/Android