【问题标题】:Some questions about split_train_test() function关于 split_train_test() 函数的一些问题
【发布时间】:2017-07-10 10:23:55
【问题描述】:

我目前正在尝试使用 Python 的线性回归()模型来描述两个变量 X 和 Y 之间的关系。给定一个具有 8 列和 1000 行的数据集,我想使用 split_train_test 将此数据集拆分为训练集和测试集。

我的问题:我想知道 train_test_split(dataset, test_size, random_test = int) 与 train_test_split(dataset, test_size) 有什么区别。另外,第二个(没有设置 random_test=int ) 每次我重新运行我的程序时给我一个不同的测试集和训练集?另外,每次我重新运行我的程序时,第一个是否会给我相同的测试集和训练集?例如,设置 random_test=42 与 random_test=43 有什么区别?

【问题讨论】:

  • 你用的python库是什么,是scikit-learn吗?
  • @Charles:是的!!我使用了 sklearn.model_selection。

标签: linear-regression training-data


【解决方案1】:

在 python scikit-learn train_test_split 中,将您的输入数据分成两组 i) 训练和 ii) 测试。它有参数 random_state 允许你随机分割数据。

如果未提及该参数,它将以分层方式对数据进行分类,从而为同一数据集提供相同的拆分。

假设您希望对数据进行随机拆分,以便您可以在不同拆分的相同数据上衡量回归的性能。您可以使用 random_state 来实现它。每个随机状态都会为您提供初始数据的伪随机拆分。为了跟踪性能并稍后在相同数据上重现它,您将使用带有之前使用的值的 random_state 参数。

对于机器学习中的cross validation技术很有用。

【讨论】:

  • 非常感谢您的出色回答!我认为如果没有 random_state,每次重新运行程序时都会生成不同的拆分;p 那么,如果我设置 random_state=42,这 REALLY 是什么意思?另外,您能否用代码语言详细说明,如果我们每次重新运行程序时生成不同的测试和训练集,我们如何跟踪性能以进行比较?
  • 我尝试设置 random_state = 42,并运行我的程序 3 次。我每次都得到相同的 RMSE(?!)。我想知道如果是这种情况,测试和训练集怎么可能是随机的;p 请注意,我的测试大小/验证大小 = 1/4,而我只有大约 1500 行数据
  • 它不是随机的,因为您保持拆分的随机状态保持不变。如果您想要不同的随机拆分,请尝试对随机状态使用不同的值。如果你保持相同的random_state,你会得到相同的结果,这是train_test_splitoption random_state的唯一目的
  • 如果即使打开选项 random_state 仍然无法生成不同的拆分,那么有和没有 random_state 有什么区别?
  • 假设我们只有较少数量的数据集,它们可以独特地分为训练集和测试集。现在我们需要一组不同的训练和测试集来训练您的内核,您可以在 train_test_split 中使用不同的 random_state 来生成不同的组合训练并使用相同的集合进行测试(就内核而言是新集合)。现在很难跟踪这个训练集和测试集,因为您将来可能需要重新评估。因此它很有用。
猜你喜欢
  • 2019-11-30
  • 1970-01-01
  • 1970-01-01
  • 2018-05-24
  • 2013-07-07
  • 2013-05-10
  • 2012-03-18
  • 2023-03-09
  • 2021-07-01
相关资源
最近更新 更多