为什么sklearn中的train_test_split有4个结果?如果测试数据中没有y_data,为什么会有y_test?
答案 0 :(得分:1)
获得4个结果的原因是因为您获得了:train_features,test_features,train_labels和test_labels(X_train, X_test, y_train, y_test
)。因此,它不仅将数据集拆分为训练集和测试集,还将标签拆分为。 (因此2 + 2 = 4个结果)。
答案 1 :(得分:0)
查看documentation,您会看到第一个参数是
*arrays
,这意味着您可以在其中放置任意数量的数组。现在,它返回什么?
Returns: splitting : list, length=2 * len(arrays)
这意味着它将返回在train_test_split函数中传递的数组数量的两倍。
因此,如果您已经有一个训练集和一个测试集,则只有将训练集分开才有意义,因此您可以有一个验证集来检查模型性能。
例如:
train_data, validation_data, train_label, validation_label= train_test_split(original_train_data, original_train_label)
请注意,如果数据和标签位于分开的向量中,则还必须拆分标签。
答案 2 :(得分:0)
因为您已将原始数据拆分为训练和测试部分。因此会有四个结果。
1(X_train,Y_train),其中X_train是训练点,而Y_train是它们各自的类别标签。现在,这就是您的训练数据,这些数据将用于使用任何经典模型(例如K-NN,逻辑回归,决策树)来训练您的模型。
2(X_test,Y_test),其中X_test代表您的测试数据点,y_train是这些测试点的各自类别标签。现在,一旦您训练了模型并计算了训练错误/准确性,则可以使用这些点来看看训练后的模型是否可以正确预测数据。训练和测试误差之间的差异越小越好。
这就是为什么您得到4个结果(每对2个)的原因。
希望这会有所帮助。