def patchIt(i,testInst):
testInst = testInst.values
C = changes()
def proj(one, two, test):
a = edist(one, test)
b = edist(two, test)
c = edist(one, two)
return (a**2-b**2+c**2)/(2*c)
better = sorted(i.pairs, key= lambda x: proj(x[0].sample, x[1].sample, testInst), reverse=True)[0]
(toMe, notToMe) = (better[0], better[1]) if better[0].sample[-1]<=better[1].sample[-1] else (better[1], better[0])
newInst = testInst + 0.5*(toMe.sample-testInst)
# set_trace()
if i.fsel:
old=testInst
indx = i.lbs[:int(len(i.lbs)*0.33)]
for n in indx:
C.save(name=i.testDF.columns.values[n], old=testInst[n], new=newInst[n])
testInst[n] = newInst[n]
i.change.append(C.log)
return testInst
else:
return newInst
评论列表
文章目录