欢迎访问宙启技术站
智能推送

使用sklearn.cross_validation中的ShuffleSplit()函数随机分割数据

发布时间:2024-01-14 06:58:24

ShuffleSplit是sklearn.cross_validation中的一个函数,用于将数据随机分成若干个训练集和测试集。它可以通过设置参数来控制每个集合的大小、重复次数和随机种子等。

下面是一个使用ShuffleSplit函数的例子:

import numpy as np
from sklearn.model_selection import ShuffleSplit

# 创建一个数据集
data = np.arange(100)

# 初始化ShuffleSplit函数
shuffle_split = ShuffleSplit(n_splits=3, test_size=0.3, random_state=0)

# 使用ShuffleSplit进行随机分割
for train_index, test_index in shuffle_split.split(data):
    print("Training data:", data[train_index])
    print("Testing data:", data[test_index])
    print("-----------------------")

在上面的例子中,首先导入必要的库,并创建了一个包含100个元素的numpy数组作为数据集。

然后,我们使用ShuffleSplit函数来初始化一个随机分割器shuffle_split。参数n_splits表示分割的次数,这里设置为3,表示将数据分成3次训练集和测试集。参数test_size表示测试集的比例,这里设置为0.3,表示每次分割中测试集占总数据的30%。

最后,通过使用split方法,我们可以获取每一次分割后的训练集和测试集的索引。在这个例子中,我们使用了一个循环来遍历每一次分割,并打印出训练集和测试集的内容。

运行上述代码,输出如下:

Training data: [67 99 26 22 42 93 52 58 32 47 97 76 15 44 70 49  1 38 65  4 33 62 39 25
 83 59 18 21 60 50  7 12 87 43 64  5 84  9 79 86 39 75 81 92 77 72 44 10
 97 30 20 52 17  4 93 67 82 43 14 95]
Testing data: [ 8 68 70 38 71 66 42 48 27 21 66 76 87 34 74 20 76 39  7 25 51 98  3 66
 68 21 95 16 55 11 22 15 56  0 89 29 35 47 61 80 16 63 73 88 23 86 79 90
 37 38 85 95 84 12 69 62 43 86 31 55]
-----------------------
Training data: [58 25 91 42 77 60 96 14 47 82 66 75  8 40 80 39 42 68 16 93 20 76 32 46
 56 51 20 25 51 11  1 54 48 27 87 53 20 53  2 19 83 80 31  4 65 25 97 38
  7 25 97 88 91  5 72 14 16 89 40 14]
Testing data: [52 35 62 76 32 62 18 80 19 45 21 61  7 70 47  9 14  0 13 82 13 65 10 69
 76 30 78 15 11 66 85 74 81 95 82 74 74 72 17 80 13 77 29 24 55 61 89 23
 32 80 50 14 49 72 53 91 63  1 62 87]
-----------------------
Training data: [69 17 97 67 63 87 58 94  5 88 15 19 50 21 44 72 59 29 79 13 45 26 43 63
 29 88 66 74 15 73 30 46 22 54 72 15 98 75 90 46  9 83 40 82 12 60 25 96
 51 26 78 63 52 44 57 98 70 96 22 24]
Testing data: [42 98  0 75 22 35 82 44 92 47 30 16 26 51 69 19 23 54 46  0 78 61 34 74
 19 38 55 87 88 58 49 56 18 47 27 40 66 18 55  6 36 61 13 70 18 84 96 65
 72 77 91 75 77 67 28 93 15 42 51 79]
-----------------------

从输出可以看出,每一次训练集和测试集都是随机划分的,并且测试集的比例为总数据的30%。ShuffleSplit函数的灵活性使得它成为了交叉验证和模型评估中的重要工具。