数据集划分及简介 --训练集、测试集、验证集(开发集)

机器学习算法流程及数据集的简介

机器学习是一种数据驱动型的建模方法,可以根据已知数据,分析得到输入与输出之间的依赖关系,进而对未知数据进行预测。下图为机器学习算法流程图:
在这里插入图片描述

一般将数据集划分成训练集、测试集、验证集(开发集)或者只划分成训练集和测试集,其中训练数据集主要用于训练机器学习模型,测试集用于模型的预测,验证集用于评估已训练好的模型结果,进而辅助模型调参。这里的调参一般是超参数的调节,超参数通俗的讲就是在训练神经网络前必须设定的参数,例如卷积神经网络中的卷积核尺寸、步幅等,学习率等,具体参数可以参考链接: 神经网络的超参数

按比例划分数据集(按照句子级别)

按照8:1:1比例划分数据集,下面展示一些代码:

# -*- coding: utf-8 -*-
"""
Created on Fri Jul 31 16:26:46 2020
随机将数据集按照句子级别划分训练集、测试集、验证集
@author: jpcheng2
"""
import random
def split(all_list, shuffle=False, ratio=0.8,ratio1 = 0.9):
    num = len(all_list)
    offset = int(num * ratio)
    offset1 = int(num * ratio1)
    if num == 0 or offset < 1:
        return [], all_list
    if shuffle:
        random.shuffle(all_list)  # 列表随机排序
    train = all_list[:offset]
    test = all_list[offset:offset1]
    dev = all_list[offset1:]
    return train, test,dev

def file_shffle_split(file,train,test,dev):
    infilm = open(file, 'r', encoding='utf-8')
    trainfilm = open(train, 'w+', encoding='utf-8')
    testfilm = open(test, 'w+', encoding='utf-8')
    devfilm = open(dev, 'w+', encoding='utf-8')
    li = []
    sentence=[]
    for data in infilm.readlines():
        if data!= '\n':
            li.append(data)
        else:
            sentence.append(li)
            li = []
    traindatas, testdatas,devdatas = split(sentence, shuffle=True, ratio=0.6,ratio1=0.8)
    #写入训练集
    for sentence in traindatas:
        for word in sentence:
            trainfilm.write(word)
        trainfilm.write('\n')
    #写入测试集
    for sentence in testdatas:
        for word in sentence:
            testfilm.write(word)
        testfilm.write('\n')
    #写入验证集
    for sentence in devdatas:
        for word in sentence:
            devfilm.write(word)
        devfilm.write('\n')
    infilm.close()
    trainfilm.close()
    testfilm.close()
    devfilm.close()
    
file_shffle_split('microsoft_test.txt','0001_train.txt','0001_test.txt','0001_dev.txt')

输入一个文件:microsoft_test.txt
输出三个文件:‘0001_train.txt’,
‘0001_test.txt’,
‘0001_dev.txt’

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值