def test_holidays(self): holidays = pd.DataFrame({ 'ds': pd.to_datetime(['2016-12-25']), 'holiday': ['xmas'], 'lower_window': [-1], 'upper_window': [0], }) model = Prophet(holidays=holidays) df = pd.DataFrame({ 'ds': pd.date_range('2016-12-20', '2016-12-31') }) feats = model.make_holiday_features(df['ds']) # 11 columns generated even though only 8 overlap self.assertEqual(feats.shape, (df.shape[0], 2)) self.assertEqual((feats.sum(0) - np.array([1.0, 1.0])).sum(), 0) holidays = pd.DataFrame({ 'ds': pd.to_datetime(['2016-12-25']), 'holiday': ['xmas'], 'lower_window': [-1], 'upper_window': [10], }) feats = Prophet(holidays=holidays).make_holiday_features(df['ds']) # 12 columns generated even though only 8 overlap self.assertEqual(feats.shape, (df.shape[0], 12))
def test_holidays(self): holidays = pd.DataFrame({ 'ds': pd.to_datetime(['2016-12-25']), 'holiday': ['xmas'], 'lower_window': [-1], 'upper_window': [0], }) model = Prophet(holidays=holidays) df = pd.DataFrame({'ds': pd.date_range('2016-12-20', '2016-12-31')}) feats = model.make_holiday_features(df['ds']) # 11 columns generated even though only 8 overlap self.assertEqual(feats.shape, (df.shape[0], 2)) self.assertEqual((feats.sum(0) - np.array([1.0, 1.0])).sum(), 0) holidays = pd.DataFrame({ 'ds': pd.to_datetime(['2016-12-25']), 'holiday': ['xmas'], 'lower_window': [-1], 'upper_window': [10], }) feats = Prophet(holidays=holidays).make_holiday_features(df['ds']) # 12 columns generated even though only 8 overlap self.assertEqual(feats.shape, (df.shape[0], 12))
def test_holidays(self): holidays = pd.DataFrame({ 'ds': pd.to_datetime(['2016-12-25']), 'holiday': ['xmas'], 'lower_window': [-1], 'upper_window': [0], }) model = Prophet(holidays=holidays) df = pd.DataFrame({ 'ds': pd.date_range('2016-12-20', '2016-12-31') }) feats, priors, names = model.make_holiday_features(df['ds']) # 11 columns generated even though only 8 overlap self.assertEqual(feats.shape, (df.shape[0], 2)) self.assertEqual((feats.sum(0) - np.array([1.0, 1.0])).sum(), 0) self.assertEqual(priors, [10., 10.]) # Default prior self.assertEqual(names, ['xmas']) holidays = pd.DataFrame({ 'ds': pd.to_datetime(['2016-12-25']), 'holiday': ['xmas'], 'lower_window': [-1], 'upper_window': [10], }) m = Prophet(holidays=holidays) feats, priors, names = m.make_holiday_features(df['ds']) # 12 columns generated even though only 8 overlap self.assertEqual(feats.shape, (df.shape[0], 12)) self.assertEqual(priors, list(10. * np.ones(12))) self.assertEqual(names, ['xmas']) # Check prior specifications holidays = pd.DataFrame({ 'ds': pd.to_datetime(['2016-12-25', '2017-12-25']), 'holiday': ['xmas', 'xmas'], 'lower_window': [-1, -1], 'upper_window': [0, 0], 'prior_scale': [5., 5.], }) m = Prophet(holidays=holidays) feats, priors, names = m.make_holiday_features(df['ds']) self.assertEqual(priors, [5., 5.]) self.assertEqual(names, ['xmas']) # 2 different priors holidays2 = pd.DataFrame({ 'ds': pd.to_datetime(['2012-06-06', '2013-06-06']), 'holiday': ['seans-bday'] * 2, 'lower_window': [0] * 2, 'upper_window': [1] * 2, 'prior_scale': [8] * 2, }) holidays2 = pd.concat((holidays, holidays2)) m = Prophet(holidays=holidays2) feats, priors, names = m.make_holiday_features(df['ds']) pn = zip(priors, [s.split('_delim_')[0] for s in feats.columns]) for t in pn: self.assertIn(t, [(8., 'seans-bday'), (5., 'xmas')]) holidays2 = pd.DataFrame({ 'ds': pd.to_datetime(['2012-06-06', '2013-06-06']), 'holiday': ['seans-bday'] * 2, 'lower_window': [0] * 2, 'upper_window': [1] * 2, }) holidays2 = pd.concat((holidays, holidays2)) feats, priors, names = Prophet( holidays=holidays2, holidays_prior_scale=4 ).make_holiday_features(df['ds']) self.assertEqual(set(priors), {4., 5.}) # Check incompatible priors holidays = pd.DataFrame({ 'ds': pd.to_datetime(['2016-12-25', '2016-12-27']), 'holiday': ['xmasish', 'xmasish'], 'lower_window': [-1, -1], 'upper_window': [0, 0], 'prior_scale': [5., 6.], }) with self.assertRaises(ValueError): Prophet(holidays=holidays).make_holiday_features(df['ds'])
def test_holidays(self): holidays = pd.DataFrame({ 'ds': pd.to_datetime(['2016-12-25']), 'holiday': ['xmas'], 'lower_window': [-1], 'upper_window': [0], }) model = Prophet(holidays=holidays) df = pd.DataFrame({'ds': pd.date_range('2016-12-20', '2016-12-31')}) feats, priors, names = model.make_holiday_features( df['ds'], model.holidays) # 11 columns generated even though only 8 overlap self.assertEqual(feats.shape, (df.shape[0], 2)) self.assertEqual((feats.sum(0) - np.array([1.0, 1.0])).sum(), 0) self.assertEqual(priors, [10., 10.]) # Default prior self.assertEqual(names, ['xmas']) holidays = pd.DataFrame({ 'ds': pd.to_datetime(['2016-12-25']), 'holiday': ['xmas'], 'lower_window': [-1], 'upper_window': [10], }) m = Prophet(holidays=holidays) feats, priors, names = m.make_holiday_features(df['ds'], m.holidays) # 12 columns generated even though only 8 overlap self.assertEqual(feats.shape, (df.shape[0], 12)) self.assertEqual(priors, list(10. * np.ones(12))) self.assertEqual(names, ['xmas']) # Check prior specifications holidays = pd.DataFrame({ 'ds': pd.to_datetime(['2016-12-25', '2017-12-25']), 'holiday': ['xmas', 'xmas'], 'lower_window': [-1, -1], 'upper_window': [0, 0], 'prior_scale': [5., 5.], }) m = Prophet(holidays=holidays) feats, priors, names = m.make_holiday_features(df['ds'], m.holidays) self.assertEqual(priors, [5., 5.]) self.assertEqual(names, ['xmas']) # 2 different priors holidays2 = pd.DataFrame({ 'ds': pd.to_datetime(['2012-06-06', '2013-06-06']), 'holiday': ['seans-bday'] * 2, 'lower_window': [0] * 2, 'upper_window': [1] * 2, 'prior_scale': [8] * 2, }) holidays2 = pd.concat((holidays, holidays2), sort=True) m = Prophet(holidays=holidays2) feats, priors, names = m.make_holiday_features(df['ds'], m.holidays) pn = zip(priors, [s.split('_delim_')[0] for s in feats.columns]) for t in pn: self.assertIn(t, [(8., 'seans-bday'), (5., 'xmas')]) holidays2 = pd.DataFrame({ 'ds': pd.to_datetime(['2012-06-06', '2013-06-06']), 'holiday': ['seans-bday'] * 2, 'lower_window': [0] * 2, 'upper_window': [1] * 2, }) holidays2 = pd.concat((holidays, holidays2), sort=True) feats, priors, names = Prophet( holidays=holidays2, holidays_prior_scale=4).make_holiday_features(df['ds'], holidays2) self.assertEqual(set(priors), {4., 5.}) # Check incompatible priors holidays = pd.DataFrame({ 'ds': pd.to_datetime(['2016-12-25', '2016-12-27']), 'holiday': ['xmasish', 'xmasish'], 'lower_window': [-1, -1], 'upper_window': [0, 0], 'prior_scale': [5., 6.], }) with self.assertRaises(ValueError): Prophet(holidays=holidays).make_holiday_features( df['ds'], holidays)