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