В Керасе, как рассчитать точное количество правильных догадок во время оценки модели? - PullRequest
0 голосов
/ 26 апреля 2020

Я использую Keras, чтобы попытаться создать основную c нейронную сеть, и я использую некоторые данные переписи. Предполагается, что сеть идентифицирует, делает ли человек "<= 50K" или "> 50K" в год. У меня точная точность, но я также хочу знать, сколько из каждого экземпляра было правильным.

Итак, четыре параметра, которые я хочу подсчитать:

Сколько раз модель угадывала "<= 50K", когда она должна была быть "> 50K"?

Сколько раз модель угадывала «<= 50К», а «<= 50К»? </p>

Сколько раз модель угадывала «> 50К», когда она должна была быть «<= 50К»? </p>

Сколько раз модель угадывала "> 50К", а это было "> 50К"?

#define model architecture
model = Sequential()
n_cols = train_x.shape[1] 
model.add(Dense(10, activation='relu', input_shape=(n_cols,)))
model.add(Dense(10, activation='relu'))
model.add(Dense(1))

#compile model
model.compile(loss='mean_squared_error',
              optimizer='adam',
              metrics=['accuracy'])

#fit model on training data
model.fit(train_x, train_y,
    nb_epoch=50, verbose=1)

#evaluate model on test data
accuracy = model.evaluate(test_x, test_y, verbose=1)
print("loss: ", accuracy[0]*100)
print("accuracy: ", accuracy[1]*100)

1 Ответ

0 голосов
/ 26 апреля 2020

Если вы определите "<= 50K" как класс 0 или <em>отрицательный , а "> 50K" как класс 1 или положительный , вы ищете следующие показатели:

Сколько раз модель угадывала "<= 50K", когда она должна была быть "> 50K"? соответствует tf.keras.metrics.FalseNegatives

Сколько раз модель угадывала «<= 50K», и это было «<= 50K»? соответствует <code>tf.keras.metrics.TrueNegatives

Сколько раз модель угадывала «> 50К», когда она должна была быть «<= 50К»? соответствует <code>tf.keras.metrics.FalsePositives

Сколько раз модель угадывала «> 50К», и это было «> 50К»? соответствует tf.keras.metrics.TruePositives

Редактировать: Вы добавили бы их в свой код следующим образом:

...

# Define metrics
fn = tf.keras.metrics.FalseNegatives()
tn = tf.keras.metrics.TrueNegatives()
fp = tf.keras.metrics.FalsePositives()
tp = tf.keras.metrics.TruePositives()

# Get model predictions for test data
test_preds = model(test_x)

# Convert labels for test data to categorical
test_y = tf.cast(test_y, tf.int32)

# Update metrics
fn.update_state(y_true=test_y, y_pred=test_preds)
tn.update_state(y_true=test_y, y_pred=test_preds)
fp.update_state(y_true=test_y, y_pred=test_preds)
tp.update_state(y_true=test_y, y_pred=test_preds)

# Print results
tf.print(fn.result())
tf.print(tn.result())
tf.print(fp.result())
tf.print(tp.result())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...