实现多折交叉验证

实 现 多 折 交 叉 验 证 实现多折交叉验证

import numpy as np
import numpy as np
from sklearn.model_selection import KFold
X = np.array([[0, 0], [1, 1], [2, 2], [3, 3],[4, 4], [5, 5]])
#y = np.array([1, 2, 3, 4])
#5折交叉验证
kf = KFold(n_splits=5)

for train_index, test_index in kf.split(X):
    print('train_index:', train_index, 'test_index:', test_index)
    #train_index与test_index为下标
    train_X = X[train_index]
    test_X= X[test_index]
    print("train_X:",train_X)
    print("test_X:",test_X)

在这里插入图片描述

正 经 使 用 版 正经使用版 使

import numpy as np
import os
from sklearn.model_selection import KFold
import os.path as osp


def read_file(path):  # 图片的完整路径
    """从文件夹中读取数据"""
    files_list = os.listdir(path)
    file_path_list = [os.path.join(path, img) for img in files_list]
    file_path_list.sort()  # 图片路径排序
    return file_path_list


def makedir(path):
    # 判断路径是否存在
    isExists = os.path.exists(path)
    if not isExists:
        # 如果不存在,则创建目录(多层)
        os.makedirs(path)
        print('目录:' + path + '创建成功!')
        return True
    else:
        # 如果目录存在则不创建,并提示目录已存在
        print('目录:' + path + '已存在!')
        return False

def make_flods_index(k_num=5,image_path=r"C:\\Users\\29939\\Desktop\\kaggle_肾小球分割\\train\\image" ,mask_path=r"C:\\Users\\29939\\Desktop\\kaggle_肾小球分割\\train\\label"):
    kf = KFold(n_splits=k_num)
    X = read_file(image_path)
    Y = read_file(mask_path)
    for i, (train_index, test_index) in enumerate(kf.split(X)):
        print('train_index:', len(train_index), 'test_index:', len(test_index))
        # # train_index与test_index为下标
        # X = np.array(X)
        # train_X = X[train_index]
        # test_X = X[test_index]
        # print("train_X:", len(train_X))
        # print("test_X:", len(test_X))
        folds_save_train_image_path = r"./folds/" + str(i) + "_fold/train/image/"
        folds_save_train_mask_path = r"./folds/" + str(i) + "_fold/train/mask/"
        folds_save_test_image_path = r"./folds/" + str(i) + "_fold/test/image/"
        folds_save_test_mask_path = r"./folds/" + str(i) + "_fold/test/mask/"
        makedir(folds_save_train_image_path)
        makedir(folds_save_train_mask_path)
        makedir(folds_save_test_image_path)
        makedir(folds_save_test_mask_path)

        for j in train_index:
            train_image = X[j]
            train_mask = Y[j]
            #print(os.path.split(train_mask)[1].split(".")[0])
            np.save(folds_save_train_image_path + os.path.split(train_image)[1].split(".")[0], train_image)
            np.save(folds_save_train_mask_path + os.path.split(train_mask)[1].split(".")[0], train_mask)

        for k in test_index:
            test_image = X[k]
            test_mask = Y[k]
            np.save(folds_save_test_image_path + os.path.split(test_image)[1].split(".")[0], test_image)
            np.save(folds_save_test_mask_path + os.path.split(test_mask)[1].split(".")[0], test_mask)

    for i in range(k_num):
        folds_save_train_image_path = r"./folds/" + str(i) + "_fold/train/image/"
        folds_save_train_mask_path = r"./folds/" + str(i) + "_fold/train/mask/"
        folds_save_test_image_path = r"./folds/" + str(i) + "_fold/test/image/"
        folds_save_test_mask_path = r"./folds/" + str(i) + "_fold/test/mask/"

        x1 = np.load(folds_save_train_image_path + os.listdir(folds_save_train_image_path)[0])
        x2 = np.load(folds_save_train_mask_path + os.listdir(folds_save_train_mask_path)[0])
        x3 = np.load(folds_save_test_image_path + os.listdir(folds_save_test_image_path)[0])
        x4 = np.load(folds_save_test_mask_path + os.listdir(folds_save_test_mask_path)[0])
        print("*********************************")
        print("fold_" + str(i))
        print("*********************************")
        print("train_image:", x1)
        print("train_mask:", x2)
        print("test_image:", x3)
        print("test_mask:", x4)

        x1 = np.load(folds_save_train_image_path + os.listdir(folds_save_train_image_path)[1])
        x2 = np.load(folds_save_train_mask_path + os.listdir(folds_save_train_mask_path)[1])
        x3 = np.load(folds_save_test_image_path + os.listdir(folds_save_test_image_path)[1])
        x4 = np.load(folds_save_test_mask_path + os.listdir(folds_save_test_mask_path)[1])
        print("*********************************")
        print("fold_" + str(i))
        print("*********************************")
        print("train_image:", x1)
        print("train_mask:", x2)
        print("test_image:", x3)
        print("test_mask:", x4)

if __name__ == "__main__":
    make_flods_index(k_num=5,image_path=r"C:\\Users\\29939\\Desktop\\kaggle_肾小球分割\\train\\image" ,mask_path=r"C:\\Users\\29939\\Desktop\\kaggle_肾小球分割\\train\\label")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值