def main(): dataset = 'adult' workload = 8 marginal = 3 data, workloads = benchmarks.randomKway(dataset, workload, marginal) N = data.df.shape[0] ###################################################### ## Get Queries ###################################################### stime = time.time() query_manager = QueryManager(data.domain, workloads) print("Number of queries = ", len(query_manager.queries)) W_p = query_manager.get_query_workload([1, 4, 7, 100]) W_n = query_manager.get_query_workload([2, 5, 10, 11]) # q_neg(D) = 1 - q(D) D = W_p.shape[1] noise = np.random.exponential(1, D) # noise = np.zeros( D) print(f'noise.shape = {noise.shape}') x = oracle_weighted.solve(W_p, np.ones(4), W_n, np.ones(4), noise, data.domain, 0) print(f'best score = {get_score(x, W_p, W_n, noise, marginal)}')
type=float, default=0.05, help='noise hyperparameter') parser.add_argument('--samples', type=int, default=50, help='samples hyperparameter') args = parser.parse_args() print("=============================================") print(vars(args)) ###################################################### ## Get dataset ###################################################### data, workloads = benchmarks.randomKway(args.dataset[0], args.workload[0], args.marginal[0]) N = data.df.shape[0] delta = 1.0 / N**2 ###################################################### ## Get Queries ###################################################### stime = time.time() query_manager = QueryManager(data.domain, workloads) print("Number of queries = ", len(query_manager.queries)) real_ans = query_manager.get_answer(data) res = [] for eps in args.epsilon: