def test_from_dict(self): """From_dict sets the values of a dictionary as attributes of the instance.""" # Setup parameters = { 'fitted': True, 'dataset': [[ 0.4967141530112327, -0.13826430117118466, 0.6476885381006925, 1.5230298564080254, -0.23415337472333597, -0.23413695694918055, 1.5792128155073915, 0.7674347291529088, -0.4694743859349521, 0.5425600435859647 ]], } # Run distribution = GaussianKDE.from_dict(parameters) # Check assert distribution.model.d == 1 assert distribution.model.n == 10 assert distribution.model.covariance == np.array( [[0.20810696044195226]]) assert distribution.model.factor == 0.6309573444801932 assert distribution.model.inv_cov == np.array([[4.805221304834406]]) assert (distribution.model.dataset == np.array([[ 0.4967141530112327, -0.13826430117118466, 0.6476885381006925, 1.5230298564080254, -0.23415337472333597, -0.23413695694918055, 1.5792128155073915, 0.7674347291529088, -0.4694743859349521, 0.5425600435859647 ]])).all()
def from_dict(cls, vine_dict): """Create a new instance from a parameters dictionary. Args: params (dict): Parameters of the Vine, in the same format as the one returned by the ``to_dict`` method. Returns: Vine: Instance of the Vine defined on the parameters. """ instance = cls(vine_dict['vine_type']) fitted = vine_dict['fitted'] if fitted: instance.fitted = fitted instance.n_sample = vine_dict['n_sample'] instance.n_var = vine_dict['n_var'] instance.truncated = vine_dict['truncated'] instance.depth = vine_dict['depth'] instance.trees = cls._deserialize_trees(vine_dict['trees']) instance.unis = [ GaussianKDE.from_dict(uni) for uni in vine_dict['unis'] ] instance.ppfs = [uni.percent_point for uni in instance.unis] instance.columns = vine_dict['columns'] instance.tau_mat = np.array(vine_dict['tau_mat']) instance.u_matrix = np.array(vine_dict['u_matrix']) return instance
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 from_dict(cls, vine_dict): instance = cls(vine_dict['vine_type']) fitted = vine_dict['fitted'] if fitted: instance.fitted = fitted instance.n_sample = vine_dict['n_sample'] instance.n_var = vine_dict['n_var'] instance.truncated = vine_dict['truncated'] instance.depth = vine_dict['depth'] instance.trees = cls._deserialize_trees(vine_dict['trees']) instance.unis = [GaussianKDE.from_dict(uni) for uni in vine_dict['unis']] instance.tau_mat = np.array(vine_dict['tau_mat']) instance.u_matrix = np.array(vine_dict['u_matrix']) return instance
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))