def test_valid_serialization_unfit_model(self): """For a unfitted model to_dict and from_dict are opposites.""" # Setup instance = GaussianKDE() # Run result = GaussianKDE.from_dict(instance.to_dict()) # Check assert instance.to_dict() == result.to_dict()
def test_valid_serialization_fit_model(self): """For a fitted model to_dict and from_dict are opposites.""" # Setup instance = GaussianKDE() X = np.array([1, 2, 3, 4]) instance.fit(X) # Run result = GaussianKDE.from_dict(instance.to_dict()) # Check assert instance.to_dict() == result.to_dict()
def test_to_dict(self, kde_mock): """To_dict returns the defining parameters of a distribution in a dict.""" # Setup column = np.array([[ 0.4967141530112327, -0.13826430117118466, 0.6476885381006925, 1.5230298564080254, -0.23415337472333597, -0.23413695694918055, 1.5792128155073915, 0.7674347291529088, -0.4694743859349521, 0.5425600435859647 ]]) kde_instance_mock = kde_mock.return_value kde_instance_mock.dataset = column kde_instance_mock.resample.return_value = column distribution = GaussianKDE() distribution.fit(column) expected_result = { 'type': 'copulas.univariate.gaussian_kde.GaussianKDE', 'fitted': True, 'dataset': [[ 0.4967141530112327, -0.13826430117118466, 0.6476885381006925, 1.5230298564080254, -0.23415337472333597, -0.23413695694918055, 1.5792128155073915, 0.7674347291529088, -0.4694743859349521, 0.5425600435859647 ]], } # Run result = distribution.to_dict() # Check compare_nested_dicts(result, expected_result)
def test_to_dict_sample_size(self): model = GaussianKDE(sample_size=10) model.fit(self.constant) params = model.to_dict() assert params['type'] == 'copulas.univariate.gaussian_kde.GaussianKDE' assert len(params['dataset']) == 10
def test_to_dict_constant(self): model = GaussianKDE() model.fit(self.constant) params = model.to_dict() assert params == { 'type': 'copulas.univariate.gaussian_kde.GaussianKDE', 'dataset': [5] * 100 }
def test_to_dict_from_dict(self): model = GaussianKDE() model.fit(self.data) sampled_data = model.sample(50) params = model.to_dict() model2 = GaussianKDE.from_dict(params) pdf = model.probability_density(sampled_data) pdf2 = model2.probability_density(sampled_data) assert np.all(np.isclose(pdf, pdf2, atol=0.01)) cdf = model.cumulative_distribution(sampled_data) cdf2 = model2.cumulative_distribution(sampled_data) assert np.all(np.isclose(cdf, cdf2, atol=0.01))
def test_to_dict_from_dict_constant(self): model = GaussianKDE() model.fit(self.constant) sampled_data = model.sample(50) pdf = model.probability_density(sampled_data) cdf = model.cumulative_distribution(sampled_data) params = model.to_dict() model2 = GaussianKDE.from_dict(params) np.testing.assert_equal(np.full(50, 5), sampled_data) np.testing.assert_equal(np.full(50, 5), model2.sample(50)) np.testing.assert_equal(np.full(50, 1), pdf) np.testing.assert_equal(np.full(50, 1), model2.probability_density(sampled_data)) np.testing.assert_equal(np.full(50, 1), cdf) np.testing.assert_equal(np.full(50, 1), model2.cumulative_distribution(sampled_data))
def test_to_dict(self): """To_dict returns the defining parameters of a distribution in a dict.""" # Setup distribution = GaussianKDE() column = np.array([[ 0.4967141530112327, -0.13826430117118466, 0.6476885381006925, 1.5230298564080254, -0.23415337472333597, -0.23413695694918055, 1.5792128155073915, 0.7674347291529088, -0.4694743859349521, 0.5425600435859647 ]]) distribution.fit(column) expected_result = { 'type': 'copulas.univariate.gaussian_kde.GaussianKDE', 'fitted': True, 'constant_value': None, 'd': 1, 'n': 10, 'dataset': [[ 0.4967141530112327, -0.13826430117118466, 0.6476885381006925, 1.5230298564080254, -0.23415337472333597, -0.23413695694918055, 1.5792128155073915, 0.7674347291529088, -0.4694743859349521, 0.5425600435859647 ]], 'covariance': [[0.20810696044195218]], 'factor': 0.6309573444801932, 'inv_cov': [[4.805221304834407]] } # Run result = distribution.to_dict() # Check compare_nested_dicts(result, expected_result)