【问题标题】:Splitting data to training and testing将数据拆分为训练和测试
【发布时间】:2017-07-11 20:48:30
【问题描述】:

有谁知道如何在一个数据集上进行训练并在另一个数据集上进行测试?
到目前为止,我只知道我们可以使用这行代码将一个数据集拆分为训练和测试:

X_train, X_test, y_train, y_test = \
        train_test_split(X, y, test_size=0.30, random_state=1)

如果我们在一个数据集上训练并在另一个数据集上进行测试,我不知道我应该在该行中更改哪个部分。

【问题讨论】:

  • 另一个数据集必须具有相同数量和类型的特征才能发生这种情况。除此之外,只需使用第一个数据集训练模型,然后在其他数据集上进行预测。有什么问题?

标签: split scikit-learn training-data


【解决方案1】:

您提供的关于 train_test_split 的代码行是对数据集不同部分进行训练和测试的第一步。之后,您将需要 fitmodelpredict 一些给定的结果,因为 model

但是,您似乎是机器学习和 scikit-learn 的新手,简单地回答您的问题并不能真正帮助您,相反,我建议您关注此tutorial,它非常简单而且清晰明了。

这将帮助您入门并让您更好地了解培训和测试的工作原理,并为您提供一些关于 cross_validation 的示例。

以防万一,这是另一个tutorial,您可以关注以更好地理解。这个有点复杂,所以排在第二位。

在这些之后,您将几乎可以使用 scikit-learn 官方文档找到自己的方式。

编辑:

如果您想处理完全不同的数据集,它与train_test_split 几乎相同,现在唯一的区别是您不会将数据拆分为训练和测试部分:

X_train, X_test, y_train, y_test = \
        train_test_split(X, y, test_size=0.30, random_state=1)

相反,您只需获取您的第一个数据集(用于训练的数据集),然后将您的 X_trainy_train 从中取出:

X_train = data_train[feature_cols]
y_train = data_train['y_col']

对于您的测试集也是如此(前提是您有一个):

X_test = data_test[feature_cols] # make sure you're having the same features
y_test = data_test['y_col'] 

在那之后,什么都没有真正改变。

现在,如果您注意到的话,如果您将两个数据集组合在一起,使用 train_test_split 的情况完全相同(除了 train_test_split 随机划分数据)

我相信这就是你所要求的。

希望这对您有所帮助。

【讨论】:

  • 我熟悉机器学习和你提到的所有概念!我还没有看到的是在整个数据集中进行训练并在全新的数据集中进行测试!
  • @user8034918 你一直在说“一个全新的数据集”。你到底是什么意思?两个数据集的特征类型和数量是否不同?如果是,那么您可能不会将其用于测试。因为没有任何意义。机器学习只能做这么多。
  • 不,我认为他的意思是相同的功能,但只是新样本@VivekKumar,顺便说一句
猜你喜欢
  • 1970-01-01
  • 2020-06-08
  • 2023-03-11
  • 1970-01-01
  • 2019-12-11
  • 2019-05-01
  • 1970-01-01
  • 2021-03-02
相关资源
最近更新 更多