def test3(self): examples = [ ['a', 1, 0, 1, 0, 1], ['b', 1, 0, 0, 0, 1], ['c', 1, 0, 1, 0, 0], ['d', 0, 1, 1, 0, 0], ['e', 0, 1, 1, 1, 0], ] nvars = len(examples[0]) - 2 attrs = list(range(1, nvars + 1)) npvals = [0] + [2] * nvars + [2] qBounds = [0] + [0] * nvars + [0] mdl = CrossValidate.makeNBClassificationModel(examples, attrs, npvals, qBounds) nWrong = 0 for eg in examples: p = mdl.ClassifyExample(eg) if p != eg[-1]: nWrong += 1 self.assertEqual(nWrong, 1) bitEx = [] for eg in examples: newEg = [eg[0], None, eg[-1]] bv = ExplicitBitVect(nvars) for i in range(nvars): if eg[i + 1]: bv.SetBit(i) newEg[1] = bv bitEx.append(newEg) attrs = list(range(nvars)) mdl2 = CrossValidate.makeNBClassificationModel(bitEx, attrs, npvals, qBounds, useSigs=True) nWrong = 0 for eg in bitEx: p = mdl2.ClassifyExample(eg) if p != eg[-1]: nWrong += 1 self.assertEqual(nWrong, 1) # now compare: for i in range(len(bitEx)): eg = examples[i] p1 = mdl.ClassifyExample(eg) bitEg = bitEx[i] p2 = mdl2.ClassifyExample(bitEg) self.assertEqual(p1, p2) v1 = mdl.GetClassificationDetails() v2 = mdl.GetClassificationDetails() self.assertAlmostEqual(v1, v2, 4)
def test3(self): examples = [ ['a', 1, 0, 1, 0, 1], ['b', 1, 0, 0, 0, 1], ['c', 1, 0, 1, 0, 0], ['d', 0, 1, 1, 0, 0], ['e', 0, 1, 1, 1, 0], ] nvars = len(examples[0]) - 2 attrs = range(1, nvars + 1) npvals = [0] + [2] * nvars + [2] qBounds = [0] + [0] * nvars + [0] mdl = CrossValidate.makeNBClassificationModel(examples, attrs, npvals, qBounds) nWrong = 0 for eg in examples: p = mdl.ClassifyExample(eg) if p != eg[-1]: nWrong += 1 self.assertEqual(nWrong, 1) bitEx = [] for eg in examples: newEg = [eg[0], None, eg[-1]] bv = ExplicitBitVect(nvars) for i in range(nvars): if eg[i + 1]: bv.SetBit(i) newEg[1] = bv bitEx.append(newEg) attrs = range(nvars) mdl2 = CrossValidate.makeNBClassificationModel(bitEx, attrs, npvals, qBounds, useSigs=True) nWrong = 0 for eg in bitEx: p = mdl2.ClassifyExample(eg) if p != eg[-1]: nWrong += 1 self.assertEqual(nWrong, 1) # now compare: for i in range(len(bitEx)): eg = examples[i] p1 = mdl.ClassifyExample(eg) bitEg = bitEx[i] p2 = mdl2.ClassifyExample(bitEg) self.assertEqual(p1, p2) v1 = mdl.GetClassificationDetails() v2 = mdl.GetClassificationDetails() self.assertAlmostEqual(p1, p2, 4)
def _test5(self) : # disabled because CMIM was removed examples = [ ['a', 1,0,1,0,1,1,0, 1], ['b', 1,0,0,0,1,0,0, 1], ['c', 1,0,1,0,1,1,0, 0], ['d', 0,1,1,0,1,0,0, 0], ['e', 0,1,1,1,0,1,0, 0], ] nvars = len(examples[0])-2 attrs = range(1,nvars+1) npvals = [0] + [2]*nvars + [2] qBounds = [0] + [0]*nvars + [0] bitEx = [] for eg in examples: newEg = [eg[0],None,eg[-1]] bv = ExplicitBitVect(nvars) for i in range(nvars): if eg[i+1]: bv.SetBit(i) # this bit will yield perfect accuracy if # the attrs argument isn't being used properly: newEg[1] = bv bitEx.append(newEg) attrs = range(nvars) mdl2 = CrossValidate.makeNBClassificationModel(bitEx,attrs,npvals,qBounds, useSigs=True,useCMIM=2) nWrong = 0 for eg in bitEx: p = mdl2.ClassifyExample(eg) if p != eg[-1]: nWrong +=1 self.assertEqual(nWrong,1)
def test4(self): examples = [ ['a', 1, 0, 1, 0, 1], ['b', 1, 0, 0, 0, 1], ['c', 1, 0, 1, 0, 0], ['d', 0, 1, 1, 0, 0], ['e', 0, 1, 1, 1, 0], ] nvars = len(examples[0]) - 2 attrs = range(1, nvars + 1) origNVars = nvars nvars = 10 npvals = [0] + [2] * nvars + [2] qBounds = [0] + [0] * nvars + [0] bitEx = [] for eg in examples: newEg = [eg[0], None, eg[-1]] bv = ExplicitBitVect(nvars) for i in range(origNVars): if eg[i + 1]: bv.SetBit(i) # this bit will yield perfect accuracy if # the attrs argument isn't being used properly: if eg[-1]: bv.SetBit(origNVars) newEg[1] = bv bitEx.append(newEg) attrs = range(origNVars) mdl2 = CrossValidate.makeNBClassificationModel(bitEx, attrs, npvals, qBounds, useSigs=True) nWrong = 0 for eg in bitEx: p = mdl2.ClassifyExample(eg) if p != eg[-1]: nWrong += 1 self.assertEqual(nWrong, 1)
def _test5(self): # disabled because CMIM was removed # pragma: nocover examples = [ ['a', 1, 0, 1, 0, 1, 1, 0, 1], ['b', 1, 0, 0, 0, 1, 0, 0, 1], ['c', 1, 0, 1, 0, 1, 1, 0, 0], ['d', 0, 1, 1, 0, 1, 0, 0, 0], ['e', 0, 1, 1, 1, 0, 1, 0, 0], ] nvars = len(examples[0]) - 2 npvals = [0] + [2] * nvars + [2] qBounds = [0] + [0] * nvars + [0] bitEx = [] for eg in examples: newEg = [eg[0], None, eg[-1]] bv = ExplicitBitVect(nvars) for i in range(nvars): if eg[i + 1]: bv.SetBit(i) # this bit will yield perfect accuracy if # the attrs argument isn't being used properly: newEg[1] = bv bitEx.append(newEg) attrs = list(range(nvars)) mdl2 = CrossValidate.makeNBClassificationModel(bitEx, attrs, npvals, qBounds, useSigs=True, useCMIM=2) nWrong = 0 for eg in bitEx: p = mdl2.ClassifyExample(eg) if p != eg[-1]: nWrong += 1 self.assertEqual(nWrong, 1)
def test4(self) : examples = [ ['a', 1,0,1,0, 1], ['b', 1,0,0,0, 1], ['c', 1,0,1,0, 0], ['d', 0,1,1,0, 0], ['e', 0,1,1,1, 0], ] nvars = len(examples[0])-2 attrs = range(1,nvars+1) origNVars=nvars nvars = 10 npvals = [0] + [2]*nvars + [2] qBounds = [0] + [0]*nvars + [0] bitEx = [] for eg in examples: newEg = [eg[0],None,eg[-1]] bv = ExplicitBitVect(nvars) for i in range(origNVars): if eg[i+1]: bv.SetBit(i) # this bit will yield perfect accuracy if # the attrs argument isn't being used properly: if eg[-1]: bv.SetBit(origNVars) newEg[1] = bv bitEx.append(newEg) attrs = range(origNVars) mdl2 = CrossValidate.makeNBClassificationModel(bitEx,attrs,npvals,qBounds, useSigs=True) nWrong = 0 for eg in bitEx: p = mdl2.ClassifyExample(eg) if p != eg[-1]: nWrong +=1 self.failUnless(nWrong==1)