zoukankan      html  css  js  c++  java
  • 打乱数据集的方法

    原始数据存在一定的分布规律,所以学习曲线不平滑,如果数据量够大的话,打乱后会呈现随机分布,学习后更能体现样本的共性。为了加强模型的泛化能力,有时候需要打乱数据集(包括特征数据和标签),但是显然还是要保证每一条数据中的特征数据和标签的对应关系
    可以进行如下操作:
    1.通过随机化index

    import random
    index = [i for i in range(len(data))] 
    random.shuffle(index)
    data = data[index]
    label = label[index]
    

    2.将数据集 特征数据和标签先整合成一个array再随机化行的顺序

    s_data = np.array([data, labels])#假设data和labels均为二维数组
    s_data = s_data.transpose(1,0,2)
    np.random.shuffle(s_data)
    data = s_data[:,0,:]     
    labels = s_data[:,1,:]
    

    PS:numpy中函数shuffle与permutation都是对原来的数组随机打乱原来的顺序,shuffle中文含义为洗牌,permutation中文含义为排列,区别在于shuffle直接在原来的数组上进行操作,改变原来数组的顺序,无返回值。而permutation不直接在原来的数组上进行操作,而是返回一个新的打乱顺序的数组,并不改变原来的数组。

    import numpy as np
    a = np.arange(9)
    print("a:",a)
    np.random.shuffle(a)
    print("a:",a)
    b = np.random.permutation(a)
    print("b:",b)
    print("a:",a)
    

    输出为:

    a: [0 1 2 3 4 5 6 7 8]
    a: [1 7 8 0 5 3 2 4 6]
    b: [5 1 8 3 6 4 2 7 0]
    a: [1 7 8 0 5 3 2 4 6]
    
  • 相关阅读:
    网站宣传【免费】
    gridview行链接
    提前预告
    C#中var、int、object性能比较
    20部软件测试视频教程整合
    PO、VO、DTO、POJO
    云计算、虚拟化、容器
    Linux打包和压缩的区别
    Linux之Shell定时备份数据库
    luogu P1997 faebdc的烦恼 | 莫队
  • 原文地址:https://www.cnblogs.com/hayley111/p/13692522.html
Copyright © 2011-2022 走看看