Scikit train_test_split по индексу - PullRequest
       15

Scikit train_test_split по индексу

0 голосов
/ 06 декабря 2018

У меня есть pandas датафрейм, проиндексированный по дате.Предположим, это с 1 января по 30 января.Я хочу разделить этот набор данных на 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, random_state=0)

Но когда я проверяю значения, я вижу, что даты смешаны.Я хочу разделить мои данные на:

Jan-1 to Jan-24 для обучения и Jan-25 to Jan-30 для тестирования (так как test_size равен 0,2, то есть 24 для обучения и 6 для тестирования)

Как я могусделай это?Спасибо

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

вы должны использовать

X_train, X_test, y_train, y_test = train_test_split(X,Y, shuffle=False, test_size=0.2, stratify=None)

не использовать random_state=None потребуется numpy.random

в здесь упоминается, что используется shuffle=False вдольс stratify=None

0 голосов
/ 06 декабря 2018

Попробуйте использовать TimeSeriesSplit :

X = pd.DataFrame({'input_1': ['a', 'b', 'c', 'd', 'e', 'f'],
                  'input_2': [1, 2, 3, 4, 5, 6]},
                 index=[pd.datetime(2018, 1, 1),
                        pd.datetime(2018, 1, 2),
                        pd.datetime(2018, 1, 3),
                        pd.datetime(2018, 1, 4),
                        pd.datetime(2018, 1, 5),
                        pd.datetime(2018, 1, 6)])
y = np.array([1, 0, 1, 0, 1, 0])

В результате X будет

           input_1  input_2
2018-01-01       a        1
2018-01-02       b        2
2018-01-03       c        3
2018-01-04       d        4
2018-01-05       e        5
2018-01-06       f        6
tscv = TimeSeriesSplit(n_splits=3)
for train_ix, test_ix in tscv.split(X):
    print(train_ix, test_ix)
[0 1 2] [3]
[0 1 2 3] [4]
[0 1 2 3 4] [5]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...