R 神经网络 - 鸢尾花数据集混淆矩阵

Posted

技术标签:

【中文标题】R 神经网络 - 鸢尾花数据集混淆矩阵【英文标题】:R Neural Networks - Iris Dataset Confusion Matrix 【发布时间】:2015-06-12 16:36:24 【问题描述】:

我不知道如何计算以下内容: 1. 它预测了哪 30 个元素? 2. 我无法让 ConfusionMatrix 工作。

任何帮助表示赞赏。谢谢。

library(nnet)
attach(iris)

library(caret)
set.seed(3456)
trainIndex <- createDataPartition(iris$Species, p = .8,
                               list = F,
                               times = 1)

irisTrain <- iris[ trainIndex,]
irisTest  <- iris[-trainIndex,]

irispred <- nnet(Species ~ ., data=irisTrain, size=10)
predicted <- predict(irispred,irisTest,type="class")

输出:

预测

预测 [1] "setosa" "setosa" "setosa" "setosa" "setosa" "setosa" "setosa" [8] "setosa" "setosa" "setosa" "versicolor" "versicolor" "versicolor" "versicolor" [15] "versicolor" "versicolor" "virginica" "versicolor" "versicolor" "versicolor" "virginica" [22] “处女座” “处女座” “处女座” “处女座” “处女座” “处女座” “处女座” [29] “处女座”“处女座”

混淆矩阵错误,不确定第二个参数应该是什么:

confusionMatrix(预测的, iris$Species) 表中的错误(数据,参考,dnn = dnn,...): 所有参数的长度必须相同

confusionMatrix(预测,irisTest,正=1) sort.list(y) 中的错误:对于“sort.list”,“x”必须是原子的 您是否在列表中调用了“排序”? 混淆矩阵(预测,虹膜,正= 1) sort.list(y) 中的错误:对于“sort.list”,“x”必须是原子的 您是否在列表中调用了“排序”?

【问题讨论】:

【参考方案1】:

第二个参数应该是irisTest$Species 中的引用类。 irisTest 是包含所有其他列的完整测试数据,iris$Species 是整个数据的物种,而不仅仅是测试集。

> confusionMatrix(data = predicted, reference = irisTest$Species)
Confusion Matrix and Statistics

            Reference
Prediction   setosa versicolor virginica
  setosa         10          0         0
  versicolor      0          9         0
  virginica       0          1        10

Overall Statistics

               Accuracy : 0.9667           

[...]

【讨论】:

非常感谢。我想我们无法分辨它预测的是哪 30 个物种?我想在预测集和测试集之间进行比较,但似乎看不到任何匹配项,还是我比较错误。 当您打印predicted 时,预测的类已经在您的答案中。然后你只需要将它们与irisTest$Species 进行比较。例如data.frame(predicted, irisTest$Species) 感谢您的帮助。非常感激。您是否尝试过使用 to plot.nnet ? --- 我不知道如何解决这个错误:plot.nnet(predicted) if (is.na(hid.struct[i + 1])) break 中的错误:参数长度为零另外:警告消息:在 is.na(hid.struct[i + 1]) 中:is.na() 应用于 'NULL' 类型的非(列表或向量) 我不知道plot.nnet 函数来自哪里。如果它来自this blog post,您需要按照那里描述的步骤从 Github 安装该功能。在任何情况下,您都必须绘制 模型对象 irispred 而不是数字向量 predicted PS:我的意思是你必须按照那里描述的程序来绘制模型(因为你显然已经安装了这个函数)。

以上是关于R 神经网络 - 鸢尾花数据集混淆矩阵的主要内容,如果未能解决你的问题,请参考以下文章

混淆矩阵是什么?Python多分类的混淆矩阵计算及可视化(包含原始混淆矩阵及归一化的混淆矩阵):基于skelarn框架iris数据集

R语言使用caret包的predict函数对模型在测试集上的表现进行推理和预测计算模型的混淆矩阵设置参数mode计算基于混淆矩阵产生的衍生指标(特异度敏感度F1ppvnpv等)

如何生成混淆矩阵并找到朴素贝叶斯分类器的错误分类率?

sklearn:绘制跨训练+测试集组合的混淆矩阵

R - 为 multinomial_naive_bayes() 函数生成的模型生成混淆矩阵和 ROC

如何在 Tensorflow 中为预取数据集绘制混淆矩阵