def test_valid_input(self): expected_result = [ datetime.datetime(2015, 3, 1, 0, 0), datetime.datetime(2015, 6, 1, 0, 0), datetime.datetime(2015, 9, 1, 0, 0), datetime.datetime(2015, 12, 1, 0, 0), datetime.datetime(2016, 3, 1, 0, 0), datetime.datetime(2016, 6, 1, 0, 0), ] chopper = Timechop( feature_start_time=datetime.datetime(2010, 1, 1, 0, 0), feature_end_time=datetime.datetime(2017, 1, 1, 0, 0), label_start_time=datetime.datetime(2015, 1, 1, 0, 0), label_end_time=datetime.datetime(2017, 1, 1, 0, 0), model_update_frequency="3 months", training_as_of_date_frequencies=["1 day"], test_as_of_date_frequencies=["1 day"], max_training_histories=["1 year"], test_durations=["6 months"], test_label_timespans=["1 months"], training_label_timespans=["3 days"], ) # this should throw an exception because last possible label date is after # end of feature time result = chopper.calculate_train_test_split_times( training_label_timespan=convert_str_to_relativedelta("3 days"), test_duration="6 months", test_label_timespan=convert_str_to_relativedelta("1 month"), ) assert result == expected_result
def test_no_valid_label_dates(self): chopper = Timechop( feature_start_time=datetime.datetime(2010, 1, 1, 0, 0), feature_end_time=datetime.datetime(2016, 1, 1, 0, 0), label_start_time=datetime.datetime(2015, 1, 1, 0, 0), label_end_time=datetime.datetime(2015, 2, 1, 0, 0), model_update_frequency="3 months", training_as_of_date_frequencies=["1 day"], test_as_of_date_frequencies=["1 day"], max_training_histories=["1 year"], test_durations=["6 months"], test_label_timespans=["1 months"], training_label_timespans=["3 days"], ) # this should raise an error because there are no valid label dates in # the labeling time (label span is longer than labeling time) with self.assertRaises(ValueError): chopper.calculate_train_test_split_times( training_label_timespan=convert_str_to_relativedelta("3 days"), test_duration="6 months", test_label_timespan=convert_str_to_relativedelta("1 month"), )
def test_labels_after_features(self): chopper = Timechop( feature_start_time=datetime.datetime(2010, 1, 1, 0, 0), feature_end_time=datetime.datetime(2016, 1, 1, 0, 0), label_start_time=datetime.datetime(2015, 1, 1, 0, 0), label_end_time=datetime.datetime(2017, 1, 1, 0, 0), model_update_frequency="3 months", training_as_of_date_frequencies=["1 day"], test_as_of_date_frequencies=["1 day"], max_training_histories=["1 year"], test_durations=["6 months"], test_label_timespans=["1 months"], training_label_timespans=["3 days"], ) # this should throw an exception because last possible label date is after # end of feature time with self.assertRaises(ValueError): chopper.calculate_train_test_split_times( training_label_timespan=convert_str_to_relativedelta("3 days"), test_duration="6 months", test_label_timespan=convert_str_to_relativedelta("1 month"), )