Esempio n. 1
0
def attack_subset(n0, n1, ORwith, ORwo, err=.001):
    n = n0 + n1
    poss = at.attack_no_covar(n0, n1, ORwo, err)
    ret = []
    for gen in poss:
        y = [1 for i in range(0, n + 1)]
        for i in range(0, n0):
            y[i] = 0
            lr = LR(C=1e9)
            i0 = gen[0]
            i1 = gen[1]
            i2 = gen[2]
            j0 = gen[3]
            j1 = gen[4]
            j2 = gen[5]
            x = [0 for i in range(0, n + 1)]

            x[:i0] = [2 for i in range(0, i0)]
            cur = i0
            x[cur:cur + i1] = [1 for i in range(0, i1)]
            cur = cur + i1
            cur = cur + i2
            x[cur:cur + j0] = [2 for i in range(0, j0)]
            cur = cur + j0
            x[cur:cur + j1] = [1 for i in range(0, j1)]
            for i in range(0, 3):
                x[-1] = i
                lr.fit(np.asarray([x]).T, y)
                OR_cur = math.exp(float(lr.coef_))
                if abs(OR_cur - ORwith) < err:
                    ret.append(i)
                    print "match!\n"
    print len(ret)
    print len(poss)
    print ret