def test_to_dict(self): """To_dict returns the parameters to replicate the copula.""" # Setup copula = GaussianMultivariate() data = pd.read_csv('data/iris.data.csv') copula.fit(data) covariance = [[ 1.006711409395973, -0.11010327176239865, 0.8776048563471857, 0.823443255069628 ], [ -0.11010327176239865, 1.006711409395972, -0.4233383520816991, -0.3589370029669186 ], [ 0.8776048563471857, -0.4233383520816991, 1.006711409395973, 0.9692185540781536 ], [ 0.823443255069628, -0.3589370029669186, 0.9692185540781536, 1.0067114093959735 ]] expected_result = { 'covariance': covariance, 'fitted': True, 'type': 'copulas.multivariate.gaussian.GaussianMultivariate', 'distribution': 'copulas.univariate.gaussian.GaussianUnivariate', 'distribs': { 'feature_01': { 'type': 'copulas.univariate.gaussian.GaussianUnivariate', 'mean': 5.843333333333334, 'std': 0.8253012917851409, 'fitted': True, }, 'feature_02': { 'type': 'copulas.univariate.gaussian.GaussianUnivariate', 'mean': 3.0540000000000003, 'std': 0.4321465800705435, 'fitted': True, }, 'feature_03': { 'type': 'copulas.univariate.gaussian.GaussianUnivariate', 'mean': 3.758666666666666, 'std': 1.7585291834055212, 'fitted': True, }, 'feature_04': { 'type': 'copulas.univariate.gaussian.GaussianUnivariate', 'mean': 1.1986666666666668, 'std': 0.7606126185881716, 'fitted': True, } } } # Run result = copula.to_dict() # Check compare_nested_dicts(result, expected_result)
def test_from_dict(self): """from_dict generates a new instance from its parameters.""" # Setup copula = GaussianMultivariate() copula.fit(self.data) copula_dict = copula.to_dict() # Run new_copula = GaussianMultivariate.from_dict(copula_dict) # Asserts assert isinstance(new_copula, GaussianMultivariate) assert new_copula.columns == ['column1', 'column2', 'column3'] assert len(new_copula.univariates) == 3 for new_univariate, old_univariate in zip(copula.univariates, new_copula.univariates): assert new_univariate.to_dict() == old_univariate.to_dict()
def test_to_dict(self): """To_dict returns the parameters to replicate the copula.""" # Setup copula = GaussianMultivariate() copula.fit(self.data) # Run result = copula.to_dict() # Asserts assert result['type'] == 'copulas.multivariate.gaussian.GaussianMultivariate' assert result['columns'] == ['column1', 'column2', 'column3'] assert len(result['univariates']) == 3 expected_cov = copula._get_covariance(self.data).to_numpy().tolist() np.testing.assert_equal(result['covariance'], expected_cov) for univariate, result_univariate in zip(copula.univariates, result['univariates']): assert univariate.to_dict() == result_univariate