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

 更新时间:2020年12月03日 09:36:37   作者:授客  
这篇文章主要介绍了Python 按比例获取样本数据或执行任务,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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

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()

运行结果

说明

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

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

相关文章

  • Python中HMAC加密算法的应用

    Python中HMAC加密算法的应用

    HMAC 算法可用于验证在应用程序之间传递或存储在潜在易受攻击位置的信息的完整性,因此本文为大家整理了一些Python中HMAC加密算法的应用,希望对大家有所帮助
    2023-05-05
  • 浅谈pytorch中的nn.Sequential(*net[3: 5])是啥意思

    浅谈pytorch中的nn.Sequential(*net[3: 5])是啥意思

    这篇文章主要介绍了pytorch中的nn.Sequential(*net[3: 5])是啥意思,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • python能做什么 python的含义

    python能做什么 python的含义

    在本篇文章里小编给大家整理的是关于python能做什么 python的含义的相关知识点,有需要的朋友们学习下。
    2019-10-10
  • Python使用代理抓取网站图片(多线程)

    Python使用代理抓取网站图片(多线程)

    Python作为一门功能强大的脚本语言,经常被用来写爬虫程序,下面是使用Python通过代理进行多线程抓取图片,算是一个简易的python多线程爬虫
    2014-03-03
  • python中函数传参详解

    python中函数传参详解

    本文给大家介绍的是Python中函数传参的使用方法及示例,非常的简单实用,有需要的小伙伴可以参考下
    2016-07-07
  • Python 正则表达式入门(中级篇)

    Python 正则表达式入门(中级篇)

    本文主要介绍子表达式,向前向后查找,回溯引用,有需要的朋友可以看下,希望对大家有所帮助
    2016-12-12
  • cv2.getStructuringElement()函数及开、闭、腐蚀、膨胀原理讲解

    cv2.getStructuringElement()函数及开、闭、腐蚀、膨胀原理讲解

    getStructuringElement()函数可用于构造一个特定大小和形状的结构元素,用于图像形态学处理,这篇文章主要介绍了cv2.getStructuringElement()函数及开、闭、腐蚀、膨胀原理讲解的相关资料,需要的朋友可以参考下
    2022-12-12
  • Python中的ConfigParser模块使用详解

    Python中的ConfigParser模块使用详解

    这篇文章主要介绍了Python中的ConfigParser模块的使用,ConfigParser模块主要被用来读写配置模块,需要的朋友可以参考下
    2015-05-05
  • python读写文件write和flush的实现方式

    python读写文件write和flush的实现方式

    今天小编就为大家分享一篇python读写文件write和flush的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • 关于Python的GPU编程实例近邻表计算的讲解

    关于Python的GPU编程实例近邻表计算的讲解

    本文主要讲解了Python的GPU编程实例近邻表计算,通过一个近邻表计算的案例,给出了适用于GPU加速的计算场景。需要了解的朋友可以参考一下这篇文章
    2021-08-08

最新评论