From a94174f03b94cd2351c48ecb8728f622de10cb8d Mon Sep 17 00:00:00 2001 From: Melissa Alvarez Date: Tue, 20 Apr 2021 09:49:10 -0400 Subject: [PATCH] [ML] Data Frame Analytics results: ensure model evaluation stats are shown (#97486) * ensure we check for NaN and Infinity in eval response * add unit test --- .../common/analytics.test.ts | 20 ++++++++++++++++++- .../data_frame_analytics/common/analytics.ts | 2 +- 2 files changed, 20 insertions(+), 2 deletions(-) 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); + }); }); 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;