@ryanuo/utils
Version:
提供多种实用工具函数,涵盖算法、浏览器操作、网络请求等多个领域
34 lines (33 loc) • 1.01 kB
JavaScript
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;
}
export {
linearRegression,
normalizeData,
normalizeMinMax
};