def compute_score(self, conf, hy):
RS = recall_score(self.y, hy, average=None)
conf['_all_f1'] = M = {str(self.le.inverse_transform([klass])[0]): f1 for klass, f1 in enumerate(f1_score(self.y, hy, average=None))}
conf['_all_recall'] = {str(self.le.inverse_transform([klass])[0]): f1 for klass, f1 in enumerate(RS)}
conf['_all_precision'] = N = {str(self.le.inverse_transform([klass])[0]): f1 for klass, f1 in enumerate(precision_score(self.y, hy, average=None))}
conf['_macrorecall'] = np.mean(RS)
if len(self.le.classes_) == 2:
conf['_macrof1'] = np.mean(np.array([v for v in conf['_all_f1'].values()]))
conf['_weightedf1'] = conf['_microf1'] = f1_score(self.y, hy, average='binary')
else:
conf['_macrof1'] = f1_score(self.y, hy, average='macro')
conf['_microf1'] = f1_score(self.y, hy, average='micro')
conf['_weightedf1'] = f1_score(self.y, hy, average='weighted')
conf['_accuracy'] = accuracy_score(self.y, hy)
if self.score.startswith('avgf1:'):
_, k1, k2 = self.score.split(':')
conf['_' + self.score] = (M[k1] + M[k2]) / 2
elif self.score.startswith('avgf1f0:'):
_, k1, k2 = self.score.split(':')
pos = (M[k1] + N[k1]) / 2.
neg = (M[k2] + N[k2]) / 2.
conf['_' + self.score] = (pos + neg) / 2.
conf['_score'] = conf['_' + self.score]
评论列表
文章目录