二进制分类是否需要train_test_split?为什么会有4个结果?

时间:2019-05-26 18:57:03

标签: python machine-learning scikit-learn svm logistic-regression

为什么sklearn中的train_test_split有4个结果?如果测试数据中没有y_data,为什么会有y_test?

3 个答案:

答案 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个)的原因。

希望这会有所帮助。