Модель классификатора Wide_deep, необходимо прогнозировать значение вероятности, а не только «лучшую догадку» - PullRequest
0 голосов
/ 13 мая 2018

Я построил, во многом благодаря помощи, которую я получил в SO, двоичном классификаторе, основанном на уроке Tensorflow, посвященном широкому и глубокому анализу ( вот его файл "Main", к которому относится этот вопрос ), используется только в «широком» режиме.

Функция, которую я использую для извлечения классификационного предположения:

  pred_iter = model.predict(input_fn=lambda: input_fn(FLAGS.test_data, 1, False, 1))   for pred in pred_iter:
    print(pred['classes'])

Он отлично работает при классификации, но классификация возвращается просто как 0 или 1, поэтому отсутствует вероятностный аспект.

Я хотел бы получить классификацию, выраженную в виде числа от 0 до 1, чтобы узнать, «насколько уверена» сеть в своих предположениях.

Само введение 1017 * говорит, что

Мы будем обучать модель логистической регрессии, и с учетом индивидуального Информация нашей модели выведет число от 0 до 1, которое может интерпретировать как вероятность [...]

но мне не удается получить такой вероятностный аспект предсказания.

Я пытался использовать функцию prob_a , указанную во многих ответах, но она, вероятно, относится к более старой версии TF, поэтому не повезло с ней.

Как я могу эффективно получить классификацию как вероятность, а не как "один выстрел"?

Любая помощь приветствуется.

Я использую TF 1.8 на Python 3.5, ОС Ubuntu 16.04 LTS.

1 Ответ

0 голосов
/ 14 мая 2018

tf.estimator.LinearClassifier экземпляры возвращают словарь значений, которые вы можете использовать.Вы используете только pred[ 'classes' ] в своем коде, но у вас также есть значения вероятности в pred[ 'probabilities' ].Вы также можете просто

print( pred )

, который выведет что-то похожее на это (с фиктивными данными):

{'logits': array ([1.4264423], dtype = float32),
'логистика': массив ([0.80634636], dtype = float32),
'вероятности': массив ([0.19365363, 0.80634636], dtype = float32),
'class_ids': массив (* 1015)* 1 ),
'classes': array ([b'1 '], dtype = object)}

, поэтому вы можете видеть, что у вас также есть доступ к logitsи class_ids.

Вероятность класса 1 является вторым значением в pred[ 'probabilities' ], которое, как я понимаю, вы хотите использовать.

...