求无外部依赖的原生JavaScript MAPE计算函数
原生JavaScript实现MAPE(平均绝对百分比误差)计算函数
公式说明
MAPE用于量化预测值与实际值的偏差程度,公式为:
MAPE = (1/n) * Σ(|(预测值f_i - 实际值a_i)/实际值a_i|) * 100
其中n是有效数据点的数量(需排除实际值为0的情况,避免除以0错误)。
实现代码
function calculateMAPE(actualValues, predictedValues) { // 校验数组长度一致性 if (actualValues.length !== predictedValues.length) { throw new Error('实际值数组与预测值数组长度必须一致'); } let sum = 0; let validCount = 0; for (let i = 0; i < actualValues.length; i++) { const actual = actualValues[i]; const predicted = predictedValues[i]; // 跳过实际值为0的项,避免除以0报错 if (actual === 0) { continue; } // 计算单个数据点的绝对百分比误差 const absolutePercentError = Math.abs((predicted - actual) / actual); sum += absolutePercentError; validCount++; } // 处理无有效数据的极端情况 if (validCount === 0) { throw new Error('没有有效的实际值(所有实际值均为0),无法计算MAPE'); } // 转换为百分比形式返回 return (sum / validCount) * 100; }
使用示例
// 测试数据 const actual = [100, 150, 200, 180]; const predicted = [105, 145, 210, 170]; // 计算并输出MAPE const mape = calculateMAPE(actual, predicted); console.log(`MAPE值:${mape.toFixed(2)}%`); // 输出示例:MAPE值:3.70%
注意事项
- 函数自动过滤实际值为0的项,规避除以0的运行时错误
- 若数组长度不匹配或所有实际值均为0,函数会抛出明确的错误提示
内容的提问来源于stack exchange,提问作者Sayyid Iskandar Khan
相关产品推荐
相关产品推荐

