Browse Source

Fix issue in Python when changepoint_range=1

Ben Letham 7 years ago
parent
commit
68ff9e577d

+ 2 - 0
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", {

+ 1 - 1
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)
                 )

+ 4 - 0
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)