从 Keras 模型中获取混淆矩阵

Posted

技术标签:

【中文标题】从 Keras 模型中获取混淆矩阵【英文标题】:Get confusion matrix from a Keras model 【发布时间】:2019-10-20 20:21:30 【问题描述】:

我有以下使用 Keras 的 NN 模型:

import numpy as np
from keras import Sequential
from keras.layers import Dense

path = 'pima-indians-diabetes.data.csv'
dataset = np.loadtxt(path, delimiter=",")
X = dataset[:,0:8]
Y = dataset[:,8]
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2)

model = Sequential()
model.add(Dense(16, input_dim=8, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X_train, y_train, epochs=100, batch_size=16, validation_data=(X_test, y_test))

请问可以提取confusion matrix吗?怎么样?

【问题讨论】:

观看此视频:youtube.com/watch?v=km7pxKy4UHU 也许你也很感兴趣:***.com/questions/50920908/… 【参考方案1】:

你可以使用scikit-learn:

y_pred = model.predict(X_test)
confusion_matrix = sklearn.metrics.confusion_matrix(y_test, np.rint(y_pred))

【讨论】:

【参考方案2】:

可以使用TensorFlow来完成(这几乎是Keras =))。

您首先使用经过训练的模型对测试集进行预测:

predictions = model.predict(x_test)

然后你可以导入TensorFlow并使用它的confusion_matrix方法如下。

import tensorflow as tf
conf_matrix = tf.math.confusion_matrix(labels=y_test,
                                       predictions=predictions)

TensorFlow documentation 中的更多信息。

【讨论】:

以上是关于从 Keras 模型中获取混淆矩阵的主要内容,如果未能解决你的问题,请参考以下文章

CNN keras 中图像的混淆矩阵

使用 sklearn 使用 Keras 数据生成器绘制混淆矩阵

在 Keras 中进行预测后无法创建混淆矩阵 - 无法处理多标签指示符的混合 [重复]

使用 R 在 keras 中为多类分类创建混淆矩阵

为图像分类模型绘制混淆矩阵

如何从多类分类的混淆矩阵中提取假阳性、假阴性