问题标签 [confusion-matrix]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3238 浏览

r - Caret 的 train 和confusionMatrix 函数

我试图通过遵循 Max Khun 的 Applied Predictive Modeling 书来了解插入符号的工作原理,但无法理解插入符号的混淆矩阵函数是如何工作的。

我使用 glmnet 训练了训练数据集 (training[, fullSet]),它有 8190 行和 1073 列,如下所示:

然后,我从拟合中打印了混淆矩阵:

当我查看混淆矩阵时,我得到了以下结果:

但是,我不明白为什么混淆表只有 1757 个观察值(1757 = 507 + 208 + 63 + 779),因为插入符号的confusionMatrix.train 文档说“当训练用于调整模型时,它会跟踪混淆矩阵单元保留样本的条目。” 由于训练数据集有 8190 行,我使用了 10 倍的 CV,所以我认为混淆矩阵应该基于 819 个数据点(819 = 8190 / 10),事实并非如此。

显然我不完全理解插入符号的 trainControl 或 train 是如何工作的。有人可以解释我误解了什么吗?

非常感谢你的帮助。

李英进

0 投票
1 回答
886 浏览

matrix - WEKA软件分析混淆矩阵

*您好,我在比较混淆矩阵时遇到了问题。下面我提供了两个混淆矩阵。

0 投票
2 回答
1903 浏览

r - RTextTools 中的 Create_Analytics

我试图将文本文档分类为多个类别。我下面的代码工作正常

当我尝试使用以下代码获取精度、召回率、准确度值时:

我收到以下错误:

Categories的是text格式。如果我将它们转换categoriesNumeric- 上面的代码可以正常工作。

是否有解决方法来保持类别的text格式并获得精确度、召回率、准确度值。

我的目标是获得多类分类器的精度、召回率、准确率值和混淆矩阵。是否有任何其他包可以获取多类文本分类器的上述值(一个与全部)

0 投票
0 回答
1632 浏览

python-2.7 - 在python中为具有二进制类标签的模型选择阈值

用例:为使用 statsmodel 的 Logit 构建的 Logistic 模型选择“最佳阈值”以预测二进制类(或多项式,但整数类)

要为 Python 中的(例如逻辑)模型选择阈值,是否有内置的东西?对于小型数据集,我记得,通过获取最大的真实预测标签(真实“0”和真实“1”)桶来优化“阈值”,从这里的图表中可以看出 - http://en。 wikipedia.org/wiki/Kolmogorov%E2%80%93Smirnov_test

我也直观地知道,如果我设置 alpha 值,它应该给我一个可以在下面使用的“阈值”。给定带有变量的简化模型,我应该如何计算阈值,所有这些变量在 95% 的置信度下都很重要?显然,将阈值设置为 >0.5 ->"1" 太天真了,因为我正在查看 95% 的置信度,所以这个阈值应该是 "smaller" ,这意味着 p >0.2 或其他东西。

如果标签应该是“1”和“0”,这将意味着类似于“临界值”的范围。

我想要的是这样的-:

# 其中 y_train 是 REAL 值 & y_predicted 回到 TRAIN 数据集。请注意,要获得 y_predicted(作为二进制文件,我已经按照上面的方法进行了阈值处理

问题 :-

1.如何以客观的方式选择阈值 - 即减少错误分类标签的百分比(比如我更关心丢失“1”(真阳性),但如果我将“0”错误预测为“1”,则不是那么多(假阴性)并尝试减少此错误。这是我从 ROC 曲线中得到的。statsmodels(roc_curve) 中的 roc 曲线假定我已经为 y_predicted 类进行了标记,我只是在重新验证这个过度测试(如果我的理解是不正确的)。我也认为,使用混淆矩阵也不会解决拾取阈值问题

2.这让我想到 - 我应该如何使用这些内置函数(oob、confusion_matrix)的输出以适合选择最佳阈值(首先在火车样本上,然后在测试和交叉验证样本上对其进行微调)

我还在这里查看了 scipy 中 KS 测试的官方文档 - http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.kstest.html#scipy.stats.kstest

相关 -: 使用 Python 和 Rpy2 进行统计测试(Kolmogorov 和 T 测试)

0 投票
2 回答
3360 浏览

machine-learning - 与 Weka 中的“混淆矩阵”混淆

我在 LingSpam 数据集上运行 SVM 分类器,并且在 WEKA 中有以下混淆矩阵:

在此处输入图像描述

如果我们考虑合法->正类和垃圾邮件->负类,那么 True Positives=2405 和 True Negatives=470。

但我对假阴性和假阳性感到困惑。如果您在此处阅读“混淆表”部分,则似乎 False Positives=11 和 False Negatives=7。但是,如果您阅读此处(请使用 Ctrl+F 并搜索“所有这些数字是什么意思?”),似乎 False Positives=7 和 False Negatives=11。

我很困惑 :(。请帮帮我!此外,WEKA 中的 IR_Precision 和 IR_Recall 是什么?是 legal_precision 和 legal_recall 还是 spam_precision 和 spam_recall?

注意:将合法电子邮件视为正类,将垃圾邮件视为负类。

0 投票
1 回答
27373 浏览

r - 插入符号 train() 预测与 predict.glm() 非常不同

我正在尝试使用 10 倍交叉验证来估计逻辑回归。

目标是估计一个 glm - 模型预测投票结果“Y”或“N”取决于相关解释变量,并基于最终模型计算混淆矩阵和 ROC 曲线以掌握不同阈值水平的模型行为.

模型选择导致:

生成:

将观测值与估计值进行比较:

t = 0.3 的混淆矩阵:

和 Roc 曲线:

这似乎是一个合理的模型。

现在,我不想使用“正常”的 predict.glm() 函数,而是想测试 10 倍交叉验证估计的性能差异。

所有参数显着。

这显然与之前的混淆矩阵有很大不同。我的期望是交叉验证的结果不应该比第一个模型差很多。然而,结果显示了其他东西。

我的假设是 train() 参数的设置有误,但我无法弄清楚它是什么。

我真的很感谢您的帮助,在此先感谢您。

0 投票
8 回答
36039 浏览

r - R如何使用插入符号包可视化混淆矩阵

我想可视化我放入混淆矩阵的数据。是否有一个函数我可以简单地放置混淆矩阵并将其可视化(绘制它)?

示例我想做的事情(Matrix$nnet 只是一个包含分类结果的表):

我的 Confusion$nnet$table 看起来像这样:

0 投票
1 回答
2761 浏览

r - 混淆矩阵函数和不同大小的矩阵

我正在使用 caret 包处理confusionMatrix 函数。该函数与 2x2(或 5x5 等)矩阵完美配合。例子:

表格1:

但如果我有一张不同大小的桌子:

表2:

既然我被迫使用了confusionMatrix函数,我该如何绕过这个麻烦?

0 投票
1 回答
27855 浏览

r - 如何从 R 中的混淆矩阵中检索整体准确度值?

在 R 插入符号库中,如果我得到如下所示的混淆矩阵,是否有办法检索整体准确度 0.992?我无法得到这个单一的值,因为我需要存储这个值并将其用于以后的处理。这可能吗?

总体统计

Mcnemar 检验 P 值:NA

按类别统计:

0 投票
2 回答
77 浏览

data-mining - 哪种数据挖掘方法?

我有数百万个混淆矩阵。我应该使用哪种数据挖掘方法来总结它们或找到这些矩阵之间的关系?如果您能给我一个对我有帮助的提示,我将不胜感激。