精华内容
下载资源
问答
  • Python实现分层抽样

    千次阅读 2019-05-21 17:56:47
    我想做的是从每一个类标记中随机抽出1000个标签。如果该类标签下的样本数不足1000,则全部抽取。然后将抽取的结果保存到另一个文件中。 具体代码如下(尽可能减少内存占用量,但是文件扫描次数太多): import ...

    首先说明一下我的需求。result_33.txt的文件中有一些号码标签及分类的标记。具体如下

    中国农业银行 银行
    招商银行信用卡 信用卡
    门窗 无关

    我想做的是从每一个类标记中随机抽出1000个标签。如果该类标签下的样本数不足1000,则全部抽取。然后将抽取的结果保存到另一个文件中。

    具体代码如下(尽可能减少内存占用量,但是文件扫描次数太多):

    import random
    if __name__ == '__main__':
        data={}
        with open("result_33.txt",'r',encoding='utf-8-sig') as r_dict,\
            open('check_result_33.txt','w',encoding='utf-8') as w_dict:
            for line in r_dict:
                items=line.strip('\n').split()
                data[items[1]]=data.get(items[1],0)+1
            for key,value in data.items():
                r_dict.seek(0)  # 返回文件开始位置
                if value<1000:
                    for line in r_dict:
                        if key==line.strip('\n').split()[1]:
                            w_dict.write(line)
                else:
                    rand_list=list(range(value))
                    random.shuffle(rand_list)
                    rand_list=iter(rand_list)
                    for line in r_dict:
                        if key==line.strip('\n').split()[1] and next(rand_list)<1000:
                            w_dict.write(line)

     

    展开全文
  • 主要介绍了python实现的分层随机抽样案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • python实现的分层随机抽样

    万次阅读 2017-05-13 11:30:11
    昨天写了一段用来做分层随机抽样的代码,很粗糙,不过用公司的2万名导购名单试了一下,结果感人,我觉得此刻的我已经要上天了,哈哈哈哈哈哈 代码如下: #分层随机抽样 stratified sampling import xlrd,...

    昨天写了一段用来做分层随机抽样的代码,很粗糙,不过用公司的2万名导购名单试了一下,结果感人,我觉得此刻的我已经要上天了,哈哈哈哈哈哈


    代码如下:

    #分层随机抽样 stratified sampling



    import xlrd, xlwt, time, random


    xl = xlrd.open_workbook(r'C:\Users\Administrator\Desktop\分层抽样.xlsx')
    xl_sht1 = xl.sheets()[0]
    xl_sht1_nrows = xl_sht1.nrows
    #表头
    title = xl_sht1.row_values(0)
    #把样本写进列表 sample
    sample = []
    for i in range(xl_sht1_nrows):
        sample.append(xl_sht1.row_values(i))
    #打乱样本
    random.shuffle(sample)
    #把层的内容写进列表 col
    col = xl_sht1.col_values(0)
    #对col中的内容进行计数,获得每一类的名称对应个数的字典
    col_dict = {}
    for i in col:
        col_dict[i] = col_dict.get(i, 0) + 1
    p = eval(input('每层抽取的比例(小数):'))
    #获得每一类的名称对应抽取个数的字典
    col_p = {}
    k = 0
    for i in col_dict.keys():
        col_p[i] = int(round(col_dict[i] * p))  #round用来四舍五入,不加int结果会变成无数个p
    #开始抽样,把抽取结果写进result_l列表
    result_l = []
    for i in sample:
        if col_p.get(i[0], 0) > 0:
            result_l.append(i)
            col_p[i[0]] -= 1
    #新建文档,写入结果
    f = xlwt.Workbook()
    f_sht1 = f.add_sheet('result')
    n = 0
    for i in title:
        f_sht1.write(0, n, i)
        n += 1
    r = 1
    for i in result_l:
        c = 0
        for k in i:
            f_sht1.write(r, c, k)
            c += 1
        r += 1
    nowtime = time.strftime("%Y%m%d_%H%M%S", time.localtime())
    f.save(r'C:\Users\Administrator\Desktop\Result_{0}.xls'.format(nowtime))
    print('\n抽样成功!')

    input()

    原理思路如下:

    1、首先数据的形式如下

    数据自带层标签,我只需要从每层抽取一定比例的数据就可以了

    2、第一步:先将源数据按行存入一个列表,然后打乱行的顺序

    3、第二步:对层标签进行计数,获取每一个层标签的总数,并将结果存进字典

    4、第三步:根据抽样比例p,计算出每层实际应抽取的个数,并存入一个新的字典

    5、第四步:从源数据列表中抽取出目标数据,每层抽取的个数由第三步的字典进行指定


    小白刚刚起步,实现的时候发现自己对数据结构和算法一点也不懂。。。。结果就写了一堆的for循环。。。。

    大神们如果看到这段代码,还请不吝赐教,看看代码可以怎样优化,或者有更好的设计思路

    展开全文
  • Python——数据分层抽样

    千次阅读 2020-07-17 16:41:28
    分层抽样,即先将所有个体样本按照某种特征划分为几个类别,然后从每个类别中使用随机抽样或等距抽样的方法选择个体组成样本。 分层抽样能明显的降低抽样误差,并且便于针对不同类别的数据样本进行单独研究,因此是...

    分层抽样,即先将所有个体样本按照某种特征划分为几个类别,然后从每个类别中使用随机抽样或等距抽样的方法选择个体组成样本。
    分层抽样能明显的降低抽样误差,并且便于针对不同类别的数据样本进行单独研究,因此是一种较好的实现方法。

    该方法适用于带有分类逻辑的属性、标签等特征的数据

    有数据如下:
    在这里插入图片描述最后一列为分类标签,用0或者1来表示

    导入包

    import numpy as np
    import random
    

    读取数据,并查看分类标签

    data2 = np.loadtxt('data_preprocessing_data2.txt') # 导入带有分层逻辑的数据
    each_sample_count = 20 # 定义每个分层的抽样数量
    label_data_unique = np.unique(data2[:, -1]) # 定义分层值域
    print(label_data_unique)#[0. 1.],数据一共被分为两个标签
    

    遍历每个分层标签,用来做数据的分层划分,并且读取每条数据并判断数据的分层标签是否与分层标签相同,如果是则数据加入到各分层数据列表中

    sample_data = [] # 定义空列表,用于存放最终抽样数据
    sample_dict = {} # 定义空字典,用来显示各分层样本数量
    
    for label_data in label_data_unique: # 遍历每个分层标签
    	sample_list = [] # 定义空列表,用于存放临时分层数据
    	for data_tmp in data2: # 读取每条数据
    		if data_tmp[-1] == label_data: # 如果数据最后一列等于标签
    			sample_list.append(data_tmp) # 将数据加入到分层数据中
    	each_sample_data = random.sample(sample_list, each_sample_count) # 对每层数据都随机抽样
    	sample_data.extend(each_sample_data) # 将抽样数据追加到总体样本集
    	sample_dict[label_data] = len(each_sample_data) # 样本集统计结果
    print (sample_dict) # 打印输出样本集统计结果
    
    展开全文
  • 随机抽样:按照一定的行数或者比例进行数据的抽取 随机抽样行数公式: DataFrame.sample(n,frac,replace=False)  n 按个数抽样  frac 按百分比抽样  replace 是否放回抽样,默认false为不放回 import numpy ...

    随机抽样:按照一定的行数或者比例进行数据的抽取

    随机抽样行数公式:

    DataFrame.sample(n,frac,replace=False)

        n  按个数抽样
        frac 按百分比抽样
        replace 是否放回抽样,默认false为不放回

    import numpy

    # 设置随机种子seed( ) 
    # 用于指定随机数生成时所用算法开始的整数值,
    # 如果使用相同的seed( )值,则每次生成的随即数都相同,
    # 如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。

    numpy.random.seed(seed=2)

    1、 按照个数抽样

    data.sample(n=10)

    2、按照百分比进行抽样

    data.sample(frac=0.02)

    3、有放回的抽样,有可能两次抽到同样的数据

    data.sample(n=10,replace=True)


    4、典型抽样 分成抽样
     

    numpy.random.seed(seed=2) # 如果使用相同的seed( )值,则每次生成的随即数都相同,
    
    # 用groupby进行数据的分组,根据班级
    
    gbr=data.groupby('class')
    
    # 获取分组后gbr的数据
    
    gbr.groups
    
    # 分层抽样字典定义 组名:数据个数
    
    typicalNDict={
            1:2,
            2:4,
            3:6
            }
    
    #函数定义
    
    def typicalsamling(group,typicalNDict):
        name=group.name
        n=typicalNDict[name]
        return group.sample(n=n)
    
    result=data.groupby(
            'class',group_keys=False
            ).apply(typicalsamling,typicalNDict)
    
       
        返回值:抽样后的数据框

     

    展开全文
  •    抽样调查在 统计学 与 Python数据分析/数据挖掘/数据科学 中非常常用,在实际业务中也是高频刚需,而 Python 并没有专有的抽样方法库,所以将自己以前的笔记汇总到自写库中,用到时直接调用函数即可,快速且...
  • Python中如何实现分层抽样

    万次阅读 2017-07-14 08:41:31
    Python中如何实现分层抽样 在我们日常的数据分析工作中,常用到随机抽样这一数据获取的方法。 如果我们想在一个大的数据总体中,按照数据的不同分类进行分层抽样,在Python中如何用代码来实现这一操作呢。 下面我们...
  • 随机抽样的三种模型(简单随机抽样、分层抽样、系统抽样),自定义封装函数直接调用1 抽样方法2 抽样函数3 python实操3.1 简单随机抽样3.2 分层抽样3.3 系统抽样4 总结 1 抽样方法 具体的抽样方法有三种。即简单随机...
  • 1、简单随机抽样 #简单随机抽样,整体10000个样本 import random import numpy as np import pandas as pd data=np.loadtxt('data3.txt') len(data) data_sample=random.sample(data.tolist(),2000) #随机抽取...
  • 在进行数据处理时,我们有时需要在大量的样本中抽取出部分数据作为数据集进行模型训练或者模型验证,因此在本文中介绍分层抽样方法的python代码实现。 分层抽样分层抽样法也叫类型抽样法。它是从一个可以分成不同...
  • ba=pandas.read_csv('D://Python projects//reference data//4.8//data.csv') bc=ba['id|comments|title'].str.split('|',3,True) #单条件抽取 bc.columns=['id','comments','title'] #将字符型转成整数型 bc['...
  • 对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。 作者:宋星云中国科学院心理研究所硕士,R语言爱好者。已有多年...
  • 在进行数据处理时,我们有时需要在大量的样本中抽取出部分数据作为数据集进行模型训练或者模型验证,因此在本文中介绍分层抽样方法的python代码实现。 分层抽样分层抽样法也叫类型抽样法。它是从一个可以分成不同...
  • Python生成随机数及SAS随机分组/抽样/编盲前言Python生成随机数SAS以及Python实现随机抽样SAS简单随机化SAS区组随机化SAS分层区组随机化 前言 临床试验中,随机双盲对照试验,被称为是现代医学判断疗效的“金标准”...
  • python抽样方法详解及实现

    万次阅读 多人点赞 2019-09-03 23:21:02
    随机抽样—总体个数较少 每个抽样单元被抽中的概率...分层抽样是指在抽样时,将总体分成互不相交 [2] 的层,然后按照一定的比例,从各层独立地抽取一定数量的个体,将各层取出的个体合在一起作为样本的方法。层内...
  • 何为数据抽样: 抽样是数据处理的一种基本方法,常常伴随着计算资源不足、获取全部数据困难、时效性要求等情况使用。 抽样方法: ...分层抽样 先按照观察指标影响较大的某一种特征,将总体分若干个类别
  • 分层随机抽样:在四边形内生成N×N的网格,并在每个层内选择M个随机点 除了生成样本外,Morsel还包含可用于生成访问每个样本点的有效路径的工具。 Python示例 from morsel . entities import Vector , Triangle , ...
  • 拉丁超立方采样是一种分层的蒙特卡洛采样方法,适用于多维空间均匀采样,适合于样本数较少的情况下使用。[1] 采样思想为:假设系统有m个因素,每个因素有n个水平。首先每个因素的设计空间将会被分为n个子空间,在每...
  • 目录 1.数据取样 (1)抽取标准 (2)抽样方法 2.数据整理 (1)数据探索 ...随机抽样:若数据集中每组观察值都有相同被抽样概率,则可...分层抽样:首先将样本总体分成若干层次(或者若干子集)。每个层次中的...
  • python 进行各种回归

    2020-12-20 22:51:45
    ##学会了数据分层抽样,以及各种回归的代码书写。可能还需要注意调参等。 继续学习网址:使用sklearn做各种回归 数据准备 from matplotlib import pyplot as plt %matplotlib inline plt.style.use('fivethirtyeight...
  • 常用的采样算法有以下几种(来自百度知道): 一、单纯随机抽样(simple random sampling) 将调查总体全部观察单位编号,再用抽签法或随机数字表随机抽取部分观察单位组成样本。 优点:操作简单,均数、率及相应...
  • Python -双样本T检验

    2021-04-09 20:15:41
    (简单随机抽样即可,分层随机抽样最好) 当然,决策树也可以用来直接判断(不过在目前情况下大可不必) 代码示范: import pandas as pd import os import numpy as np import matplotlib.pyplot
  • 实习结束后补一下数据分析概念相关知识: 第三章 第四章 数据挖掘建模过程 ...抽样的常见方式:随机抽样、等距抽样、分层抽样、从起始顺序抽样、分类抽样 数据探索 主要包括:异常值分析、缺失值分析、相关...
  • 聚四氟乙烯 HTFE 是 HTM(分层时间存储器)的衍生物,面向高性能 GPU 序列预测... 这也大大减少了遗忘,并且意味着不需要随机抽样。 它还具有循环隐藏到隐藏节点的连接,因此它可以处理部分可观察性。 单层 HTFE 如下
  • (简单随机抽样即可,分层随机抽样最好) 当然,决策树也可以用来直接判断(不过在目前情况下大可不必) 有木有觉得以上描述特别熟悉呀~,没有错,其实方差分析和我们双样本T检验是亲戚。应用场景和应用条件非常类似...
  • 划分训练集与测试集 在进行划分训练集与测试集...2、有时候某个特征对研究对象目标非常的重要,为了使得模型有广泛性,此时划分测试集与训练集的时候需要着重考虑该特征的分布均衡性—分层抽样 随机抽样 1、 利用skl...
  • 经常使用的採样算法有下面几种(来自百度知道): 一、单纯随机抽样(simple random sampling) 将调查整体所有观察单位编号,再用抽签法或随机数字表随机抽取部分观察单位组成样本。 长处:操作简单,均数、率及...

空空如也

空空如也

1 2
收藏数 38
精华内容 15
关键字:

python随机分层抽样

python 订阅