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 = 2

data_set = np.arange(sample_num*segment_num).reshape(sample_num,segment_num)
iteration_times = sample_num//validata_num

for i in range(iteration_times):
	k=i+1
	validata_start = i*validata_num
	validata_end   = k*validata_num
	vali_dataset = data_set[validata_start:validata_end]
	train_dataset = np.vstack([data_set[:validata_start],data_set[validata_end:]])
	print(f'This is Fold No.{k}')
	print("Validation dataset is:")
	print(vali_dataset)
	print("Training dataset is:")
	print(train_dataset)

你可能感兴趣的:(#,机器学习初阶)