Пример #1
0
    def regressor(self):
        fit = self.fit
        if fit is None:
            fit = 'linear'
            self.fit = fit

        lfit = fit.lower()
        is_mean = 'average' in lfit
        is_expo = lfit == 'exponential'
        is_poly = not (is_mean or is_expo)

        reg = self._regressor
        if reg is None:
            if is_mean:
                reg = MeanRegressor()
            elif is_expo:
                reg = ExponentialRegressor()
            else:
                reg = PolynomialRegressor()
        elif is_poly and not isinstance(reg, PolynomialRegressor):
            reg = PolynomialRegressor()
        elif is_mean and not isinstance(reg, MeanRegressor):
            reg = MeanRegressor()
        elif is_expo and not isinstance(reg, ExponentialRegressor):
            reg = ExponentialRegressor()

        if is_poly:
            reg.set_degree(fit_to_degree(fit), refresh=False)

        reg.trait_set(xs=self.offset_xs,
                      ys=self.ys,
                      error_calc_type=self.error_type or 'SEM',
                      filter_outliers_dict=self.filter_outliers_dict,
                      tag=self.name)

        if self.truncate:
            reg.set_truncate(self.truncate)
        reg.calculate()

        self._regressor = reg
        return reg
Пример #2
0
class TruncateRegressionTest(TestCase):
    def setUp(self):
        self.reg = MeanRegressor()

    def test_pre_truncate(self):
        xs, ys, sol = pre_truncated_data()
        self.reg.trait_set(xs=xs, ys=ys)
        self.solution = sol
        self.reg.trait_set(xs=xs, ys=ys)
        self.reg.set_truncate('x<5')

        self.assertEqual(self.reg.mean, self.solution['pre_mean'])

    def test_post_truncate(self):
        xs, ys, sol = pre_truncated_data()
        self.reg.trait_set(xs=xs, ys=ys)
        self.solution = sol
        self.reg.trait_set(xs=xs, ys=ys)
        self.reg.set_truncate('x>=5')

        self.assertEqual(self.reg.mean, self.solution['post_mean'])
Пример #3
0
class TruncateRegressionTest(TestCase):
    def setUp(self):
        self.reg = MeanRegressor()

    def test_pre_truncate(self):
        xs, ys, sol = pre_truncated_data()
        self.reg.trait_set(xs=xs, ys=ys)
        self.solution = sol
        self.reg.trait_set(xs=xs, ys=ys)
        self.reg.set_truncate('x<5')

        self.assertEqual(self.reg.mean, self.solution['pre_mean'])

    def test_post_truncate(self):
        xs, ys, sol = pre_truncated_data()
        self.reg.trait_set(xs=xs, ys=ys)
        self.solution = sol
        self.reg.trait_set(xs=xs, ys=ys)
        self.reg.set_truncate('x>=5')

        self.assertEqual(self.reg.mean, self.solution['post_mean'])
Пример #4
0
    def regressor(self):
        fit = self.fit
        if fit is None:
            fit = 'linear'
            self.fit = fit

        lfit = fit.lower()
        is_mean = 'average' in lfit
        is_expo = lfit == 'exponential'
        is_poly = not (is_mean or is_expo)

        reg = self._regressor
        if reg is None:
            if is_mean:
                reg = MeanRegressor()
            elif is_expo:
                reg = ExponentialRegressor()
            else:
                reg = PolynomialRegressor()
        elif is_poly and not isinstance(reg, PolynomialRegressor):
            reg = PolynomialRegressor()
        elif is_mean and not isinstance(reg, MeanRegressor):
            reg = MeanRegressor()
        elif is_expo and not isinstance(reg, ExponentialRegressor):
            reg = ExponentialRegressor()

        if is_poly:
            reg.set_degree(fit_to_degree(fit), refresh=False)

        reg.trait_set(xs=self.offset_xs, ys=self.ys,
                      error_calc_type=self.error_type or 'SEM',
                      filter_outliers_dict=self.filter_outliers_dict,
                      tag=self.name)

        if self.truncate:
            reg.set_truncate(self.truncate)
        reg.calculate()

        self._regressor = reg
        return reg