Итак, в этом случае правильный порядок присвоения переменных, который вы должны использовать, - X_train, X_test, y_train, y_test
. то есть вам нужно переписать свой код, чтобы он был
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
Распаковка нескольких назначений
Кроме того, я подозреваю, что ваша путаница также может быть вызвана непониманием того, как распаковка нескольких назначений in python работает, и возвращаемое значение train_test_split(...)
.
Давайте рассмотрим предоставление train_test_split(...)
единственного массива для разделения, например y = [0, 1, 2, 3, 4]
. train_test_split(y)
дает нам результат, который будет выглядеть примерно как [[0, 1, 2], [3, 4]]
(плюс-минус некоторое перемешивание). Мы видим, что он берет наш исходный список и возвращает список из 2 списков .
Мы можем передать train_test_split(...)
произвольное количество списков для разделения. Итак, давайте посмотрим, что произойдет, если мы предоставим train_test_split(...)
2 списка (list_1
, list_2
) в качестве входных данных. Он вернет список из 4 списков . Первые два внутренних списка будут обучающим набором list_1
, за которым следует набор тестирования list_1
, а последние два внутренних списка будут обучающим набором list_2
, за которым следует набор тестирования list_2
. Однако возвращенные списки не соответствуют никаким ключевым словам, таким как «X_train» или «x_test», это просто старые добрые обычные списки.
Один из способов обработки вывода был бы таким
datasets = train_test_split(list_1, list_2)
list_1_train = datasets[0]
list_1_test = datasets[1]
list_2_train = datasets[2]
list_2_test = datasets[3]
Однако это длительный, повторяющийся и подверженный ошибкам. К счастью, python дает нам синтаксис для распаковки нескольких переменных и их назначения в одном операторе. Эквивалент назначения четырех списков, как показано в приведенном выше фрагменте кода, будет следующим:
[list_1_train, list_1_test, list_2_train, list_2_test] = train_test_split(list_1, list_2)
или с большим количеством сахара :
list_1_train, list_1_test, list_2_train, list_2_test = train_test_split(list_1, list_2)