本文介绍基于Python语言,实现机器学习、深度学习等模型训练时,数据集打乱的具体操作。

1 为什么要打乱数据集

  在机器学习中,如果不进行数据集的打乱,则可能导致模型在训练过程中出现具有“偏见”的情况,降低其泛化能力,从而降低训练精度。例如,如果我们做深度学习的分类,其中初始数据的前80%都是第一类,后20%都是第二类,那么如果我们不打乱数据,模型按照数据顺序依次加以训练,则在前面大部分数据中训练出来的结果都是第一类(即形成了惯性,模型认为这些数据只对应着第一类);而到后20%数据进行训练时,所得结果也往往全都为第一类;所以要打乱。

2 如何打乱

  首先引入random。

import random

2.1 数据特征与标签均为一维

DataIndex=[i for i in range(len(TrainX))]
random.shuffle(DataIndex)
TrainX=TrainX[DataIndex]
TrainY=TrainY[DataIndex]

  其中,TrainX为一维的训练数据特征,TrainY为一维的训练数据标签。

2.2 数据特征为多维而标签为一维

Datasets=tf.data.Dataset.from_tensor_slices((dict(TrainX),TrainY))
Datasets=Datasets.shuffle(1000)

  其中,TrainX需要为多维DataFrame格式的训练数据特征,TrainY为一维Series格式的训练数据标签。但是经过这种方法,我们得到的Datasets为Dataset类的数据,若是接下来需要带入input_fn还可以,如果想单独取出TrainX和TrainY的话就比较麻烦。

  因此,我们还可以直接在初始数据划分训练集与测试集时直接将数据打乱:

TrainData=MyData.sample(frac=TrainFrac,random_state=RandomSeed)
TestData=MyData.drop(TrainData.index)

  其中,MyData为初始全部数据,TrainData与TestData分别为划分后的训练集与测试集数据。

  经过.sample()这一步骤,与原始数据的Index相比,实际上已经实现了TrainData与TestData的随机排列。

  至此,大功告成。

机器学习数据顺序随机打乱:Python实现的更多相关文章

  1. N个整数(数的大小为0-255)的序列,把它们加密为K个整数(数的大小为0-255).再将K个整数顺序随机打乱,使得可以从这乱序的K个整数中解码出原序列。设计加密解密算法,且要求K<=15*N.

    N个整数(数的大小为0-255)的序列,把它们加密为K个整数(数的大小为0-255).再将K个整数顺序随机打乱,使得可以从这乱序的K个整数中解码出原序列.设计加密解密算法,且要求K<=15*N. ...

  2. C++将数组的元素顺序随机打乱

    参考: https://blog.csdn.net/cordova/article/details/52884399 https://zhidao.baidu.com/question/1604258 ...

  3. MSSQL 复制数据 并随机打乱写入

    select * into temp from XX order by newid() -- 复制表结构 truncate table XX -- 清空表 SET IDENTITY_INSERT XX ...

  4. Python 如何随机打乱列表(List)排序

    场景: 现在有一个list:[1,2,3,4,5,6],我需要把这个list在输出的时候,是以一种随机打乱的形式输出. 专业点的术语:将一个容器中的数据每次随机逐个遍历一遍. 注意:不是生成一个随机的 ...

  5. Python代码阅读(第10篇):随机打乱列表元素

    本篇阅读的代码实现了随机打乱列表元素的功能,将原有列表乱序排列,并返回一个新的列表(不改变原有列表的顺序). 本篇阅读的代码片段来自于30-seconds-of-python. shuffle fro ...

  6. php保留键随机打乱数组顺序

    最近遇到一个需求,把一个数组随机打乱顺序,我们可以用php的shuffle函数,但是这个函数会把数组的键清空建立新的键,那么我们若想保留键只需要利用shuffle函数再做一下处理就可以了.可以自定义一 ...

  7. 2017数据科学报告:机器学习工程师年薪最高,Python最常用

    2017数据科学报告:机器学习工程师年薪最高,Python最常用 2017-11-03 11:05 数据平台 Kaggle 近日发布了2017 机器学习及数据科学调查报告,针对最受欢迎的编程语言.不同 ...

  8. 营销MM让我讲MySQL日志顺序读写及数据文件随机读写原理

    摘要:你知道吗,MySQL在实际工作时候的两种数据读写机制? 本文分享自华为云社区<MySQL日志顺序读写及数据文件随机读写原理>,作者:JavaEdge . MySQL在实际工作时候的两 ...

  9. python yaml文件数据按原有的数据顺序dump

    yml文件的更新后工具类: import os import yaml class YamlUtils(): def __init__(self,folder_name='config'): self ...

  10. C#随机打乱列表List元素顺序

    C#随机打乱列表List项目顺序 以下泛型扩展方法,实现了随机打乱泛型列表List<T>的功能 public static List<t> DisorderItems<t ...

随机推荐

  1. superset连接mysql数据

    目前superset的官网没给出windows的安装教程,但是实际操作是可以的,网上有很多教程,再次就不赘述! 本篇随笔是介绍superset如何连接mysql数据源,本人踩坑踩了一整天.=_= ~~ ...

  2. Java(单元测试,反射)

    单元测试.反射 一.单元测试 1.1 单元测试快速入门 所谓单元测试,就是针对最小的功能单元,编写测试代码对其进行正确性测试. 我们想想,咱们之前是怎么进行测试的呢? 比如说我们写了一个学生管理系统, ...

  3. .NET周报 【3月第2期 2023-03-12】

    国内文章 ASP.NET Core中如何限制响应发送速率(不是调用频率) https://www.cnblogs.com/coredx/p/17195492.html ASP.NET Core中有很多 ...

  4. Android笔记-跳转到相册选择图片

    跳转到相册选择图片 即设置一个点击事件,点击之后即可跳转到相册进行图片的选择 具体的实现步骤: 界面很简单的啦,这里就直接将源代码放出来啦: <?xml version="1.0&qu ...

  5. markdown空格缩进以及HTML空格实体

    参考链接:https://www.jianshu.com/p/31eade263e7a https://www.cnblogs.com/naixil/p/13193364.html

  6. 如何在 Apinto 实现 HTTP 与gRPC 的协议转换 (下)

    上文给大家详细介绍了在 Apinto 上实现 HTTP 与 gRPC 的协议转换的基本内容,本篇我们将继续讲解如何在 Apinto-Dashboard 中进行配置. 配置 Apinto Apinto ...

  7. 从零开始学Java系列之Java是什么?它到底是个啥?

    全文大约[5000]字,不说废话,只讲可以让你学到技术.明白原理的纯干货!文章带有丰富案例及配图,只为让你更好的理解和运用文中的技术概念,给你带来具有足够的思想启迪...... ----------- ...

  8. 多台服务器之间配置ssh免密登录

    需求:假设有N台服务器,N台服务器之间都需要配置相互间免密登录 步骤1:在一台服务器上安装ansible yum -y install epel-release &&  yum -y ...

  9. flutter系列之:在flutter中使用相机拍摄照片

    目录 简介 使用相机前的准备工作 在flutter中使用camera 总结 简介 在app中使用相机肯定是再平常不过的一项事情了,相机肯定涉及到了底层原生代码的调用,那么在flutter中如何快速简单 ...

  10. Mybatis 获取自增主键 useGeneratedKeys与keyProperty 解答

    Mybatis 获取自增主键 今天开发的时候遇到一个疑惑,业务场景是这样的, 但是百度好久没有找到合适的解答,于是自己向同事了解,感觉还不错,因此写上了这个文章 有一个表A和一个表B A就是一个主表, ...