过滤时忽略数据子集
Ignore subset of data when filtering
我使用 dc.js 来分析分类算法的结果
并想过滤信心
(其他指标如精度、召回率和 f-measure 是在整个过滤数据集上计算的)。
示例: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,因此当使用置信度条形图 select 置信度范围大于 0.0 时,它们将被过滤掉。
因此我只想在 "EvaluationResult" 不是 "false negative" 时实现对置信度的过滤。我也不想在置信度条形图中显示假阴性,而是在饼图中显示(因此它们应该保留在交叉过滤器数据集中)。
我知道我可以通过使用假组删除 0.0 条,但是当我在置信条形图上进行过滤时,应用了过滤器并删除了 "false negative"(例如 select 范围从 0.5 到 0.6 ).
实际上,我需要以仅在 "EvaluationResult" !== "false negative".[= 时才应用置信范围(select 由用户编辑)的方式修改过滤器12=]
这可能吗?
感谢 fiddle,这对回答问题很有帮助。
您可以通过为图表指定 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 行为。
[您没有对这个 fiddle 置信度,因此条形重叠并变为 1.0,但我认为您在实际的仪表板中可以正常工作。]
我使用 dc.js 来分析分类算法的结果 并想过滤信心 (其他指标如精度、召回率和 f-measure 是在整个过滤数据集上计算的)。
示例: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,因此当使用置信度条形图 select 置信度范围大于 0.0 时,它们将被过滤掉。
因此我只想在 "EvaluationResult" 不是 "false negative" 时实现对置信度的过滤。我也不想在置信度条形图中显示假阴性,而是在饼图中显示(因此它们应该保留在交叉过滤器数据集中)。 我知道我可以通过使用假组删除 0.0 条,但是当我在置信条形图上进行过滤时,应用了过滤器并删除了 "false negative"(例如 select 范围从 0.5 到 0.6 ).
实际上,我需要以仅在 "EvaluationResult" !== "false negative".[= 时才应用置信范围(select 由用户编辑)的方式修改过滤器12=]
这可能吗?
感谢 fiddle,这对回答问题很有帮助。
您可以通过为图表指定 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 行为。
[您没有对这个 fiddle 置信度,因此条形重叠并变为 1.0,但我认为您在实际的仪表板中可以正常工作。]