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):]
И в этом нет ничего случайного.