使用sklearn函数对模型进行交叉验证

使用sklearn函数对模型进行交叉验证

交叉验证用来做什么

交叉验证(Cross-Validatio),是用于在驯良过程中对训练模型的性能和参数进行评估选择的技术。

它的意义在于能够充分利用优先的数据集,减少数据分布不均匀以及随机性带来的模型评估误差。

交叉验证的作用就是将数据集分割成多个自己进行多次训练,每次训练的训练集与测试机不完全相同。

sklearn 中的函数

python 复制代码
from sklearn.model_selection import train_test_split, StratifiedKFold, KFold
skf = KFold(n_splits=10, random_state=233, shuffle=True)

n_splits:int, default=5

表示,要分割为多少个K子集

shuffle:bool, default=False

是否打乱数据

random_state:int or RandomState instance, default=None

随机状态,需要配合shuffle参数使用

参考文章 https://blog.csdn.net/weixin_43803950/article/details/120894868

python 复制代码
# 如果有额外的标签,train_path 标签数据,如果标签是跟随train_path,第二个可不填入
skf.split(train_path, train_path)
python 复制代码
   for fold_idx, (train_idx, val_idx) in enumerate(skf.split(train_path, train_path)):
        train_loader = torch.utils.data.DataLoader(
            XunFeiDataset(np.array(train_path)[train_idx],
                          A.Compose([
                              A.RandomRotate90(),
                              A.RandomCrop(120, 120),
                              A.HorizontalFlip(p=0.5),
                              A.RandomContrast(p=0.5),
                              A.RandomBrightnessContrast(p=0.5),
                          ])
                          ), batch_size=8, shuffle=True, num_workers=0, pin_memory=False
        )

        val_loader = torch.utils.data.DataLoader(
            XunFeiDataset(np.array(train_path)[val_idx],
                          A.Compose([
                              A.RandomCrop(120, 120),
                          ])
                          ), batch_size=8, shuffle=False, num_workers=0, pin_memory=False
        )

        for epoch_item in range(30):

            # adjust_learning_rate(optimizer, epoch_item)

            train_loss = train(train_loader, model, criterion, optimizer)

            val_acc = validate(val_loader, model, criterion)

            train_acc = validate(train_loader, model, criterion)

            print(train_loss, train_acc, val_acc)
相关推荐
超级学长15 小时前
光学神经网络:进展与挑战(Optical Neural Networks: Progress and Challenges)
人工智能·深度学习·光学神经网络
HyperAI超神经15 小时前
物理信息机器学习新突破!新型GNN架构可对复杂多体动力系统进行准确预测,赋能机器人/航空航天/材料科学
人工智能·深度学习·机器学习·架构·机器人·cpu·物理
超级学长16 小时前
深度学习在图像处理领域的革命性应用:从原理到实践(深度学习程序开发)
图像处理·人工智能·深度学习·图像分类
Narrastory16 小时前
明日香 - Pytorch 快速入门保姆级教程(五)
人工智能·pytorch·深度学习
中杯可乐多加冰16 小时前
【一点浅思】Transformer架构是否已经触及性能天花板?未来架构突破的方向在哪里?
深度学习·架构·transformer
jghhh0116 小时前
基于ELM极限学习机的风速预测MATLAB实现
深度学习·机器学习·matlab
这张生成的图像能检测吗16 小时前
(论文速读)GPT3:语言模型是一次性学习者
人工智能·深度学习·计算机视觉·自然语言处理·大模型·nlp·注意力机制
AI人工智能+17 小时前
炫彩活体检测技术:通过手机屏幕动态光谱编码和深度学习分析,实现低成本、高精度的身份验证
深度学习·人脸识别·炫彩活体检测
童话名剑17 小时前
YOLO v1(学习笔记)
人工智能·深度学习·yolo·目标检测
xinxiangwangzhi_17 小时前
立体匹配--深度学习方法综述(1)
人工智能·深度学习·计算机视觉