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)
示例#2
0
    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()
示例#3
0
    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