Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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"),
            )
Exemplo n.º 3
0
    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"),
            )