Я использую модель глубоких нейронных сетей (реализована в keras
) для прогнозирования. Примерно так:
def make_model():
model = Sequential()
model.add(Conv2D(20,(5,5), activation = "relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(20, activation = "relu"))
model.add(Lambda(lambda x: tf.expand_dims(x, axis=1)))
model.add(SimpleRNN(50, activation="relu"))
model.add(Dense(1, activation="sigmoid"))
model.compile(loss = "binary_crossentropy", optimizer = adagrad, metrics = ["accuracy"])
return model
model = make_model()
model.fit(x_train, y_train, validation_data = (x_validation,y_validation), epochs = 25, batch_size = 25, verbose = 1)
##Prediciton:
prediction = model.predict_classes(x)
probabilities = model.predict_proba(x) #I assume these are the probabilities of class being predictied
Моя проблема - проблема классификации (двоичная). Я буду sh рассчитывать показатель достоверности каждого из этих prediction
, т.е. я буду sh знать - моя модель на 99% уверена, что это "0" или 58%, это "0".
Я нашел несколько мнений о том, как это сделать, но не могу их реализовать. Подход, которому я буду следовать sh, гласит: «С помощью классификаторов, когда вы выводите данные, вы можете интерпретировать значения как вероятность принадлежности к каждому указанному классу c. Вы можете использовать их распределение как грубую меру того, насколько вы уверены в этом. наблюдение принадлежит этому классу. "
Как я должен прогнозировать с помощью чего-то подобного модели, чтобы получить уверенность в каждом прогнозе? Буду признателен за некоторые практические примеры (желательно в Керасе).