示例#1
0
    def test__get_model_dict(self):
        """_get_model_dict returns a pandas.Series with all the params to recreate a model."""
        # Setup
        X = np.eye(3)

        expected_result = {
            'covariance__0__0': 1.5000000000000009,
            'covariance__1__0': -0.7500000000000003,
            'covariance__1__1': 1.5000000000000009,
            'covariance__2__0': -0.7500000000000003,
            'covariance__2__1': -0.7500000000000003,
            'covariance__2__2': 1.5000000000000007,
            'distribs__0__mean': 0.33333333333333331,
            'distribs__0__std': -0.7520386983881371,
            'distribs__1__mean': 0.33333333333333331,
            'distribs__1__std': -0.7520386983881371,
            'distribs__2__mean': 0.33333333333333331,
            'distribs__2__std': -0.7520386983881371,
        }
        data_navigator = MagicMock()
        modeler = Modeler(data_navigator)

        # Run
        result = modeler._get_model_dict(X)

        # Check
        assert result == expected_result
示例#2
0
    def test__get_model_dict_default_model(self, log_mock):
        """Test get flatten model dict with default model"""
        # Setup
        model_fitted = Mock()
        model_fitted.covariance = [
            [1, 2, 3],
            [4, 5, 6],
            [7, 8, 9]
        ]

        distrib1 = Mock()
        distrib1.std = 0.2
        distrib2 = Mock()
        distrib2.std = None
        distrib3 = Mock()
        distrib3.std = 0.5
        distrib4 = Mock()
        distrib4.std = 0.3

        model_fitted.distribs = {
            'distrib1': distrib1,
            'distrib2': distrib2,
            'distrib3': distrib3,
            'distrib4': distrib4
        }

        # Run
        modeler = Mock(spec=Modeler)
        modeler._fit_model.return_value = model_fitted
        modeler._flatten_dict.return_value = 'result'

        data = pd.DataFrame({'data': [1, 2, 3]})

        result = Modeler._get_model_dict(modeler, data)

        # Asserts
        expected_log_mock_call = [
            call(0.2),
            call(0.5),
            call(0.3)
        ]

        assert result == 'result'
        assert sorted(log_mock.call_args_list) == sorted(expected_log_mock_call)

        pd.testing.assert_frame_equal(
            modeler._fit_model.call_args[0][0],
            pd.DataFrame({'data': [1, 2, 3]})
        )