将数据拆分为训练和测试

问题描述 投票:0回答:2

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

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
2个回答
1
投票

您提供的有关 train_test_split 的代码行是对数据集的不同部分进行训练和测试的第一步。之后,您将需要

fit
model
predict
一些给定的结果,因为
model

但是,您似乎是机器学习和 scikit-learn 的新手,简单地回答您的问题并不能真正帮助您,相反,我建议您遵循这个教程,它非常简单明了也很简单。

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

cross_validation
的示例。

以防万一,这里有另一个教程,您可以遵循以更好地理解。这个有点复杂,所以请放在第二位检查。

完成这些之后,您将几乎能够使用 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_train
y_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
随机划分数据)

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

希望这对您有所帮助。


0
投票

我想我应该回答这个问题,顺便说一句,已经很晚了!

因此,假设您正在对数据集执行 PCA,这是一种降维算法。我在 d 维空间中有 100 个数据点。暂时忘记任何培训/测试的事情。我要对那些d维点做什么?我会找到一条线,一个特征向量,如果这些点投影在该向量上,它可以捕获这些点的最大方差,它是 PC。您现在拥有一台电脑。然后,您选择一个随机数据点,将该投影点投影到 PC 上,减少该数据点的维度,然后使用该点训练您的算法,并且还可以节省一些空间。然后你尝试找出你丢失了多少信息?所以你说,“好吧,我可以重建那个投影点”,你就这样做了,令人惊讶的是,你得到的点几乎与投影之前的点相同。为什么会这样,难道不应该相差很多吗?原因是您在制作协方差矩阵时包含了这一点。因此,您想到了一个主意,让我们在寻找那台电脑时保留一些要点。我们一般说的是测试数据。所以你又做了一遍,找到了一台电脑。 现在,您从测试数据中选择一个点,例如

t_pt
,以了解如果我使用该电脑,我可能会丢失多少信息。

第1步:我们将该点投影到PC上,该点从d到某个c维度。
步骤 2:然后将 c 维度点重建为 d 维度。

现在新的 d 维点应该与

t_pt
不同。

“我如何在一个数据集上进行训练并在另一个数据集上进行测试?”,答案是您使用该模型(在我们的示例中为 PC)进行预测,但您的数据点可能位于训练之外,但应该具有相同的数据点特征数量。

You have a line!

© www.soinside.com 2019 - 2024. All rights reserved.