X = list() cnt = [0] * n_classes for i inrange(m): X.append(list(map(int, input().split()))) X[-1][0] -= 1# x[0], x[1] are from 1 here X[-1][1] -= 1 cnt[X[-1][-1]] += 1# X[-1][-1] is y p_classes = [X / m for X in cnt] # P(y=class[i])
# p_values[j][k][v] save the proba of P(Xj=v|y=k) p_values = [] for j inrange(n_features): # save value counts in each class of the j-th feature value_counts = [[0] * n_values[j] for y inrange(n_classes)] for i inrange(m): y = X[i][-1] value_counts[y][X[i][j]] += 1
# p_values[j][k][v] save the proba of P(Xj=v|y=k) p_values.append( [[value_counts[k][v]/cnt[k] if cnt[k] else0 for v inrange(n_values[j])] for k inrange(n_classes)] )
ans = list() n = int(input()) for line inrange(n): xi = list(map(int, input().split())) xi[0] -= 1 xi[1] -= 1 y_pred, maxp = 0, 0 for k inrange(n_classes): p = 1 # to calclate P(x=xi|y=k) for j inrange(n_features): v = xi[j] p *= p_values[j][k][v] p *= p_classes[k] if p > maxp: y_pred, maxp = k, p ans.append(y_pred)