def test_as_np_vector_ndarray_2d(self): p = SkProphet('date', True, [], {}) y = np.array([[1, 4], [2, 5], [3, 6]]) _y = p._as_np_vector(y) self.assertIsInstance(_y, np.ndarray) self.assertEqual(len(_y.shape), 1) self.assertEqual(_y.tolist(), [1, 2, 3])
def test_as_np_vector_dataframe_2d(self): p = SkProphet('date', True, [], {}) y = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]}) _y = p._as_np_vector(y) self.assertIsInstance(_y, np.ndarray) self.assertEqual(len(_y.shape), 1) self.assertEqual(_y.tolist(), [1, 2, 3])
def test_as_np_vector_series(self): p = SkProphet('date', True, [], {}) y = pd.Series([1, 2, 3]) _y = p._as_np_vector(y) self.assertIsInstance(_y, np.ndarray) self.assertEqual(len(_y.shape), 1) self.assertEqual(_y.tolist(), [1, 2, 3])
def test_prophet_kwargs_set_params(self): prophet_original_pars = {'n_changepoints': 10} m = SkProphet(prophet_kwargs=prophet_original_pars) prophet_new_pars = { 'prophet_kwargs': { 'yearly_seasonality': 4 }, 'n_changepoints': 2, } m.set_params(**prophet_new_pars) expected_prophet_kwargs = { 'yearly_seasonality': 4, 'n_changepoints': 2 } self.assertEqual(m.prophet_kwargs, expected_prophet_kwargs) self.assertEqual(m.yearly_seasonality, 4) self.assertEqual(m.n_changepoints, 2)
def test_init_extra_regressors_dict(self): sk_date_column = 'ds' sk_yhat_only = True sk_extra_regressors = [dict(name='x', mode='multiplicative')] prophet_kwargs = {'daily_seasonality': True} p = SkProphet(sk_date_column, sk_yhat_only, sk_extra_regressors, prophet_kwargs) # Extra regressors are set on initialization self.assertTrue(p.extra_regressors)
def test_init_extra_regressors_type_error(self): sk_date_column = 'ds' sk_yhat_only = True sk_extra_regressors = [4] prophet_kwargs = {'daily_seasonality': True} # Extra regressors of a bad type with self.assertRaises(TypeError): SkProphet(sk_date_column, sk_yhat_only, sk_extra_regressors, prophet_kwargs)
def test_init_extra_regressors_str(self): sk_date_column = 'ds' sk_yhat_only = True sk_extra_regressors = ['x'] prophet_kwargs = {'daily_seasonality': True} p = SkProphet(sk_date_column, sk_yhat_only, sk_extra_regressors, prophet_kwargs) # Extra regressors are set on initialization self.assertTrue(p.extra_regressors)
def test_init(self): sk_date_column = 'ds' sk_yhat_only = True sk_extra_regressors = [] prophet_kwargs = {'daily_seasonality': True} p = SkProphet(sk_date_column, sk_yhat_only, sk_extra_regressors, prophet_kwargs) # No extra regressors self.assertTrue(p.daily_seasonality) self.assertFalse(p.extra_regressors)
def test_repr(self): # Initialize sk_date_column = 'date' sk_yhat_only = False sk_extra_regressors = [dict(name='x', mode='multiplicative')] prophet_kwargs = {'daily_seasonality': True} skprophet = SkProphet(sk_date_column, sk_yhat_only, sk_extra_regressors, prophet_kwargs) # Assert: do not assert prophet internal attributes expected = ('SkProphet(' 'sk_date_column="date", ' 'sk_yhat_only=False, ' 'sk_extra_regressors=') self.assertEqual(str(skprophet)[:len(expected)], expected)
def test_get_params_shallow(self): sk_date_column = 'ds' sk_yhat_only = True sk_extra_regressors = [dict(name='x', mode='multiplicative')] prophet_kwargs = {'daily_seasonality': True} p = SkProphet(sk_date_column, sk_yhat_only, sk_extra_regressors, prophet_kwargs) # Assert shallow equality params = p.get_params(deep=False) self.assertEqual(len(params), 4) self.assertEqual(params['sk_date_column'], sk_date_column) self.assertEqual(params['sk_yhat_only'], sk_yhat_only) self.assertEqual(params['sk_extra_regressors'], sk_extra_regressors) self.assertEqual( params['prophet_kwargs']['daily_seasonality'], prophet_kwargs['daily_seasonality'], ) # Assert shallow same objects self.assertTrue(params['sk_date_column'] is sk_date_column) self.assertTrue(params['sk_extra_regressors'] is sk_extra_regressors) self.assertTrue( params['sk_extra_regressors'][0] is sk_extra_regressors[0]) self.assertTrue(params['prophet_kwargs'] is prophet_kwargs)
def test_set_params(self): sk_date_column = 'ds' sk_yhat_only = True sk_extra_regressors = [dict(name='x', mode='multiplicative')] prophet_kwargs = {'daily_seasonality': True} p = SkProphet(sk_date_column, sk_yhat_only, sk_extra_regressors, prophet_kwargs) # Alternative params alternative_params = { 'sk_date_column': 'date', 'sk_extra_regressors': [dict(name='z')], } new_params = p.get_params(deep=True) new_params.update(alternative_params) # Assert params p.set_params(**new_params) params = p.get_params(deep=False) self.assertEqual(new_params, params) self.assertEqual(p.sk_date_column, 'date') self.assertEqual(len(p.sk_extra_regressors), 1) self.assertEqual(p.sk_extra_regressors[0]['name'], 'z')
def test_estimate_rename_ds(self): p = SkProphet('date', True, [], {}) X = self._get_dataset() X = X.rename({'ds': 'date'}, axis=1) y_pred = p.fit(X).predict(X) self.assertIsInstance(y_pred, np.ndarray)
def test_estimate_full_output(self): p = SkProphet('ds', False, [], {}) X = self._get_dataset() y_pred = p.fit(X).predict(X) self.assertIsInstance(y_pred, pd.DataFrame)
def test_estimate(self): p = SkProphet('ds', True, [], {}) X = self._get_dataset() y_pred = p.fit(X).predict(X) self.assertIsInstance(y_pred, np.ndarray)
def test_fit_X_not_dataframe_error(self): p = SkProphet('ds', True, [], {}) X = [[1, 2], [3, 4]] with self.assertRaises(TypeError): p.fit(X)
def test_fit_y_list(self): p = SkProphet('date', True, [], {}) X = self._get_dataset() p2 = p.fit(X[['ds', 'x']], X.y.values.tolist()) self.assertEqual(p, p2)
def test_fit_y_str(self): p = SkProphet('date', True, [], {}) X = self._get_dataset() X = X.rename({'y': 'mica'}, axis=1) p2 = p.fit(X, 'mica') self.assertEqual(p, p2)
def test_fit_X_only_rename_ds(self): p = SkProphet('date', True, [], {}) X = self._get_dataset() X = X.rename({'ds': 'date'}, axis=1) p2 = p.fit(X) self.assertEqual(p, p2)
def test_fit_X_only(self): p = SkProphet('ds', True, [], {}) X = self._get_dataset() p2 = p.fit(X) self.assertEqual(p, p2)