资源经验分享数据预处理-采样

数据预处理-采样

2019-12-12 | |  103 |   0

原标题:数据预处理-采样

原文来自:博客园      原文链接:https://www.cnblogs.com/xuxiaowen1990/p/10774268.html


采样就是按照某种规则从数据集中挑选样本数据,大致分为3类:随机采样、系统采样和分层采样。

随机采样:就是从数据集中随机的抽取特定数量的数据,分为有放回和无放回两种。


import randomdef noRepetRandomSampling(dataMat,number):    '''
    无放回采样
    :param dataMat: 数据集
    :param number: 采样数
    :return: sample 采样到的数据    '''    try:
        length = len(dataMat)
        sample = random.sample(dataMat, number)        return sample    except Exception as e:        print(e)def repetRandomSampling(dataMat,number):    '''
    有放回采样
    :param dataMat: 数据集
    :param number: 采样数
    :return: sample 采样到的数据    '''
    sample = []
    i = 0    while(i<number):
        sample.append(dataMat[random.randint(0,len(dataMat)-1)])  #randint的范围是a<=x<=b,包括上限,注意要减一
        i+=1    return sample


系统采样:一般是无放回抽样,又称等距采样,先将总体数据集按顺序分成n小份,再从每小份抽取第k个数据。


import randomdef systemSampling(dataMat,number):    '''
    系统采样
    :param dataMat: 数据集
    :param number: 采样数
    :return: sample 采样到的数据    '''
    length=len(dataMat)
    k=int(length/number)
    sample=[]
    i=0    if k>0:        while (i<number):
            sample.append(dataMat[0+i*k])
            i+=1        return sample    else:        return repetRandomSampling(dataMat,number)


分层采样:就是先将数据分成若干个类别,再从每一层内随机抽取一定数量的样本,然后将这些样本组合起来。


import randomdef stratifiedSampling(dataMat1,dataMat2,dataMat3,number):    '''
    分层采样
    :param dataMat1: 数据集1
    :param dataMat2: 数据集2
    :param dataMat3: 数据集3
    :param number: 采样数
    :return: sample 采样到的数据    '''
    subNumber=int(number/3)
    sample=[]
    sample.append(noRepetRandomSampling(dataMat1,subNumber))
    sample.append(noRepetRandomSampling(dataMat2,subNumber))
    sample.append(noRepetRandomSampling(dataMat3,subNumber))    return sample


 测试代码:


dataMat=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
dataMat1=[101,102,103,104,105,106,107,108,109,110]
dataMat2=[201,202,203,204,205,206,207,208,209,210]
dataMat3=[301,302,303,304,305,306,307,308,309,310]print(repetRandomSampling(dataMat,6))print(noRepetRandomSampling(dataMat,6))print(systemSampling(dataMat,6))print(stratifiedSampling(dataMat1,dataMat2,dataMat3,6))


运行结果:

E:Anaconda3python.exe E:/数据采样.py
[8, 1, 8, 13, 19, 3]
[14, 8, 5, 1, 17, 16]
[1, 4, 7, 10, 13, 16]
[[108, 105], [201, 208], [301, 308]]

 

以上内容摘自《机器学习实践应用》

免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:Keras Model Sequential模型接口

下一篇:[深度应用]·实战掌握Dlib人脸识别开发教程

用户评价
全部评价

热门资源

  • Python 爬虫(二)...

    所谓爬虫就是模拟客户端发送网络请求,获取网络响...

  • TensorFlow从1到2...

    原文第四篇中,我们介绍了官方的入门案例MNIST,功...

  • TensorFlow从1到2...

    “回归”这个词,既是Regression算法的名称,也代表...

  • 机器学习中的熵、...

    熵 (entropy) 这一词最初来源于热力学。1948年,克...

  • TensorFlow2.0(10...

    前面的博客中我们说过,在加载数据和预处理数据时...