您绝对希望x_validation
与y_validation
相关,即与原始数据集中的行相同。
例如如果验证从输入x中获取第1、3、7行,则您既希望x_validation
和y_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
将生成一个True
和False
值的布尔掩码,可用于从任何具有相同长度的数据帧中仅选择那些行,因此在这种情况下,它也适用于{{ 1}}。
顺便说一句
x_validataion
似乎是一种有点令人困惑的计数len(x_validation[y_validation == 0])
类的示例数量的方法。我会去
0
我自己,然后您可以将%负值计算写为
(y_validation == 0).sum()
对我来说有点整洁。
,
train_test_split
从数据长度中抽取n
个随机索引,并以xtrain
,ytrain
或您传递的任何值返回这些索引处的值。看一下这个简单的演示:
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