From 621ddea971a2aab97e87ebff81231677aeda3589 Mon Sep 17 00:00:00 2001 From: Melissa Alvarez Date: Mon, 19 Apr 2021 09:55:33 -0600 Subject: [PATCH 1/2] ensure we check for NaN and Infinity in eval response --- .../public/application/data_frame_analytics/common/analytics.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/common/analytics.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/common/analytics.ts index 61abf8476c632d..669b95cbaeb8cd 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/common/analytics.ts +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/common/analytics.ts @@ -366,7 +366,7 @@ export function getValuesFromResponse(response: RegressionEvaluateResponse) { if (response.regression.hasOwnProperty(statType)) { let currentStatValue = response.regression[statType as keyof RegressionEvaluateResponse['regression']]?.value; - if (currentStatValue && !isNaN(currentStatValue)) { + if (currentStatValue && Number.isFinite(currentStatValue)) { currentStatValue = Number(currentStatValue.toPrecision(DEFAULT_SIG_FIGS)); } results[statType as keyof RegressionEvaluateExtractedResponse] = currentStatValue; From 7ef5e433e522c5d03da6034e2f28b541011fb5d2 Mon Sep 17 00:00:00 2001 From: Melissa Alvarez Date: Mon, 19 Apr 2021 10:17:52 -0600 Subject: [PATCH 2/2] add unit test --- .../common/analytics.test.ts | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/common/analytics.test.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/common/analytics.test.ts index 47badfe94f1ca5..0cd4d190ebbbd6 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/common/analytics.test.ts +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/common/analytics.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { getAnalysisType, isOutlierAnalysis } from './analytics'; +import { getAnalysisType, getValuesFromResponse, isOutlierAnalysis } from './analytics'; describe('Data Frame Analytics: Analytics utils', () => { test('getAnalysisType()', () => { @@ -35,4 +35,22 @@ describe('Data Frame Analytics: Analytics utils', () => { const unknownAnalysis = { outlier_detection: {}, regression: {} }; expect(isOutlierAnalysis(unknownAnalysis)).toBe(false); }); + + test('getValuesFromResponse()', () => { + const evalResponse: any = { + regression: { + huber: { value: 'NaN' }, + mse: { value: 7.514953437693147 }, + msle: { value: 'Infinity' }, + r_squared: { value: 0.9837343227799651 }, + }, + }; + const expectedResponse = { + mse: 7.51, + msle: 'Infinity', + huber: 'NaN', + r_squared: 0.984, + }; + expect(getValuesFromResponse(evalResponse)).toEqual(expectedResponse); + }); });