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

机器,学习,数据,顺序,随机,打乱,python,实现 · 浏览次数 : 184

小编点评

**为什么要打乱数据集?** 在机器学习中,如果数据集没有进行打乱,模型在训练过程中可能导致模型在训练过程中出现具有“偏见”的情况,降低其泛化能力,从而降低训练精度。例如,如果我们做深度学习的分类,其中初始数据的前80%都是第一类,后20%都是第二类,那么如果我们不打乱数据,模型按照数据顺序依次加以训练,则在前面大部分数据中训练出的结果都是第一类(即形成了惯性,模型认为这些数据只对应着第一类);而到后20%数据进行训练时,所得结果也往往全都为第一类;所以要打乱。 **如何打乱?** 1. 使用 `random.shuffle(DataIndex)` 等方法随机排列数据索引。 2. 将训练数据特征 `TrainX` 和标签数据 `TrainY` 从索引中随机选择。 3. 使用 `tf.data.Dataset.from_tensor_slices((dict(TrainX),TrainY))` 创建一个数据集。 4. 使用 `shuffle(1000)` 等方法随机排列数据集。 5. 使用 `MyData.sample(frac=TrainFrac,random_state=RandomSeed)` 和 `MyData.drop(TrainData.index)` 等方法对训练集和测试集进行数据划分。

正文

  本文介绍基于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实现相似的内容:

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

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

算法金 | 选择最佳机器学习模型的 10 步指南

大侠幸会,在下全网同名[算法金] 0 基础转 AI 上岸,多个算法赛 Top [日更万日,让更多人享受智能乐趣] 机器学习和数据科学领域的工作充满挑战和乐趣,在我踏上人工智能探索之路的初期,我对能够参与项目感到无比兴奋。 我满怀热情,我急切地想投身于这些项目中。但是,我尝试开展项目,却发现在寻求顺利

算法金 | 一文彻底理解机器学习 ROC-AUC 指标

​ 大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 在机器学习和数据科学的江湖中,评估模型的好坏是非常关键的一环。而 ROC(Receiver Operating Characteristic)曲线和 AUC(Area Under C

29.4K star! 仅需几行代码快速构建机器学习 Web 应用项目,无需前端技能!

大家好,我是狂师! 今天给大家推荐一款开源的Python库:Gradio! Gradio是一个开源的Python库,用于创建机器学习和数据科学的交互式应用和演示。 项目地址: https://github.com/gradio-app/gradio 1、项目介绍 Gradio旨在简化展示和测试机器学

[大数据][机器学习]之Model Card(模型卡片)介绍

每当我们在公有云或者私有云发布训练好的大数据模型,为了方便大家辨识、理解和运用,参照huggingface所制定的标准制作一个Model Card展示页,是种非常好的模型展示和组织形式。 下面就是一个Model Card 的示例,我试着把它翻译成了中文,源网址,并且提供了Markdown的模板,供大

算法金 | 详解过拟合和欠拟合!性感妩媚 VS 大杀四方

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 今天我们来战 过拟合和欠拟合,特别是令江湖侠客闻风丧胆的 过拟合,简称过儿, Emmm 过儿听起来有点怪怪的 1. 楔子 机器学习模型是一种能够从数据中学习规律并进行预测的算法。我们希望

使用Mask R-CNN模型实现人体关键节点标注

摘要:在本案例中,我们将展示如何对基础的Mask R-CNN进行扩展,完成人体关键节点标注的任务。 本文分享自华为云社区《使用Mask R-CNN模型实现人体关键节点标注》,作者: 运气男孩。 前言 ModelArts 是面向开发者的一站式 AI 开发平台,为机器学习与深度学习提供海量数据预处理及交

机器学习(一)——递归特征消除法实现SVM(matlab)

机器学习方法对多维特征数据进行分类:本文用到非常经典的机器学习方法,使用递归特征消除进行特征选择,使用支持向量机构建分类模型,使用留一交叉验证的方法来评判模型的性能。 构建模型:支持向量机(Support Vector Machine,SVM); 特征选择:递归特征消除(Recursive Feat

迁移学习:互信息的变分上下界

在机器学习,尤其是涉及异构数据的迁移学习/联邦学习中,我们常常会涉及互信息相关的优化项,我上半年的第一份工作也是致力于此。其思想虽然简单,但其具体的估计与优化手段而言却大有门道,我们今天来好好总结一下,也算是对我研一下学期一个收尾。为了解决互信息估计的的难解性,我们的方法是不直接对互信息进行估计,而...

机器学习-周志华

第一章 绪论 机器学习: 致力于研究如何通过计算的手段,利用经验来改善系统自身的性能。在计算机系统中,“经验”通常以“数据“形式存在,因此,机器学习所研究的主要内容,是关于在计算机上从数据中产生”模型“的算法,即”学习算法“。有了学习算法,我们把经验数据提供给它,他就能基于这些数据产生模型;在面对新