使用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函数的灵活性使得它成为了交叉验证和模型评估中的重要工具。
