4个numpy知识点实现K折验证数据集划分

K折数据集验证是机器学习中的一个常用的方法,原理简单的说就是把一个大的数据集切成k个小部分,然后每次迭代使用其中的1个小部分作为测试集,这样可以实现一个数据集的多次使用,解决机器学习中的样本问题。在sklearn这个库中,已经封装好了cross_val_score这个库可以直接调用。不过我们我们需要自力更生,采用numpy(简称np)来实现对数据集的k折划分。实现这个功能需要的知识点如下:

  1. 使用np的arange方法生成数组;
  2. 使用ndarray的reshape方法来重塑数组;
  3. 使用ndarray的切片方法;
  4. 使用np的vstack方法来拼接两个ndarray;
import numpy as np
sample_num = 9
segment_num = 4
validata_num 
好的,下面是使用NumPy库对MNIST数据集进行划分的示例代码: ```python import numpy as np # 读取MNIST数据集 train_images = np.load('mnist/train_images.npy') train_labels = np.load('mnist/train_labels.npy') test_images = np.load('mnist/test_images.npy') test_labels = np.load('mnist/test_labels.npy') # 定义训练集、验证集和测试集的比例 train_ratio = 0.8 val_ratio = 0.1 test_ratio = 0.1 # 计算划分后的样本数量 num_train_samples = int(train_ratio * train_images.shape[0]) num_val_samples = int(val_ratio * train_images.shape[0]) num_test_samples = int(test_ratio * test_images.shape[0]) # 打乱训练集的顺序 indices = np.random.permutation(train_images.shape[0]) train_images = train_images[indices] train_labels = train_labels[indices] # 划分训练集、验证集和测试集 train_images_split = train_images[:num_train_samples] train_labels_split = train_labels[:num_train_samples] val_images_split = train_images[num_train_samples:num_train_samples+num_val_samples] val_labels_split = train_labels[num_train_samples:num_train_samples+num_val_samples] test_images_split = test_images[:num_test_samples] test_labels_split = test_labels[:num_test_samples] # 打印每个集合的样本数量 print('训练集样本数量:', train_images_split.shape[0]) print('验证集样本数量:', val_images_split.shape[0]) print('测试集样本数量:', test_images_split.shape[0]) ``` 在这个示例中,我们首先读取了MNIST数据集,并定义了训练集、验证集和测试集的比例。接着,我们计算了划分后每个集合的样本数量。为了避免训练集和验证集的顺序对模型训练产生影响,我们使用NumPy库中的random.permutation()函数来打乱训练集的顺序。接着,我们使用NumPy库中的数组切片操作来划分训练集、验证集和测试集,并打印了每个集合的样本数量。 希望这个示例能够帮助到你。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值