def test_piecewise_regressor_diff(self): X = numpy.array([[0.1], [0.2], [0.3], [0.4], [0.5]]) Y = numpy.array([1., 1.1, 1.2, 10, 1.4]) clr = LinearRegression() clr.fit(X, Y) clq = PiecewiseRegressor(verbose=False) clq.fit(X, Y) pred1 = clr.predict(X) self.assertNotEmpty(pred1) pred2 = clq.predict(X) self.assertEqual(len(clq.estimators_), 2) p1 = clq.estimators_[0].predict(X[:3, :]) p2 = clq.estimators_[1].predict(X[3:, :]) self.assertEqual(pred2[:3], p1) self.assertEqual(pred2[-2:], p2) sc = clq.score(X, Y) self.assertEqual(sc, 1)
def test_piecewise_regressor_no_intercept_bins(self): X = numpy.array([[0.1, 0.2], [0.2, 0.3], [0.2, 0.35], [0.2, 0.36]]) Y = numpy.array([1., 1.1, 1.15, 1.2]) clr = LinearRegression(fit_intercept=False) clr.fit(X, Y) clq = PiecewiseRegressor(binner="bins") clq.fit(X, Y) pred1 = clr.predict(X) pred2 = clq.predict(X) self.assertEqual(pred1.shape, (4, )) self.assertEqual(pred2.shape, (4, )) sc1 = clr.score(X, Y) sc2 = clq.score(X, Y) self.assertIsInstance(sc1, float) self.assertIsInstance(sc2, float) paths = clq.binner_.transform(X) self.assertIn(paths.shape, ((4, 7), (4, 8), (4, 9), (4, 10))) self.assertNotEqual(pred2.min(), pred2.max())
def test_piecewise_regressor_no_intercept(self): X = numpy.array([[0.1, 0.2], [0.2, 0.3], [0.2, 0.35], [0.2, 0.36]]) Y = numpy.array([1., 1.1, 1.15, 1.2]) clr = LinearRegression(fit_intercept=False) clr.fit(X, Y) clq = PiecewiseRegressor() clq.fit(X, Y) pred1 = clr.predict(X) pred2 = clq.predict(X) self.assertEqual(pred1.shape, (4, )) self.assertEqual(pred2.shape, (4, )) sc1 = clr.score(X, Y) sc2 = clq.score(X, Y) sc3 = clq.binner_.score(X, Y) self.assertIsInstance(sc1, float) self.assertIsInstance(sc2, float) self.assertIsInstance(sc3, float) paths = clq.binner_.decision_path(X) s = paths.sum() self.assertEqual(s, 8) self.assertNotEqual(pred2.min(), pred2.max()) self.assertGreater(clq.n_estimators_, 1)