Jim*_* Du 40 python precision precision-recall keras
我正在用Keras 2.02(带有Tensorflow后端)构建一个多类分类器,我不知道如何计算Keras中的精度和召回率.请帮我.
Yas*_*nov 38
Python包keras-metrics可能对此有用(我是包的作者).
import keras
import keras_metrics
model = models.Sequential()
model.add(keras.layers.Dense(1, activation="sigmoid", input_dim=2))
model.add(keras.layers.Dense(1, activation="softmax"))
model.compile(optimizer="sgd",
loss="binary_crossentropy",
metrics=[keras_metrics.precision(), keras_metrics.recall()])
Run Code Online (Sandbox Code Playgroud)
我的回答是基于Keras GH问题的评论。它为一个热编码的分类任务计算验证精度和在每个时期的召回率。另外,请查看此SO答案以了解如何使用keras.backend功能。
import keras as keras
import numpy as np
from keras.optimizers import SGD
from sklearn.metrics import precision_score, recall_score
model = keras.models.Sequential()
# ...
sgd = SGD(lr=0.001, momentum=0.9)
model.compile(optimizer=sgd, loss='categorical_crossentropy', metrics=['accuracy'])
class Metrics(keras.callbacks.Callback):
def on_train_begin(self, logs={}):
self._data = []
def on_epoch_end(self, batch, logs={}):
X_val, y_val = self.validation_data[0], self.validation_data[1]
y_predict = np.asarray(model.predict(X_val))
y_val = np.argmax(y_val, axis=1)
y_predict = np.argmax(y_predict, axis=1)
self._data.append({
'val_recall': recall_score(y_val, y_predict),
'val_precision': precision_score(y_val, y_predict),
})
return
def get_data(self):
return self._data
metrics = Metrics()
history = model.fit(X_train, y_train, epochs=100, validation_data=(X_val, y_val), callbacks=[metrics])
metrics.get_data()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39687 次 |
| 最近记录: |