in tensorflow_decision_forests/component/inspector/inspector.py [0:0]
def _proto_evaluation_to_evaluation(
src: metric_pb2.EvaluationResults) -> Evaluation:
"""Converts an Yggdrasil evaluation proto to an evaluation object."""
dst = Evaluation(num_examples=src.count_predictions_no_weight)
if dst.num_examples == 0:
return dst
if src.HasField("loss_value"):
dst = dst._replace(loss=src.loss_value)
if src.HasField("classification"):
cls = src.classification
if cls.HasField("confusion"):
sum_diagonal = 0
for i in range(cls.confusion.nrow):
sum_diagonal += cls.confusion.counts[i + i * cls.confusion.nrow]
dst = dst._replace(accuracy=sum_diagonal / cls.confusion.sum)
if cls.rocs:
dst = dst._replace(aucs=[roc.auc for roc in cls.rocs])
if dst.loss is None and cls.HasField("sum_log_loss"):
dst = dst._replace(loss=cls.sum_log_loss / src.count_predictions)
if src.HasField("regression"):
reg = src.regression
if reg.HasField("sum_square_error"):
dst = dst._replace(
rmse=math.sqrt(reg.sum_square_error / src.count_predictions))
if src.HasField("ranking"):
rank = src.ranking
if rank.HasField("ndcg"):
dst = dst._replace(ndcg=rank.ndcg.value)
return dst