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

Posted

技术标签:

【中文标题】使用 R 在 keras 中为多类分类创建混淆矩阵【英文标题】:Creating a confusion matrix for multiclass classification in keras using R 【发布时间】:2021-10-30 00:54:24 【问题描述】:

我正在使用 Keras 在 R 中为多类文本分类运行双向 LSTM。我已经运行了我的模型,我需要创建一个混淆矩阵。我尝试使用 predict_classes() 但我的 RStudio 抛出了一个错误,即 predict_classes() 已被弃用。我尝试使用在 RStudio Keras 网站上找到的这段代码:

prediction1 <- model %>% 
  predict(x.test)  %>% 
  k_argmax(axis = -1)

注意:x.test 是我的包含文本特征的矩阵。

我不知道如何使用它 + 我还没有找到任何在线使用它的示例,所以我很困惑。任何人都可以提供任何帮助,我将不胜感激!

谢谢

【问题讨论】:

【参考方案1】:

您可以使用'caret' 库来实现。

#Install required packages
install.packages('caret')
 
#Import required library
library(caret)
 
#Creates vectors having data points
expected_value <- factor(c(1,0,1,0,1,1,1,0,0,1))
predicted_value <- factor(c(1,0,0,1,1,1,0,0,0,1))
 
#Creating confusion matrix
example <- confusionMatrix(data=predicted_value, reference = expected_value)
 
#Display results 
example

或者table函数:

pred <- model %>% predict(x_test, batch_size = batch_size)
y_pred = round(pred)
# Confusion matrix
confusion_matrix = table(y_pred, y_test)

对于“插入符号”示例:

https://www.journaldev.com/46732/confusion-matrix-in-r

【讨论】:

感谢您的建议。我尝试了提到的方法,但它给了我一个只有 0 和 1 的二进制混淆矩阵。我有 7 个不同的级别,所以我不确定如何实现这一目标 在这个这里:***.com/questions/25497398/…,我可以看到 OP 也转换了多类分类。 不同之处在于,每个矩阵中没有声明“FP”或“FN”,但您可以像这样推断它们(主对角线上方是 FP,主对角线下方是 FN) / 第二个带表的方法应该更容易。 我现在就要试试!我会更新你的!!

以上是关于使用 R 在 keras 中为多类分类创建混淆矩阵的主要内容,如果未能解决你的问题,请参考以下文章

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

为多类分类python tensorflow keras设置偏差

CNN keras 中图像的混淆矩阵

有没有一种简单的方法来获得多类分类的混淆矩阵? (OneVsRest)

如何实现多类语义分割?

如何在 Scikit 中计算多类分类的混淆矩阵?