欢迎访问宙启技术站
智能推送

计算多分类模型准确率的Keras.metrics中的categorical_accuracy()函数

发布时间:2023-12-16 13:11:58

在Keras中,可以使用categorical_accuracy()函数来计算多分类模型的准确率。该函数接受两个输入参数:y_truey_predy_true是真实标签,通常是一个one-hot编码的矩阵,其中每行表示一个样本的标签。y_pred是模型的预测输出,也是一个与y_true相同形状的矩阵,其中每行表示一个样本的预测结果。

categorical_accuracy()函数计算的是每个样本的预测结果与真实结果的匹配程度,如果一致则计为1,否则计为0。然后,它将所有样本的匹配程度求平均,得到模型的准确率。

下面是一个使用categorical_accuracy()函数计算准确率的例子:

import numpy as np
from keras.metrics import categorical_accuracy

# 定义一个随机的一批真实标签和预测结果
y_true = np.array([[0, 0, 1], [0, 1, 0], [1, 0, 0], [0, 1, 0], [1, 0, 0]])
y_pred = np.array([[0.1, 0.1, 0.8], [0.2, 0.6, 0.2], [0.7, 0.3, 0], [0.3, 0.5, 0.2], [0.3, 0.4, 0.3]])

# 调用categorical_accuracy()函数计算准确率
accuracy = categorical_accuracy(y_true, y_pred)

# 打印准确率
print("准确率:", np.mean(accuracy))

上述例子中,y_true是一个5x3的矩阵,表示5个样本的真实标签。y_pred也是一个5x3的矩阵,表示5个样本的预测结果。例如, 个样本的真实标签是[0, 0, 1],表示它属于第三个类别;预测结果是[0.1, 0.1, 0.8],表示模型认为它属于第三个类别的概率最高。

将这些真实标签和预测结果传递给categorical_accuracy()函数,它将返回一个布尔型矩阵,表示每个样本的预测结果是否与真实结果一致。即:[[0, 0, 1, 0, 1]]。然后,我们使用numpy的mean函数将所有元素求平均,得到准确率。

需要注意的是,在使用categorical_accuracy()函数之前,我们应该将预测输出进行one-hot编码,以与真实标签的格式保持一致。如果模型的预测结果是K个概率值的向量,我们可以使用np.argmax()函数将其转换为K维的one-hot编码。