model = BinModel(newmodels[0].get_xx(), allmodel) return model # Both models are BinModels @staticmethod def combine(one, two): if not one.scaled or not two.scaled: raise ValueError("Cannot combine unscaled models") (one, two, xx) = UnivariateModel.intersect_x(one, two) allxx = set(one.xx) | set(two.xx) allxx = np.array(allxx) midpts = (allxx[1:] + allxx[:-1]) / 2 onemodel = one.model.recategorize_x(map(model.get_bin_at, midpts), range(1, len(allxx))) twomodel = two.model.recategorize_x(map(model.get_bin_at, midpts), range(1, len(allxx))) model = Model.combine([onemodel, twomodel], [1, 1]) return BinModel(allxx, model, True) from ddp_model import DDPModel Model.mergers["bin_model"] = BinModel.merge Model.mergers["bin_model+ddp_model"] = lambda models: DDPModel.merge(map(lambda m: m.to_ddp(), models)) Model.mergers["bin_model+spline_model"] = lambda models: DDPModel.merge(map(lambda m: m.to_ddp(), models)) Model.combiners['bin_model+bin_model'] = BinModel.combine Model.combiners["bin_model+ddp_model"] = lambda one, two: DDPModel.combine(one.to_ddp(), two) Model.combiners["bin_model+spline_model"] = lambda one, two: DDPModel.combine(one.to_ddp(), two)
if not one.scaled or not two.scaled: raise ValueError("Cannot combine unscaled models") (one, two, xx) = UnivariateModel.intersect_x(one, two) allxx = set(one.xx) | set(two.xx) allxx = np.array(allxx) midpts = (allxx[1:] + allxx[:-1]) / 2 onemodel = one.model.recategorize_x(map(model.get_bin_at, midpts), range(1, len(allxx))) twomodel = two.model.recategorize_x(map(model.get_bin_at, midpts), range(1, len(allxx))) model = Model.combine([onemodel, twomodel], [1, 1]) return BinModel(allxx, model, True) from ddp_model import DDPModel Model.mergers["bin_model"] = BinModel.merge Model.mergers["bin_model+ddp_model"] = lambda models: DDPModel.merge( map(lambda m: m.to_ddp(), models)) Model.mergers["bin_model+spline_model"] = lambda models: DDPModel.merge( map(lambda m: m.to_ddp(), models)) Model.combiners['bin_model+bin_model'] = BinModel.combine Model.combiners["bin_model+ddp_model"] = lambda one, two: DDPModel.combine( one.to_ddp(), two) Model.combiners["bin_model+spline_model"] = lambda one, two: DDPModel.combine( one.to_ddp(), two)