scikit-learn train_test_split是否保留关系?

我正在尝试了解this代码。我不知道该怎么办:

x_validation,x_test,y_validation,y_test = 
  train_test_split(x_validation_and_test,y_validation_and_test...

您以后可以做:

(len(x_validation[y_validation == 0])

请确保train_test_split意味着x_validationy_validation无关。我想念什么?

编辑: 已经有一些好的答案,但是我只想澄清一下。确保x_validationy_validation的顺序正确,并且彼此相同。显然,您可以在其中任一行中添加一行并弄乱事情,但是是否存在表示保留顺序的基础索引?我来自非Python背景,有时您不能保证SQL列之类的顺序。

YYYYKK 回答:scikit-learn train_test_split是否保留关系?

您绝对希望x_validationy_validation相关,即与原始数据集中的行相同。 例如如果验证从输入x中获取第1、3、7行,则您既希望x_validationy_validation中的第1、3、7行。

使用train_test_split函数的想法是将您的数据集分为两组特征(x s)和相应的标签(y s)。因此,您需要并要求

len(x_validation) == len(y_validation)

len(x_test) == len(y_test)

看看您可能会引起混淆的其他问题:

y_validation == 0

将生成一个TrueFalse值的布尔掩码,可用于从任何具有相同长度的数据帧中仅选择那些行,因此在这种情况下,它也适用于{{ 1}}。

顺便说一句

x_validataion

似乎是一种有点令人困惑的计数len(x_validation[y_validation == 0]) 类的示例数量的方法。我会去

0

我自己,然后您可以将%负值计算写为

(y_validation == 0).sum()

对我来说有点整洁。

,

train_test_split从数据长度中抽取n个随机索引,并以xtrainytrain或您传递的任何值返回这些索引处的值。看一下这个简单的演示:

import numpy as np
from sklearn.model_selection import train_test_split

data = np.random.randint(0,10,15) 
target = data**2
indices = np.arange(15)

xtrain,xtest,ytrain,ytest,indicestrain,indicestest = \
    train_test_split(data,target,indices)

print(data)
print(target)
print(indices)
[7 7 4 1 1 3 1 6 8 2 2 1 9 9 9] # random val between 0 and 10
[49 49 16  1  1  9  1 36 64  4  4  1 81 81 81] # their squared values
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]  # the index in the original array (data)

现在,从中获取一些随机索引,让我们看看它们是否保持关联:

xtrain,indices)

print(xtrain)
print(ytrain)
print(indicestrain)
[9 9 2 1 8 2 4 7 1 6 7]
[81 81  4  1 64  4 16 49  1 36 49]
[12 14 10 11  8  9  2  1  3  7  0]

如您所见,第二行是第一行的平方,表示顺序已保留。

本文链接:https://www.f2er.com/2891008.html

大家都在问