【机器学习】sklearn中的数据集划分方法(一行代码划分训练集测试集)

1 导包

from sklearn.model_selection import train_test_split

2 API介绍

klearn.model_selection.train_test_split(arrays, *options)

参数:

  • x 数据集的特征值
  • y 数据集的标签值
  • test_size 测试集的大小,一般为float
  • random_state 随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同。

返回

  • 训练集特征,训练集特征值,训练标签,测试标签 (默认随机取)

3 示例一

3.1 构造数据

特征值和标签

feature_data = [[1,3,4],[1,3,4],[1,5,2],[1,5,8]]
label_data = [1,3,2,4]

3.2 数据划分

将数据按3:1划分为训练集和测试集,划分后其特征和标签按顺序自动对应

x_train, x_test, y_train, y_test = train_test_split(feature_data, label_data,test_size=0.25)

测试:

print(x_train)
print(y_train)
[[1, 5, 2], [1, 3, 4], [1, 5, 8]]
[2, 1, 4]

该API同样支持numpy类型数据

4 示例二(鸢尾花数据集实战)

4.1 数据准备

from sklearn.datasets import load_iris  # 导入鸢尾花数据
iris = load_iris() # 字典类型的数据集

4.2 查看数据

查看数据

print(iris.keys()) # 查看key值

输出

dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names'])

查看特征值data

print(iris['data'])

输出:

[[5.1 3.5 1.4 0.2]
 [4.9 3.  1.4 0.2]
 [4.7 3.2 1.3 0.2]
  ....
 [6.5 3.  5.2 2. ]
 [6.2 3.4 5.4 2.3]
 [5.9 3.  5.1 1.8]]

共有150条数据

4.3 数据划分

# 训练集的特征值x_train 测试集的特征值x_test 训练集的目标值y_train 测试集的目标值y_test,指定测试集所占的比例为20%
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=22,test_size=0.2)
print("x_train:\n", x_train.shape)
print("x_test:\n",x_test.shape)

输出shape:

x_train:
 (120, 4)
x_test:
 (30, 4)
  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在并行训练,可以使用以下技巧来设置验证集: 1. 随机划分:将数据集随机划分训练集和验证集。这种方法简单易行,但可能会导致验证集过小或者不够随机。 2. 分层采样:按照类别或其他特征对数据集进行分层采样,然后从每个层选择一定比例的样本作为验证集。这种方法可以确保验证集包含各种特征的样本,但需要更复杂的代码实现。 3. 时间划分:如果数据集包含时间序列数据,可以将数据集按照时间划分训练集和验证集。这种方法可以确保验证集的数据与训练集的数据是不重叠的,但可能会导致验证集的数据与测试集的数据分布不同。 以下是一个使用随机划分代码例子: ```python import numpy as np from sklearn.model_selection import train_test_split # 加载数据集 X, y = load_data() # 随机划分训练集和验证集 X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42) ``` 在这个例子,`load_data()` 函数用于加载数据集。`train_test_split()` 函数用于将数据集随机划分训练集和验证集,其 `test_size` 参数指定验证集所占的比例,`random_state` 参数指定随机数种子,以便重复实验时得到相同的结果。 ### 回答2: 在并行训练,我们可以通过以下几种技巧来设置验证集代码例子。 1. 数据拆分:在并行训练,我们通常会将数据集划分训练集和验证集。对于验证集,我们可以采用一些技巧来设置代码例子。例如,我们可以通过分层抽样方法从整个数据集选择一定比例的样本作为验证集,确保验证集和训练集的样本分布相似。 2. 随机选择:我们可以使用随机函数来从训练集随机选择一定比例的样本作为验证集。这样可以保证验证集的样本具有一定的随机性,并与训练集相互独立。 3. 时间序列切割:对于时间序列数据,我们可以使用时间序列切割的方法设置验证集代码例子。例如,可以选择训练集的前80%作为训练样本,后20%作为验证集样本。这样可以确保验证集可以验证模型在未来的预测能力。 4. 分布均衡:对于某些分类问题数据集的类别分布可能不均衡。在验证集的代码例子设置,我们可以使用一些方法来保持类别之间的平衡。例如,我们可以通过过采样或欠采样的方法来调整验证集的样本分布,确保每个类别都有足够数量的样本。 总的来说,在并行训练,验证集的代码例子设置应该考虑到样本的随机性和分布情况。这样可以保证验证集的样本能够准确评估模型的性能,并提供对模型的合理验证。 ### 回答3: 在并行训练,可以使用一些技巧来设置验证集。这些技巧可以帮助我们在分布式训练过程更好地评估模型的性能和调整模型的参数。 一种常用的技巧是将训练数据集划分为多个小批次(batches),然后将这些小批次分发给并行的训练节点进行处理。在每个节点上,我们可以随机选择一个小批次作为验证集,并使用其他小批次作为训练集来更新模型的参数。这样,每个节点都可以根据自己选择的验证集评估模型,并在训练过程获取模型的性能指标。 另一种技巧是使用交叉验证(cross-validation)。交叉验证可以通过将原始训练数据集划分为多个较小的子集(folds)来进行。在每次训练,我们可以选择一个子集作为验证集,并使用其他子集作为训练集来更新模型的参数。通过使用不同的子集作为验证集,我们可以获取更全面和鲁棒的模型评估结果。 在代码实现,我们可以使用各种机器学习框架提供的函数或库来设置验证集。例如,在TensorFlow,我们可以使用tf.data.Dataset的相关函数来划分训练数据集并创建验证集。在PyTorch,我们可以使用torch.utils.data.Dataset的相关函数来实现相似的划分。 通过灵活使用这些技巧,我们可以在并行训练更好地设置验证集,从而更准确地评估模型的性能,并为模型调参提供有效的指导。同时,注意适时地调整验证集的大小和划分策略,以平衡验证集规模和训练效率之间的关系。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值