def _get_parameters(self): """Get copula model parameters. Compute model ``covariance`` and ``distribution.std`` before it returns the flatten dict. Returns: dict: Copula parameters. Raises: NonParametricError: If a non-parametric distribution has been used. """ for univariate in self._model.univariates: if type(univariate) is copulas.univariate.Univariate: univariate = univariate._instance if univariate.PARAMETRIC == copulas.univariate.ParametricType.NON_PARAMETRIC: raise NonParametricError( "This GaussianCopula uses non parametric distributions") params = self._model.to_dict() covariance = list() for index, row in enumerate(params['covariance'][1:]): covariance.append(row[:index + 1]) params['covariance'] = covariance params['univariates'] = dict( zip(params.pop('columns'), params['univariates'])) return flatten_dict(params)
def get_parameters(self): """Get copula model parameters. Compute model ``covariance`` and ``distribution.std`` before it returns the flatten dict. Returns: dict: Copula flatten parameters. """ values = list() triangle = np.tril(self.model.covariance) for index, row in enumerate(triangle.tolist()): values.append(row[:index + 1]) self.model.covariance = np.array(values) params = self.model.to_dict() univariates = dict() for name, univariate in zip(params.pop('columns'), params['univariates']): univariates[name] = univariate if 'scale' in univariate: scale = univariate['scale'] if scale == 0: scale = EPSILON univariate['scale'] = np.log(scale) params['univariates'] = univariates return flatten_dict(params)
def get_parameters(self): """Get copula model parameters. Compute model ``covariance`` and ``distribution.std`` before it returns the flatten dict. Returns: dict: Copula parameters. Raises: NonParametricError: If a non-parametric distribution has been used. """ params = self._model.to_dict() covariance = list() for index, row in enumerate(params['covariance']): covariance.append(row[:index + 1]) univariates = dict() for name, univariate in zip(params.pop('columns'), params['univariates']): univariates[name] = univariate if 'scale' in univariate: scale = univariate['scale'] if scale == 0: scale = copulas.EPSILON univariate['scale'] = np.log(scale) params['univariates'] = univariates params['num_rows'] = self._num_rows return flatten_dict(params)
def get_parameters(self, flatten=False): """Get copula model parameters. Compute model ``covariance`` and ``distribution.std`` before it returns the flatten dict. Args: flatten (bool): Whether to flatten the parameters or not before returning them. Returns: dict: Copula parameters. """ parameters = self._model.to_dict() parameters['num_rows'] = self._num_rows if not flatten: return parameters values = list() triangle = np.tril(self._model.covariance) for index, row in enumerate(triangle.tolist()): values.append(row[:index + 1]) self._model.covariance = np.array(values) params = self._model.to_dict() univariates = dict() for name, univariate in zip(params.pop('columns'), params['univariates']): univariates[name] = univariate if 'scale' in univariate: scale = univariate['scale'] if scale == 0: scale = copulas.EPSILON univariate['scale'] = np.log(scale) params['univariates'] = univariates return flatten_dict(params)
def test_flatten_dict_with_prefix(): """Test get flatten dict with some result.""" # Run nested = { 'foo': 'value', 'bar': {'bar_dict': 'value_bar_dict'}, 'tar': ['value_tar_list_0', 'value_tar_list_1'], 'fitted': 'value_1', 'distribution': 'value_2', 'type': 'value_3' } result = flatten_dict(nested, prefix='test') # Asserts expected = { 'test__foo': 'value', 'test__bar__bar_dict': 'value_bar_dict', 'test__tar__0': 'value_tar_list_0', 'test__tar__1': 'value_tar_list_1' } assert result == expected