Spaces:
Running
Running
fix (aggregators): Minor fix to median aggregator.
Browse filesSigned-off-by: Kshitij Fadnis <[email protected]>
src/utilities/aggregators.ts
CHANGED
@@ -82,8 +82,8 @@ export const medianAggregator: Aggregator = {
|
|
82 |
// Step 3: Calculate aggregate value & standard deviation
|
83 |
const median =
|
84 |
sortedNumericScores.length % 2 == 0
|
85 |
-
? sortedNumericScores[sortedNumericScores.length / 2]
|
86 |
-
: sortedNumericScores[(sortedNumericScores.length + 1) / 2];
|
87 |
const std = Math.sqrt(
|
88 |
sortedNumericScores
|
89 |
.map((score) => Math.pow(score - median, 2))
|
|
|
82 |
// Step 3: Calculate aggregate value & standard deviation
|
83 |
const median =
|
84 |
sortedNumericScores.length % 2 == 0
|
85 |
+
? sortedNumericScores[sortedNumericScores.length / 2 - 1]
|
86 |
+
: sortedNumericScores[(sortedNumericScores.length + 1) / 2 - 1];
|
87 |
const std = Math.sqrt(
|
88 |
sortedNumericScores
|
89 |
.map((score) => Math.pow(score - median, 2))
|
src/utilities/metrics.ts
CHANGED
@@ -230,7 +230,7 @@ function computeMedian(
|
|
230 |
// Step 6: Calculate median
|
231 |
const median =
|
232 |
sortedNumericScores.length % 2 == 0
|
233 |
-
? sortedNumericScores[sortedNumericScores.length / 2]
|
234 |
: sortedNumericScores[(sortedNumericScores.length + 1) / 2 - 1];
|
235 |
|
236 |
// Step 7: Common patterns
|
|
|
230 |
// Step 6: Calculate median
|
231 |
const median =
|
232 |
sortedNumericScores.length % 2 == 0
|
233 |
+
? sortedNumericScores[sortedNumericScores.length / 2 - 1]
|
234 |
: sortedNumericScores[(sortedNumericScores.length + 1) / 2 - 1];
|
235 |
|
236 |
// Step 7: Common patterns
|
src/views/model-behavior/ModelBehavior.tsx
CHANGED
@@ -180,9 +180,8 @@ export default function ModelBehavior({
|
|
180 |
const [selectedMetric, setSelectedMetric] = useState<Metric | undefined>(
|
181 |
undefined,
|
182 |
);
|
183 |
-
const [selectedAllowedValues, setSelectedAllowedValues] =
|
184 |
-
[]
|
185 |
-
);
|
186 |
const [selectedAnnotator, setSelectedAnnotator] = useState<
|
187 |
string | undefined
|
188 |
>(undefined);
|
@@ -313,7 +312,7 @@ export default function ModelBehavior({
|
|
313 |
).sort();
|
314 |
}
|
315 |
|
316 |
-
return
|
317 |
}, [
|
318 |
evaluationsPerMetric,
|
319 |
selectedModels,
|
@@ -519,8 +518,11 @@ export default function ModelBehavior({
|
|
519 |
) : null}
|
520 |
|
521 |
{selectedMetric &&
|
522 |
-
selectedMetric.
|
523 |
-
|
|
|
|
|
|
|
524 |
<div className={classes.allowedValueSelector}>
|
525 |
<FilterableMultiSelect
|
526 |
key={'allowed-value-selector' + selectedAllowedValues.join('::')}
|
|
|
180 |
const [selectedMetric, setSelectedMetric] = useState<Metric | undefined>(
|
181 |
undefined,
|
182 |
);
|
183 |
+
const [selectedAllowedValues, setSelectedAllowedValues] =
|
184 |
+
useState<string[]>();
|
|
|
185 |
const [selectedAnnotator, setSelectedAnnotator] = useState<
|
186 |
string | undefined
|
187 |
>(undefined);
|
|
|
312 |
).sort();
|
313 |
}
|
314 |
|
315 |
+
return undefined;
|
316 |
}, [
|
317 |
evaluationsPerMetric,
|
318 |
selectedModels,
|
|
|
518 |
) : null}
|
519 |
|
520 |
{selectedMetric &&
|
521 |
+
selectedMetric.type === 'categorical' &&
|
522 |
+
(selectedMetric.aggregator === 'majority' ||
|
523 |
+
selectedMetric.aggregator === 'median') &&
|
524 |
+
availableAllowedValues &&
|
525 |
+
selectedAllowedValues ? (
|
526 |
<div className={classes.allowedValueSelector}>
|
527 |
<FilterableMultiSelect
|
528 |
key={'allowed-value-selector' + selectedAllowedValues.join('::')}
|
src/workers/filter.ts
CHANGED
@@ -103,7 +103,6 @@ onmessage = function (event: MessageEvent<FilterationRequest>) {
|
|
103 |
evaluation.modelId in models &&
|
104 |
evaluation[metric.name].hasOwnProperty(annotator) &&
|
105 |
(!allowedValues ||
|
106 |
-
isEmpty(allowedValues) ||
|
107 |
allowedValues.includes(evaluation[metric.name][annotator].value))
|
108 |
) {
|
109 |
// Step 3.b.i.*: Create and add record
|
@@ -126,7 +125,6 @@ onmessage = function (event: MessageEvent<FilterationRequest>) {
|
|
126 |
.map((level) => level.value)
|
127 |
.includes(evaluation[`${metric.name}_agg`].level)) &&
|
128 |
(!allowedValues ||
|
129 |
-
isEmpty(allowedValues) ||
|
130 |
allowedValues.includes(evaluation[`${metric.name}_agg`].value))
|
131 |
) {
|
132 |
// Step 3.b.ii.*: Create and add record
|
@@ -161,7 +159,6 @@ onmessage = function (event: MessageEvent<FilterationRequest>) {
|
|
161 |
evaluation.modelId in models &&
|
162 |
evaluation[metric].hasOwnProperty(annotator) &&
|
163 |
(!allowedValues ||
|
164 |
-
isEmpty(allowedValues) ||
|
165 |
allowedValues.includes(evaluation[metric][annotator].value))
|
166 |
) {
|
167 |
records.push({
|
@@ -179,7 +176,6 @@ onmessage = function (event: MessageEvent<FilterationRequest>) {
|
|
179 |
.map((level) => level.value)
|
180 |
.includes(evaluation[`${metric}_agg`].level)) &&
|
181 |
(!allowedValues ||
|
182 |
-
isEmpty(allowedValues) ||
|
183 |
allowedValues.includes(evaluation[`${metric}_agg`].value))
|
184 |
) {
|
185 |
records.push({
|
|
|
103 |
evaluation.modelId in models &&
|
104 |
evaluation[metric.name].hasOwnProperty(annotator) &&
|
105 |
(!allowedValues ||
|
|
|
106 |
allowedValues.includes(evaluation[metric.name][annotator].value))
|
107 |
) {
|
108 |
// Step 3.b.i.*: Create and add record
|
|
|
125 |
.map((level) => level.value)
|
126 |
.includes(evaluation[`${metric.name}_agg`].level)) &&
|
127 |
(!allowedValues ||
|
|
|
128 |
allowedValues.includes(evaluation[`${metric.name}_agg`].value))
|
129 |
) {
|
130 |
// Step 3.b.ii.*: Create and add record
|
|
|
159 |
evaluation.modelId in models &&
|
160 |
evaluation[metric].hasOwnProperty(annotator) &&
|
161 |
(!allowedValues ||
|
|
|
162 |
allowedValues.includes(evaluation[metric][annotator].value))
|
163 |
) {
|
164 |
records.push({
|
|
|
176 |
.map((level) => level.value)
|
177 |
.includes(evaluation[`${metric}_agg`].level)) &&
|
178 |
(!allowedValues ||
|
|
|
179 |
allowedValues.includes(evaluation[`${metric}_agg`].value))
|
180 |
) {
|
181 |
records.push({
|