当前位置:首页 > JavaScript

用js实现线性回归

2026-01-31 03:46:54JavaScript

实现线性回归的基本原理

线性回归通过最小化预测值与实际值的平方误差,拟合出最佳直线。数学表达式为: $$ y = mx + b $$ 其中 $m$ 是斜率,$b$ 是截距。

用js实现线性回归

计算斜率和截距的公式

斜率和截距可通过以下公式计算: $$ m = \frac{n\sum xy - (\sum x)(\sum y)}{n\sum x^2 - (\sum x)^2} $$ $$ b = \frac{\sum y - m \sum x}{n} $$

用js实现线性回归

JavaScript 实现代码

function linearRegression(x, y) {
    const n = x.length;
    let sumX = 0, sumY = 0, sumXY = 0, sumXX = 0;

    for (let i = 0; i < n; i++) {
        sumX += x[i];
        sumY += y[i];
        sumXY += x[i] * y[i];
        sumXX += x[i] * x[i];
    }

    const slope = (n * sumXY - sumX * sumY) / (n * sumXX - sumX * sumX);
    const intercept = (sumY - slope * sumX) / n;

    return { slope, intercept };
}

// 示例数据
const x = [1, 2, 3, 4, 5];
const y = [2, 4, 5, 4, 5];

// 计算回归系数
const { slope, intercept } = linearRegression(x, y);
console.log(`斜率: ${slope}, 截距: ${intercept}`);

预测新数据点

使用计算出的斜率和截距预测新数据点:

function predict(x, slope, intercept) {
    return slope * x + intercept;
}

const newX = 6;
const predictedY = predict(newX, slope, intercept);
console.log(`预测值: ${predictedY}`);

可视化结果(可选)

结合 Chart.js 绘制回归线:

import Chart from 'chart.js';

const ctx = document.getElementById('chart').getContext('2d');
const chart = new Chart(ctx, {
    type: 'scatter',
    data: {
        datasets: [{
            label: '原始数据',
            data: x.map((val, i) => ({x: val, y: y[i]})),
            backgroundColor: 'red'
        }, {
            label: '回归线',
            data: [{x: Math.min(...x), y: predict(Math.min(...x), slope, intercept)},
                   {x: Math.max(...x), y: predict(Math.max(...x), slope, intercept)}],
            type: 'line',
            borderColor: 'blue',
            borderWidth: 2,
            fill: false
        }]
    },
    options: { scales: { x: { type: 'linear' } } }
});

注意事项

  • 输入数组 xy 长度需一致。
  • 对于大数据集,建议使用矩阵运算库(如 math.js)提升性能。
  • 此实现仅适用于简单线性回归(单变量)。多变量回归需使用正规方程或梯度下降法。

标签: 线性js
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div c…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('imag…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式…