コード例 #1
0
    def test_load(self, json_mock, file_mock):
        """Load can recreate an instance from a saved file."""
        # 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
                      ]]
        json_mock.return_value = {
            '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
        instance = GaussianMultivariate.load('somefile.json')

        # Check
        assert (instance.covariance == np.array(
            [[
                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 instance.distribs.items():
            assert instance.distribs[name].to_dict(
            ) == json_mock.return_value['distribs'][name]
コード例 #2
0
    def test_load(self, json_mock, open_mock):
        """Load can recreate an instance from a saved file."""
        # 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
                      ]]
        json_mock.return_value = {
            '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
        instance = GaussianMultivariate.load('test.json')

        # Check
        assert (instance.covariance == np.array(
            [[
                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 a, b in zip(json_mock.columns, instance.columns):
            assert a == b

        for a, b in zip(json_mock.univariates, instance.univariates):
            assert a.to_dict() == b.to_dict()

        assert open_mock.called_once_with('test.json', 'r')