def transform(self, X): """ If X and self are of different shapes, align self to X, else return self. Parameters ---------- X : Triangle The triangle to be transformed Returns ------- X_new : New triangle with transformed attributes. """ X_new = copy.copy(X) if 'ldf_' not in X_new: X_new = Development().fit_transform(X_new) X_new.p_to_i_X_ = self._get_p_to_i_object(X_new) X_new.p_to_i_ldf_ = self._get_p_to_i_object(X_new.ldf_) X_new.p_to_i_sigma_ = self._get_p_to_i_object(X_new.sigma_) X_new.q_f_, X_new.rho_sigma_ = self._get_MCL_model(X_new) X_new.munich_full_triangle_ = self._get_munich_full_triangle_( X_new.p_to_i_X_, X_new.p_to_i_ldf_, X_new.p_to_i_sigma_, self.lambda_coef_, X_new.rho_sigma_, X_new.q_f_) X_new.ldf_ = self._set_ldf(X_new, self._get_mcl_cdf(X_new, X_new.munich_full_triangle_)) triangles = ['rho_', 'lambda_', 'lambda_coef_'] for item in triangles: setattr(X_new, item, getattr(self, item)) X_new._set_slicers() return X_new
def transform(self, X): """ If X and self are of different shapes, align self to X, else return self. Parameters ---------- X : Triangle The triangle to be transformed Returns ------- X_new : New triangle with transformed attributes. """ backend = X.array_backend if backend == "sparse": X_new = X.set_backend("numpy") else: X_new = X.copy() xp = X_new.get_array_module() self.xp = xp if "ldf_" not in X_new: X_new = Development().fit_transform(X_new) self.xp = X_new.get_array_module() X_new.p_to_i_X_ = self._get_p_to_i_object(X_new) X_new.p_to_i_ldf_ = self._get_p_to_i_object(X_new.ldf_) X_new.p_to_i_sigma_ = self._get_p_to_i_object(X_new.sigma_) X_new.q_f_, X_new.rho_sigma_ = self._get_MCL_model(X_new) X_new.munich_full_triangle_ = self._get_munich_full_triangle_( X_new.p_to_i_X_, X_new.p_to_i_ldf_, X_new.p_to_i_sigma_, self.lambda_coef_, X_new.rho_sigma_, X_new.q_f_, ) X_new.ldf_ = self._set_ldf( X_new, self._get_mcl_cdf(X_new, X_new.munich_full_triangle_) ) del self.xp triangles = ["rho_", "lambda_", "lambda_coef_"] for item in triangles: setattr(X_new, item, getattr(self, item)) X_new._set_slicers() X_new.sigma_ = X_new.std_err_ = X_new.ldf_ * 0 + 1 return X_new