Как оценить точность модели Keras только для некоторых классов - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть следующая модель Keras, выход которой имеет 3 класса (0, 1, 2):

    model = Sequential()
    model.add(LSTM(100, input_shape=(n_time_steps,n_features)))
    model.add(Dropout(0.5))
    model.add(Dense(100, activation='relu'))
    model.add(Dense(n_classes, activation='softmax'))
    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

Меня интересует оценка модели на точность классов 1 и 2, а не 0модель хороша, если у нее наименьшее количество ложных срабатываний в классах 1 и 2, в то время как на самом деле меня не волнует класс 0.

Как я могу написать такие метрики в Керасе?

1 Ответ

1 голос
/ 27 сентября 2019

Создайте любую функцию, используя основную правду и предсказанные результаты, и вычислите ваши метрики:

def false_positives(y_true, y_pred):
    negatives = 1 - y_true   
    y_pred = K.cast(K.greater(y_pred, 0.5), K.floatx()) #round to 0 or 1
    #if you don't round y_pred, it might even serve as a loss function

    falsePositives = y_pred * negatives
    falsePositives1 = falsePositives[:,1]
    falsePositives2 = falsePositives[:,2]

    return something

Используйте metrics = [false_positives] или metrics=['accuracy', false_positives_1, false_positives_2] и т. Д.

...