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_from_dict(self): """ """ # Setup 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 ]] parameters = { 'covariance': covariance, 'distribs': { 'feature_01': { 'mean': 5.843333333333334, 'std': 0.8253012917851409 }, 'feature_02': { 'mean': 3.0540000000000003, 'std': 0.4321465800705435 }, 'feature_03': { 'mean': 3.758666666666666, 'std': 1.7585291834055212 }, 'feature_04': { 'mean': 1.1986666666666668, 'std': 0.7606126185881716 } } } # Run copula = GaussianMultivariate.from_dict(parameters) # Check assert (copula.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 ]]).all() for name, distrib in copula.distribs.items(): assert copula.distribs[name].to_dict( ) == parameters['distribs'][name] # This isn't to check the sampling, but that the copula is able to run. assert copula.sample(10).all().all()
def test_from_dict(self): """from_dict generates a new instance from its parameters.""" # Setup 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 ]] parameters = { 'covariance': covariance, 'fitted': True, 'type': 'copulas.multivariate.gaussian.GaussianMultivariate', 'distribution': 'copulas.univariate.gaussian.GaussianUnivariate', 'columns': ['feature_01', 'feature_02', 'feature_03', 'feature_04'], 'univariates': [{ 'type': 'copulas.univariate.gaussian.GaussianUnivariate', 'mean': 5.843333333333334, 'std': 0.8253012917851409, 'fitted': True, }, { 'type': 'copulas.univariate.gaussian.GaussianUnivariate', 'mean': 3.0540000000000003, 'std': 0.4321465800705435, 'fitted': True, }, { 'type': 'copulas.univariate.gaussian.GaussianUnivariate', 'mean': 3.758666666666666, 'std': 1.7585291834055212, 'fitted': True, }, { 'type': 'copulas.univariate.gaussian.GaussianUnivariate', 'mean': 1.1986666666666668, 'std': 0.7606126185881716, 'fitted': True, }] } # Run copula = GaussianMultivariate.from_dict(parameters) # Check assert (copula.covariance == covariance).all() for a, b in zip(parameters['columns'], copula.columns): assert a == b for a, b in zip(parameters['univariates'], copula.univariates): assert a == b.to_dict() # This isn't to check the sampling, but that the copula is able to run. assert copula.sample(10).all().all()