UNPKG

@ryanuo/utils

Version:

提供多种实用工具函数,涵盖算法、浏览器操作、网络请求等多个领域

36 lines (35 loc) 1.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.linearRegression = linearRegression; exports.normalizeData = normalizeData; exports.normalizeMinMax = normalizeMinMax; function normalizeData(data, mean, stdDev) { if (stdDev === 0) throw new Error("division by zero"); return data.map(value => (value - mean) / stdDev); } function normalizeMinMax(data) { const min = Math.min(...data); const max = Math.max(...data); if (min === max) return data.map(() => 0); return data.map(value => (value - min) / (max - min)); } function linearRegression(data) { if (data.length === 1) { return data[0]; } const n = data.length; const x = Array.from({ length: n }, (_, i) => i); const y = data; const xMean = x.reduce((sum, val) => sum + val, 0) / n; const yMean = y.reduce((sum, val) => sum + val, 0) / n; const numerator = x.reduce((sum, xi, idx) => sum + (xi - xMean) * (y[idx] - yMean), 0); const denominator = x.reduce((sum, xi) => sum + (xi - xMean) ** 2, 0); const m = numerator / denominator; const b = yMean - m * xMean; const nextX = n; return m * nextX + b; }