我使用dc.js来分析分类算法的结果 并希望过滤信心 (精度,召回率和f度量等其他指标是在整个过滤后的数据集上计算的。)
示例:https://jsfiddle.net/bse7rfdy/6/
var conf = dc.barChart('#conf');
conf
.dimension(ConfidenceDimension)
.group(ConfidenceGroup)
.x(d3.scaleLinear().domain([0.0,1.05]))
.xAxisLabel("confidence")
.xUnits(function(){return 20;})
.yAxisLabel("");
由于假阴性的置信度始终为0.0,因此当使用置信度条形图选择大于0.0的置信度范围时,它们将被过滤。
因此,仅在“ EvaluationResult”不是“ false negative”时,我才想对置信度进行过滤。我也不想在置信度条形图中显示假阴性,而是在饼图中显示(因此它们应保留为交叉过滤器数据集)。 我知道我可以使用伪造的组来删除0.0条,但是当我在置信度条形图上进行过滤时,会应用拟合器,并且会删除“假负数”(例如,选择0.5到0.6的范围)。
实际上,我需要以仅当“ EvaluationResult”!==“ false negative”时应用置信范围(由用户选择)的方式来修改过滤器。
有可能吗?
答案 0 :(得分:0)
感谢小提琴,对回答问题有很大帮助。
您可以通过为图表指定filterHandler来实现。
结果有些奇怪,因为饼图将始终显示相同数量的假阴性,而其他切片会改变大小。
function filter_range_ignore_zeroes(dimension, filters) {
if(filters.length === 0) {
dimension.filter(null);
return
}
const filter = filters[0],
rf = dc.filters.RangedFilter(filter[0],filter[1]);
dimension.filterFunction(k => k===0 || rf.isFiltered(k));
return filters;
}
conf.filterHandler(filter_range_ignore_zeroes);
处理程序有两种情况:如果没有活动的过滤器,它将重置尺寸过滤器。
否则,它将在维上安装一个过滤器函数,该函数可以接受零,但否则将委托默认的dc.filters.RangedFilter行为。
[您不是要对这种提琴进行分类,所以条形图重叠并达到1.0,但我认为您可以在实际的仪表板中使用它。]