Source code for embedded_voting.rules.singlewinner_rules.rule_positional_k_approval

import numpy as np
from embedded_voting.embeddings.embeddings import Embeddings
from embedded_voting.rules.singlewinner_rules.rule_positional import RulePositional
from embedded_voting.rules.singlewinner_rules.rule_svd_nash import RuleSVDNash


[docs]class RulePositionalKApproval(RulePositional): """ This class enables to extend a voting rule to an ordinal input with k-Approval rule (vector ``[1, 1, ..., 0]`` with `k` ones). Parameters ---------- k : int The k parameter of the k-approval. By default, it is set to 2. rule : Rule The aggregation rule used to determine the aggregated scores of the candidates. Examples -------- >>> ratings = np.array([[.1, .2, .8, 1], [.7, .9, .8, .6], [1, .6, .1, .3]]) >>> embeddings = Embeddings(np.array([[1, 0], [1, 1], [0, 1]]), norm=True) >>> election = RulePositionalKApproval(n_candidates=4, k=2, rule=RuleSVDNash(use_rank=True))( ... ratings, embeddings) >>> election.fake_ratings_ Ratings([[0., 0., 1., 1.], [0., 1., 1., 0.], [1., 1., 0., 0.]]) >>> election.ranking_ [1, 2, 0, 3] """ def __init__(self, n_candidates, k=2, rule=None): if k >= n_candidates: raise ValueError("k should be < n_candidates") points = [1]*k + [0]*(n_candidates-k) super().__init__(points, rule)