首页 > 编程语言 >机器学习数据顺序随机打乱:Python实现

机器学习数据顺序随机打乱:Python实现

时间:2023-05-22 12:22:38浏览次数:42  
标签:训练 Python 数据 打乱 随机 一维 TrainX TrainY

  本文介绍基于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格式的训练数据标签。但是经过这种方法,我们得到的DatasetsDataset类的数据,若是接下来需要带入input_fn还可以,如果想单独取出TrainXTrainY的话就比较麻烦。

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

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

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

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

  至此,大功告成。

标签:训练,Python,数据,打乱,随机,一维,TrainX,TrainY
From: https://www.cnblogs.com/fkxxgis/p/17420284.html

相关文章

  • python 办公常用一:从文本文件中提取手机号码
    python办公常用一、从文本文件中提取手机号码给定一个文本文件从中提取所有手机号码importredefmain():withopen(path,encoding="utf-8")asf:data=f.read()res=re.findall(r'(?:13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-3......
  • Python 4-05 sys
    syssys模块主要是针对与Python解释器相关的变量和方法,不是主机操作系统。导入方式:importsys属性及方法使用说明sys.argv获取命令行参数列表,第一个元素是程序本身sys.exit(n)退出Python程序,exit(0)表示正常退出。当参数非0时,会引发一个SystemExit异常,可以在程序中捕获该异......
  • Python 4-07 jieba
    https://github.com/felinx/jieba"结巴"中文分词一、jiebaclassTokenizer(object):#分词器defcut(self,sentence,cut_all=False,HMM=True,use_paddle=False):"""Themainfunctionthatsegmentsanentiresentencethatconta......
  • Python 1-19 集合
    Python1-19集合集合(set)是一个无序的不重复元素序列。创建集合,使用{}或者set(),注意:创建一个空集合必须用set(),因为{}是用来创建一个空字典。parame={value01,value02,...}或者set(value)>>>basket={'apple','orange','apple','pear','orange�......
  • Python 2-04 匿名函数
    Python匿名函数一、匿名函数lambdaλlambda[args]:expression即lambda[参数列表]:表达式lambda_add=lambdax,y:x+ydefnormal_add(x,y):returnx+yassertlambda_add(2,3)==normal_add(2,3)注:assertexpression[,arguments]即:assert表达式......
  • Python 1-14 列表
    Python1-14列表一、Python列表Python的列表是一个有序可重复的元素集合classlist([iterable])虽然被称为函数,list实际上是一种可变序列类型。1、创建创建一个列表,在方括号括中用逗号分隔不同的数据项。列表内的元素,可以是其它任意类型的数据,可多层嵌套列表,元素个数无限制。>>......
  • Python 1-14 列表
    Python1-14列表一、Python列表Python的列表是一个有序可重复的元素集合classlist([iterable])虽然被称为函数,list实际上是一种可变序列类型。1、创建创建一个列表,在方括号括中用逗号分隔不同的数据项。列表内的元素,可以是其它任意类型的数据,可多层嵌套列表,元素个数无限制。>>......
  • Python 2-03 递推和递归
    递推和递归一、递推算法Recursionmethod递推算法是通过已知条件,利用特定关系得出中间推论,直至得到结果的算法。递推算法分为顺推和逆推两种。动态规划1、顺推法所谓顺推法是从已知条件出发,逐步推算出要解决的问题的方法叫顺推。#n!阶乘deffactorial(n):t=1fori......
  • Python 2-07 装饰器 @decorator
    Python装饰器@decoratorPython装饰器其实就是对函数的包装,函数作为参数,在不修改函数源代码的基础上,并对函数做一些包装,然后返回增加了包装的函数,即生成了一个新函数。登录校验,权限校验,日志记录等,这些功能在各个环节都可能需要,但又十分雷同,可以通过装饰器来抽象、剥离这部分代码......
  • Python 4-09 time
    time 在 Python 中与时间处理有关的模块包括 time,datetime 以及 calendar。在 Python 中,用三种方式来表示时间,分别是时间戳、格式化时间字符串和结构化时间。时间戳(timestamp):1970年1月1日之后的秒,可以通过 time.time() 获得。时间戳是一个浮点数,可以进行加减运算,但......