问题标签 [precision-recall]
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.
python - 有偏数据集的精度和召回率
假设有一个两类分类问题。一类有超过 95% 的标记数据,另一类有 5% 的标记数据。这两个班级非常有偏见。
我正在做类验证来评估不同的分类器,我发现如果一个分类器有意预测到具有大多数(95%)标签的类,即使其他类的预测结果不准确,从精度/召回来看,这很难区分,因为另一类只有 5% 的标记数据。
这是我正在使用的方法/指标(使用精度/召回)。我想知道考虑到 5% 的次要课程是否还有其他更好的指标或方法来评估?我为次要的 5% 类分配了一个权重,但我在这里要求一种更系统的方法来测量有偏差的数据集。
使用 scikit learn + python 2.7。
r - 使用包 ROCR 的精确召回曲线的 AUC
如何使用包 ROCR.. 获得精确召回曲线的 AUC(曲线下面积)?
c++ - 使用 dlib 训练对象检测器
我正在尝试使用 dlib 库基于train_object_detector.cpp示例训练对象检测器。
time ./train_object_detector -tv -u 0 --threads 4 --flip data/training.xml
Test detector (precision,recall,AP): 1 0 0
意味着真阳性 = 0 假阳性 = 0?
而且当将检测器应用于训练集中的任何图像时,它无法检测到任何物体Number of detections: 0.
如何解决这个问题?
python - 如何找到费率 TP、TN、FP、FN 并衡量分段算法的质量?
目前,我正在实施一个系统,该系统可以计算在地铁站穿越感兴趣线路的乘客人数。为了衡量分割算法的质量,我在地铁站的天花板上安装了一个摄像机,并录制了一段 13 秒的视频。
13 秒的视频包含 412 帧。
以下是我的问题:
要获得 TPR(真阳性率),需要手动分析帧,即检查 412 帧中的每一帧并计算正确标记的次数?而FPR,是否只算“误报”?
要测试每种算法,我应该使用校正过滤器吗?或者只是分析它们的原始形式(没有过滤器)?
当您越界或跨屏幕扩展时检测到这些费率?
我请求您帮助解决这个问题。
python - 如何在python中使用插值绘制精确召回曲线?
我使用sklearn
precision_recall_curve
函数和matplotlib
包绘制了精确召回曲线。对于熟悉精确召回曲线的人来说,您知道一些科学界仅在其插值时才接受它,类似于此处的示例。现在我的问题是你们中是否有人知道如何在 python 中进行插值?我一直在寻找解决方案一段时间,但没有成功!任何帮助将不胜感激。
解决方案: @francis 和 @ali_m 的两个解决方案都是正确的,共同解决了我的问题。因此,假设您从 in 中的precision_recall_curve
函数获得输出sklearn
,这就是我绘制图表时所做的:
如果您将这些线放在 for 循环中并在每次迭代时将每个方法的数据传递给它,这些线将绘制插值曲线。请注意,这不会绘制非插值精度召回曲线。
elasticsearch - 当原始数据缺少信息时测量精度和召回率
尝试改进我的聊天应用程序:
使用我的域中以前的(预处理的)聊天交互,我构建了一个工具,为用户提供给定聊天上下文的 5 种可能的话语,例如:
生:“嗨,约翰。”
上下文:嗨 [[USER_NAME]]
话语:[嗨,你好,你好吗,你好,再次你好]
当然,结果并不总是相关的,例如:
Raw:“嗨,John。你好吗?我很好,你在办公室吗?”
语境:嗨 [[USER_NAME]] 你好吗,我很好,你在办公室吗?
话语:[是的,不,嗨,是的,我是,你好吗]
我将Elasticsearch与 TF/IDF 相似性模型和结构如下的索引一起使用:
问题:我确定对于上下文“嗨 [[USER_NAME]] 你好吗,我很好,你在办公室吗”,“是的,我是”这句话是相关的,但是“是”、“否”也是相关的因为它们出现在类似的背景下。
尝试使用这个优秀的视频,作为一个起点
问:如果我所知道的(从我的原始数据中)只是一个真实的话语,我如何衡量准确率和召回率?
machine-learning - Recall 在 2 类分类任务中有意义吗?
我知道召回 = TP/ (TP+FN)
假设我考虑一个分类器不同上下文的召回值。在一种情况下,我将 classA 作为我的正类,将 classB 作为我的负类。在另一种情况下,我将 A 类作为我的负类,B 类作为我的正类。
让 R1 和 R2 值是这些上下文中的召回值
这个论点有什么问题?[我觉得有问题,因为我看到分类器正在使用召回进行评估]。
等效地,如果我被要求计算分类器的召回率,是 R1 还是 R2?你如何决定
machine-learning - 具有不平衡数据集问题的二进制分类
我有一个包含 5000 行的要素数据集,我想对其进行二进制分类。我有 2 个类向量:
Y1 - 课程非常平衡(0 - 52%/ 1- 48%)
Y2 - 班级非常不平衡(0 - 90%/1 - 10%)
我已将数据集拆分为一个训练集(4,000 个样本)和一个测试集(1,000 个样本)。
然后,我编写了简单的代码来获取数据集X
和类向量,并使用XY
创建了一个平衡的数据集。len = 2
number of minority class
例如,在上面的训练数据集中,使用 90%/10% 的类向量,会有 400 个 1 和 3,200 个 0,因此它将创建一个新的 800 个样本数据集,其中包含 1 类的原始 400 个样本和 400 个随机选择的样本0 级,这将是平衡的。
所以从一个 4000 个样本的不平衡训练集中,我得到一个 800 个样本的平衡数据集,并用它来训练学习算法。
然后我使用在另外 1,000 个样本(测试集)上创建的模型。
我在两个类向量上运行了平衡代码——平衡的和不平衡的(即使我在平衡的类向量中不需要它)。
使用平衡类向量时,我得到了 1,000 个样本测试集的这个令人困惑的矩阵:
当使用不平衡类向量时,我得到了 1000 个样本测试集的这个令人困惑的矩阵:
如您所见,第 1 类的精度非常低。
我还使用了包不平衡学习中的几种算法来创建平衡数据集(例如欠采样、使用聚类质心或使用 SMOTE SVM 过采样),但结果始终相同 - 1 类的精度(少数族裔)保持在非常低的水平。
你能告诉我在这种情况下你会怎么做吗?我的目标是尝试将不平衡类向量中 1 类的精度提高到 0.6 左右,就像在平衡类向量中一样。
apache-spark - ML Pipeline 和指标:Precision、Recall、AUC-ROC、F1Score
我正在使用 ML Pipeline,例如:
我想要的是Precision, Recall, AUC-ROC, F1-SCORE, ACCURACY
在这个模型上获得标准度量的方法。我找到了BinaryClassificationMetrics
——但不确定它是否完全兼容。
RegressionEvaluator
似乎只有回归mse|rmse|r2|mae
。
那么使用 ML Pipeline 提取 Precision、Recall 等的正确方法是什么?