问题标签 [roc]
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.
r - 使用 ROCR 包的 R 中的 ROC 曲线
有人可以解释一下如何用 ROCR 绘制 ROC 曲线。我知道我应该首先运行:
接着:
我只是不清楚预测和标签是什么意思。我用 ctree 和 cforest 创建了一个模型,我希望他们两个的 ROC 曲线最后进行比较。在我的例子中,类属性是 y_n,我想它应该用于标签。但是预测呢?以下是我所做的步骤(数据集名称= bank_part):
运行最后一行后,我收到此错误:
提前致谢!
这是另一个例子:我有训练数据集(bank_training)和测试数据集(bank_testing),我运行了一个随机森林,如下所示:
现在 bankrf.pred 是一个带有标签 c=("0", "1") 的因子对象。不过,我不知道如何绘制 ROC,因为我陷入了预测部分。这就是我所做的
但这仍然不正确,因为我收到错误消息
r - 如何为 knn 模型绘制 ROC 曲线
我正在使用 ROCR 包,我想知道如何在 R 中为 knn 模型绘制 ROC 曲线?有没有办法用这个包把它全部绘制出来?
我不知道如何使用ROCR的预测功能进行knn。这是我的示例,我正在使用来自 UCI 存储库的 isolet 数据集,其中我将类属性重命名为 y:
现在我的问题是,传递给 ROC 预测函数的参数是什么。我尝试了以下两种不起作用的替代方法:
r - 在 R 中使用 pROC 包从特定阈值获取 SP 和 SN 的 CI
使用该pROC
软件包,是否有人知道一种通过输入特定阈值而不是特定 SP 或 SN 值来获取 SP 和 SN 置信区间的方法?ci()
似乎只使用相应的 SN 或 SP 作为参数来显示 SP 和 SN 值;我可以要求 SN 为 0.8 的 SP 的 CI,但不能要求阈值为 9.0 的 SP 的 CI。
我知道我可以找到阈值的 SP/SN 值,然后将它们用作 的参数ci()
,但这似乎很笨拙。当然,这最终可能只是包开发人员的一个问题。
提前感谢您提供的任何帮助。
machine-learning - 如果 ROC 曲线中的误报率不以 1.0 结尾,是否可以?
我有以下 ROC 曲线:
它不会以 1.0 结束,因为我的预测包括零,例如
预测 = [0.9, 0.1, 0.8, 0.0]
对于 ROC 曲线,我采用 top-k 预测,首先是 {0.9},然后是 {0.9, 0.8} 等。如果预测中不再有 > 0 的值,则预测不再随着 k 的增加而改变。
所以我不能得到一个真正的负值为零,并且由于误报率为 fp/(fp+tn),曲线在达到 1 之前就结束了。
现在,我是否也应该人为地使用零进行预测,或者如果曲线就这样结束就可以了吗?使用零也感觉不对。还是我错过了什么?
r - 随机森林分类的 ROC 曲线
我randomForest
在 R 平台中使用包进行分类任务。
其中 k 的范围从 0.1 到 0.9。
我有随机森林分类器的输出,并将其与标签进行了比较。所以,我有 9 个截止点的性能指标,如准确性、MCC、灵敏度、特异性等。
现在,我想绘制 ROC 曲线并获得 ROC 曲线下的面积,看看性能有多好。R 中的大多数包(如 ROCR、pROC)都需要预测和标签,但我有敏感性(TPR)和特异性(1-FPR)。
如果截止方法正确或可靠地产生ROC曲线,有人可以建议我吗?您知道使用 TPR 和 FPR 获得 ROC 曲线和曲线下面积的任何方法吗?
我还尝试使用以下命令来训练随机森林。这样,预测是连续的,并且可以被 R 中的包所接受ROCR
。pROC
但是,我不确定这是否是正确的做法。有人可以向我推荐这种方法吗?
感谢您花时间阅读我的问题!我为此花了很长时间冲浪。感谢您的建议/建议。
perl - 使用 Perl 模块的 ROC 曲线?
请问有没有能够绘制 ROC 曲线的 Perl 模块?我知道R 编程语言存在一个,但我找不到 Perl 的一个。请问有什么想法吗?
svm - ROC能否比较两组特征的分类能力?
我正在学习 SVM 和 ROC。据我所知,人们通常可以使用 ROC(接收器操作特性)曲线来显示 SVM(支持向量机)的分类能力。我想知道是否可以使用相同的概念来比较两个功能子集。
假设我有两个特征子集,子集 A 和子集 B。它们是通过 2 种不同的特征提取方法 A 和 B 从相同的训练数据中选择的。如果我使用这两个特征子集通过 LIBSVM 训练相同的 SVM svmtrain() 函数并绘制它们的 ROC 曲线,我可以通过它们的 AUC 值来比较它们的分类能力吗?因此,如果子集 A 的 AUC 值高于子集 B,我可以得出结论,方法 A 比方法 B 更好吗?这有什么意义吗?
非常感谢你,
matlab - 如何计算roc曲线?
我编写了一个分类器(高斯混合模型)来对五种人类行为进行分类。对于每个观察,分类器计算属于一个集群的后验概率。
我想用一个阈值来评估我的系统的性能,阈值从 0 到 100。对于每个阈值,对于每个观察,如果属于某个集群的概率大于阈值,我接受分类器的结果否则我丢弃它。
对于每个阈值,我计算真阳性、真阴性、假阳性、假阴性的数量。
比我计算两个函数:敏感性和特异性为
在matlab中:
得到 ROC 曲线。但结果不是我所期望的。
这是改变一个动作的阈值的丢弃、错误、纠正、敏感性和特异性的函数图。
这是一个动作的ROC曲线图
这是同一动作的 ROC 曲线的主干
我错了,但我不知道在哪里。也许我在计算FP,FN,TP,TN时做错了,特别是当分类器的结果小于阈值时,所以我有一个丢弃。当有丢弃时我必须增加什么?
matlab - MATLAB中的KNN分类-混淆矩阵和ROC?
我正在尝试使用不同的分类器(LDA、SVM、KNN)对包含两个类的数据集进行分类,并希望比较它们的性能。我通过修改先验概率为 LDA 制作了 ROC 曲线。
但是我怎样才能对 KNN 分类器做同样的事情呢?
我搜索了文档,发现了一些功能:
Class = knnclassify(Sample, Training, Group, k)
mdl = ClassificationKNN.fit(X,Y,'NumNeighbors',i,'leaveout','On')
我可以运行 (a) 并通过使用留一法交叉验证获得混淆矩阵,但不可能更改先验概率来生成 ROC?
我以前没有尝试过 (b),但这会创建一个模型,您可以在其中修改 mdl.Prior。但我不知道如何获得混淆矩阵。
有没有我错过的选项或有人可以解释如何充分利用这些功能来获得 ROC?
matlab - 如何修复对角线以下点的ROC曲线?
我正在构建接收器操作特征 (ROC) 曲线,以使用曲线下面积 (AUC) 评估分类器(有关帖子末尾的更多详细信息)。不幸的是,曲线上的点经常低于对角线。例如,我最终得到的图表看起来像这里的图表(蓝色的 ROC 曲线,灰色的标识线):
第三个点 (0.3, 0.2) 位于对角线下方。为了计算 AUC,我想修复这些顽固点。
对于曲线上的点 (fp, tp),标准的做法是用一个点 (1-fp, 1-tp) 替换它,这相当于交换分类器的预测。例如,在我们的示例中,我们的麻烦点 A (0.3, 0.2) 变成了点 B (0.7, 0.8),我在上面链接的图像中用红色表示。
这是关于我在处理这个问题时的参考资料。问题是,如果将新点添加到新 ROC 中(并删除坏点),最终会得到如图所示的非单调 ROC 曲线(红色是新的 ROC 曲线,蓝色虚线是旧的):
在这里我被困住了。如何修复此 ROC 曲线?
我是否需要使用经过某种方式转换的数据或类重新运行我的分类器以考虑这种奇怪的行为?我查看了一篇相关论文,但如果我没记错的话,它似乎解决了一个与此稍有不同的问题。
在一些细节方面:我仍然拥有所有原始阈值、fp 值和 tp 值(以及每个数据点的原始分类器的输出,输出只是从 0 到 1 的标量,即概率估计类成员)。我在 Matlab 中从 perfcurve 函数开始执行此操作。