in datasets/loans.py [0:0]
def get_queries(self, feats, N=None):
"""
get N queries from marginals (if N is None, return all queries)
"""
col_map = {}
for i, col in enumerate(self.domain.keys()):
col_map[col] = i
feat_pos = []
cur = 0
for f, sz in enumerate(self.domain.values()):
feat_pos.append(list(range(cur, cur + sz)))
cur += sz
queries = []
if N is None:
## output |feats| tuples of coordinate ranges if we want to enumerate all queries
for feat in feats:
queries.append([feat_pos[col_map[col]] for col in feat])
num_queries = sum(
[reduce(lambda x, y: x * y, [len(i) for i in q], 1) for q in queries]
)
return queries, num_queries
for feat in feats:
positions = []
for col in feat:
i = col_map[col]
positions.append(feat_pos[i])
for tup in itertools.product(*positions):
queries.append(tup)
num_queries = len(queries) if N == -1 else N
return np.array(queries, np.int)[:num_queries], num_queries