Scikit учится тестировать сплит поезд

У меня есть данные, которые включают даты в отсортированном порядке.

Я хотел бы разделить данные данные для обучения и тестирования набора. Однако я должен разделить данные таким образом, чтобы тест был новее, чем набор поездов.

Пожалуйста, посмотрите на приведенный пример:

Давайте предположим, что у нас есть данные по датам:

1, 2, 3,..., н.

Числа от 1 до n представляют дни.

Я хотел бы разделить его на 20% от данных, которые будут установлены, и 80% данных, которые будут установлены для тестирования.

Good results:

1) train set = 1, 2, 3, ..., 20

   test set = 21, ..., 100


2) train set = 101, 102, ... 120

    test set = 121, ... 200

Мой код:

train_size = 0.2
train_dataframe, test_dataframe = cross_validation.train_test_split(features_dataframe, train_size=train_size)                          

train_dataframe = train_dataframe.sort(["date"])
test_dataframe = test_dataframe.sort(["date"])

У меня не работает!

Какие-либо предложения?

1 ответ

Решение

Если вы настаиваете, чтобы все данные тестирования были новее, чем все данные обучения, то есть только один способ достичь желаемого разделения 20/80.

n = features_dataframe.shape[0]
train_size = 0.2

features_dataframe = features_dataframe.sort_values('date')
train_dataframe = features_dataframe.iloc[:int(n * train_size)]
test_dataframe = features_dataframe.iloc[int(n * train_size):]

И в этом нет ничего случайного.

Другие вопросы по тегам