Source code for embedded_voting.embeddings.embeddings_generator_fully_polarized

import numpy as np
from embedded_voting.embeddings.embeddings import Embeddings
from embedded_voting.embeddings.embeddings_generator import EmbeddingsGenerator


[docs]class EmbeddingsGeneratorFullyPolarized(EmbeddingsGenerator): """ Create embeddings that are random vectors of the canonical basis. Parameters __________ n_voters: int Number of voters in the embeddings. n_dim: int Number of dimensions for the embeddings. prob: list The probabilities for each voter to be in each group. Default is uniform distribution. Examples -------- >>> np.random.seed(42) >>> generator = EmbeddingsGeneratorFullyPolarized(10, 5) >>> generator() Embeddings([[0., 1., 0., 0., 0.], [0., 0., 0., 0., 1.], [0., 0., 0., 1., 0.], [0., 0., 1., 0., 0.], [1., 0., 0., 0., 0.], [1., 0., 0., 0., 0.], [1., 0., 0., 0., 0.], [0., 0., 0., 0., 1.], [0., 0., 0., 1., 0.], [0., 0., 0., 1., 0.]]) """ def __init__(self, n_voters, n_dim, prob=None): super().__init__(n_voters, n_dim) if prob is None: prob = np.ones(self.n_dim) self.prob = np.array(prob) / np.sum(prob) def __call__(self, *args): voter_groups = np.random.choice(self.n_dim, self.n_voters, p=self.prob) return Embeddings(np.eye(self.n_dim)[voter_groups, :], norm=False)