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]
    
  • 相关阅读:
    nginx把POST转GET请求解决405问题
    Redis安装与配置
    SQL语句-SELECT语句
    SQL语句-delete语句
    SQL语句-UPDATE语句
    SQL语句-INSERT语句
    SQL语句-create语句
    MySQL权限详解
    GTID复制详解
    ansible-playbook的应用实例
  • 原文地址:https://www.cnblogs.com/hayley111/p/13692522.html
Copyright © 2011-2022 走看看