#python #scikit-learn #train-test-split
#python #scikit-learn #train-test-split
Вопрос:
Я знаю, как использовать базовый train_test_split
:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=123)
Однако, что, если я хочу разделить свой набор для обучения и тестирования на переменную, в данном случае year
. Я хочу, чтобы все значения, где year==2019
будут моим тестовым набором, в то время как year<2019
это мой обучающий набор. Как я могу изменить приведенный выше код, чтобы это произошло?
Ответ №1:
Позвольте мне объяснить на примере:
Если в вашем корпусе есть 1000 точек данных, и вы хотите 700/300 для обучения / тестирования, найдите точки данных, year == 2019
переместите их в конец корпуса и рассмотрите их как тестовые данные с чем-то вроде приведенного ниже: (предположим, что 200 точек данных удовлетворяют year == 2019
условию)
X_test, y_test = X[800:1000], y[800:1000]
и, например, 300 точек данных имеют year < 2019
после перемещения их в top:
X_train, y_train = X[0:300], y[0:300]
Теперь для остальной части вашего корпуса (от 300 до 800) переопределите X и Y следующим образом:
X = data.iloc[301:799]
Y = label.iloc[301:799]
а затем использовать train_test_split
для новых X и Y и присоединять новые X_test, y_test, X_train, y_train
к предыдущим.