Я работаю с этим интерактивным конвейером TFX https://github.com/tensorflow/tfx/blob/master/tfx/examples/chicago_taxi_pipeline/taxi_pipeline_interactive.ipynb и применяю его к своим собственным данным.
Я не понимаю, как вычисляется точность. Когда я запускаю tfma.view.render_slicing_metrics(tfma_result)
, я получаю точность 0,39 по 58 оценочным записям. Я также получаю FN = 0, FP = 43, TN = 10 и TP = 5. Точность должна быть 15/58 = 0,26. Я добавил еще один показатель точности (my_acc
ниже), и в нем говорится, что точность равна 0,91.
Что я делаю не так? Вот код, который добавляет метрики к оценщику:
def add_confusion_matrix(estimator: tf.estimator.Estimator) -> tf.estimator.Estimator:
def my_fp(labels, predictions):
metric = tf.metrics.false_positives(labels, predictions['logistic'])
return {'my_fp':metric}
def my_tp(labels, predictions):
metric = tf.metrics.true_positives(labels, predictions['logistic'])
return {'my_tp':metric}
def my_fn(labels, predictions):
metric = tf.metrics.false_negatives(labels, predictions['logistic'])
return {'my_fn':metric}
def my_tn(labels, predictions):
metric = tf.metrics.true_negatives(labels, predictions['logistic'])
return {'my_tn':metric}
def my_acc(labels, predictions):
metric = tf.metrics.accuracy(labels, predictions['logistic'])
return {'my_acc':metric}
estimator = tf.estimator.add_metrics(estimator, my_fp)
estimator = tf.estimator.add_metrics(estimator, my_tp)
estimator = tf.estimator.add_metrics(estimator, my_fn)
estimator = tf.estimator.add_metrics(estimator, my_tn)
estimator = tf.estimator.add_metrics(estimator, my_acc)
return estimator
Если я использую predictions['class_ids']
, тогда моя точность (my_acc
) соответствует (tp + tn) / num, но все равно не соответствуетстандартная точность, которая исходит из оценки. Weird.