def mahalanobis_distance(self):
retrain=False
# calculate expected value Mahalanobis distance
MDtheo = self.Dnew.outputs.size
try:
MDtheovar = 2*self.Dnew.outputs.size*\
(self.Dnew.outputs.size + self.Dold.outputs.size\
-self.par.beta.size - 2.0)/\
(self.Dold.outputs.size-self.par.beta.size-4.0)
print("theoretical Mahalanobis_distance (mean, var):" \
"(", MDtheo, "," , MDtheovar, ")")
except ZeroDivisionError as e:
print("theoretical Mahalanobis_distance mean:", MDtheo, \
"(too few data for variance)")
# calculate actual Mahalanobis distance from data
MD = ( (self.Dnew.outputs-self.mean).T ).dot\
( linalg.solve( self.var , (self.Dnew.outputs-self.mean) ) )
print("calculated Mahalanobis_distance:", MD)
retrain=True
return retrain
评论列表
文章目录