def test_string_period(self):
        testing.N, testing.K = 20, 1
        ts = testing.makeTimeDataFrame(freq="s")
        periodic_feature = PeriodicSeasonal(period="1 days")
        periodic_feature.transform(ts)

        assert type(periodic_feature.period) == pd.Timedelta
示例#2
0
 def test_too_high_sampling_frequency(self):
     start_date = "2018-01-01"
     periodic_feature = PeriodicSeasonal(
         period="2 days",
         start_date=start_date,
         index_period=pd.date_range(start=start_date, end="2020-01-01", freq="W"),
     )
     with pytest.raises(ValueError):
         periodic_feature.transform()
 def test_correct_sinusoide(self):
     testing.N, testing.K = 30, 1
     ts = testing.makeTimeDataFrame(freq="MS")
     start_date = "2018-01-01"
     periodic_feature = PeriodicSeasonal(
         period="365 days",
         start_date=start_date,
         index_period=pd.DatetimeIndex(start=start_date,
                                       end="2020-01-01",
                                       freq="W"),
     )
     output_sin = periodic_feature.transform(ts)
     expected_index = pd.DatetimeIndex(
         [
             "2000-01-01",
             "2000-02-01",
             "2000-03-01",
             "2000-04-01",
             "2000-05-01",
             "2000-06-01",
             "2000-07-01",
             "2000-08-01",
             "2000-09-01",
             "2000-10-01",
             "2000-11-01",
             "2000-12-01",
             "2001-01-01",
             "2001-02-01",
             "2001-03-01",
             "2001-04-01",
             "2001-05-01",
             "2001-06-01",
             "2001-07-01",
             "2001-08-01",
             "2001-09-01",
             "2001-10-01",
             "2001-11-01",
             "2001-12-01",
             "2002-01-01",
             "2002-02-01",
             "2002-03-01",
             "2002-04-01",
             "2002-05-01",
             "2002-06-01",
         ],
         dtype="datetime64[ns]",
         freq="MS",
     )
     expected_df = pd.DataFrame.from_dict({
         f"0__{periodic_feature.__class__.__name__}": [
             0.0,
             0.25433547,
             0.42938198,
             0.49999537,
             0.43585316,
             0.25062091,
             0.0043035,
             -0.25062091,
             -0.43585316,
             -0.49999537,
             -0.42938198,
             -0.24688778,
             0.00860668,
             0.2617078,
             0.42938198,
             0.49999537,
             0.43585316,
             0.25062091,
             0.0043035,
             -0.25062091,
             -0.43585316,
             -0.49999537,
             -0.42938198,
             -0.24688778,
             0.00860668,
             0.2617078,
             0.42938198,
             0.49999537,
             0.43585316,
             0.25062091,
         ]
     })
     expected_df.index = expected_index
     pd.testing.assert_frame_equal(output_sin, expected_df)
    def test_correct_start_date(self):
        testing.N, testing.K = 20, 1
        ts = testing.makeTimeDataFrame(freq="s")
        start_date = "2018-01-01"
        periodic_feature = PeriodicSeasonal(period="1 days",
                                            start_date=start_date)
        periodic_feature.transform(ts)

        assert periodic_feature.start_date == ts.index.values[0]

        periodic_feature = PeriodicSeasonal(period="3 days",
                                            index_period=10,
                                            start_date=start_date)
        periodic_feature.transform()
        assert periodic_feature.start_date == pd.to_datetime(start_date)

        start_date = pd.to_datetime("2018-01-01")
        periodic_feature = PeriodicSeasonal(period="3 days",
                                            index_period=10,
                                            start_date=start_date)
        periodic_feature.transform()
        assert periodic_feature.start_date == start_date
    def test_missing_start_date_or_period(self):
        periodic_feature = PeriodicSeasonal()
        with pytest.raises(ValueError):
            periodic_feature.transform()

        periodic_feature = PeriodicSeasonal(index_period=1)
        with pytest.raises(ValueError):
            periodic_feature.transform()

        periodic_feature = PeriodicSeasonal(start_date="2010-01-01")
        with pytest.raises(ValueError):
            periodic_feature.transform()