Я пытаюсь создать модель в соответствии с учебным пособием по адресу https://www.tensorflow.org/tutorials/wide/, но, похоже, я каким-то образом искажаю свои данные, так как я очень подозрительно отношусь к точности 97,9% на очень наивной модели.Как отладить сверхъестественную точность модели TensorFlow?
Я отделяя данные обучения и оценки с помощью следующего кода, который кажется разумным мне:
total_results = len(results)
# Withhold some results from training for evaluation.
withhold_index = total_results * 9/10
training_df = get_data_frame_from_results(results[:withhold_index])
eval_df = get_data_frame_from_results(results[withhold_index:])
Однако, это дает мне числа, которые кажутся слишком высоко:
accuracy: 0.979
accuracy/baseline_label_mean: 0.021
accuracy/threshold_0.500000_mean: 0.979
auc: 0.443042
global_step: 200
labels/actual_label_mean: 0.021
labels/prediction_mean: 0.0288264
loss: 0.288538
precision/positive_threshold_0.500000_mean: 0.0
recall/positive_threshold_0.500000_mean: 0.0
Создание/оценка модели происходит здесь:
def train_input_fn():
return input_fn(training_df)
def eval_input_fn():
return input_fn(eval_df)
m = tf.contrib.learn.LinearClassifier(
feature_columns=[...],
model_dir=model_dir)
m.fit(input_fn=train_input_fn, steps=200)
eval_results = m.evaluate(input_fn=eval_input_fn, steps=1)
Я подозреваю, что здесь есть простая ошибка. , но я этого не вижу.
Что ваши данные выглядеть? Если один класс занимает 97,9% данных, вы достигаете точности 97,9%, просто предсказывая ярлык большинства. – etarion
А, да, это почти наверняка, что происходит. Данные сильно перекошены в одном направлении, поэтому мне нужно будет приспособиться к этому. Спасибо! –