From 68ff9e577d67aadc8ec8f44907ea017f44ff0e10 Mon Sep 17 00:00:00 2001 From: Ben Letham Date: Fri, 25 May 2018 17:00:27 -0700 Subject: [PATCH] Fix issue in Python when changepoint_range=1 --- R/tests/testthat/test_prophet.R | 2 ++ python/fbprophet/forecaster.py | 2 +- python/fbprophet/tests/test_prophet.py | 4 ++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/R/tests/testthat/test_prophet.R b/R/tests/testthat/test_prophet.R index efd9b6a..26f5111 100644 --- a/R/tests/testthat/test_prophet.R +++ b/R/tests/testthat/test_prophet.R @@ -139,6 +139,8 @@ test_that("set_changepoint_range", { expect_equal(length(cp), m$n.changepoints) expect_true(min(cp) > 0) expect_true(max(cp) <= history$t[ceiling(0.4 * length(history$t))]) + expect_error(prophet(history, changepoint.range = -0.1)) + expect_error(prophet(history, changepoint.range = 2)) }) test_that("get_zero_changepoints", { diff --git a/python/fbprophet/forecaster.py b/python/fbprophet/forecaster.py index 78b69a5..ba801d1 100644 --- a/python/fbprophet/forecaster.py +++ b/python/fbprophet/forecaster.py @@ -352,7 +352,7 @@ class Prophet(object): ) if self.n_changepoints > 0: cp_indexes = ( - np.linspace(0, hist_size, self.n_changepoints + 1) + np.linspace(0, hist_size - 1, self.n_changepoints + 1) .round() .astype(np.int) ) diff --git a/python/fbprophet/tests/test_prophet.py b/python/fbprophet/tests/test_prophet.py index 8d1c7d0..48b7a9b 100644 --- a/python/fbprophet/tests/test_prophet.py +++ b/python/fbprophet/tests/test_prophet.py @@ -169,6 +169,10 @@ class TestProphet(TestCase): self.assertTrue(cp.min() > 0) cp_indx = int(np.ceil(0.4 * history.shape[0])) self.assertTrue(cp.max() <= history['t'].values[cp_indx]) + with self.assertRaises(ValueError): + m = Prophet(changepoint_range=-0.1) + with self.assertRaises(ValueError): + m = Prophet(changepoint_range=2) def test_get_zero_changepoints(self): m = Prophet(n_changepoints=0)