美文网首页GIS与机器学习深度学习
基于Python的机器学习深度学习一维或多维数据集排列顺序随机打

基于Python的机器学习深度学习一维或多维数据集排列顺序随机打

作者: 疯狂学习GIS | 来源:发表于2021-08-19 19:22 被阅读0次

    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的机器学习深度学习一维或多维数据集排列顺序随机打

        本文链接:https://www.haomeiwen.com/subject/fymabltx.html