算法------回归之最小二乘法

本文介绍了一种基于最小二乘法实现线性回归的编程方法。通过具体实例展示了如何通过该方法来拟合数据并进行预测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线性回归是指,试图学得一个线性模型以尽可能准确的预测实值输出标记。

最小二乘法:基于均方误差最小化来进行模型求解的方法。

 

通过变成实现最小二乘法(可能不是最简化的,有待提高编程能力)

/*
 * 这是一个最小二乘法的一个线性回归问题
 */
class LinearRegression {
    double a;
    double b;
    int n;

    public LinearRegression(double[] arrx, double[] arry) {
        // TODO Auto-generated constructor stub
        double t1 = 0;
        double t2 = 0;
        double t3 = 0;
        double t4 = 0;
        n = arrx.length;
        for (int i = 0; i < n; i++) {
            t1 = arrx[i] + t1;
            t2 = arry[i] + t2;
            t3 = arry[i] * arrx[i] + t3;
            t4 = arrx[i] * arrx[i] + t4;
            
        }
        a = (t3*n-t1 * t2  ) / ( t4*n-t1 * t1  );
        b = (t2 - a * t1) /n;
        System.out.println(a);
        System.out.println(b);
    }

    void Print() {
        System.out.println("利用线性最小二乘法得到的结果是y=" + a + "*x+" + b);
    }

    void predict(double num) {
        double result = num * a + b;
        System.out.println("利用最小二乘法得到的结果是:" + result);
    }
}

public class RegressDemo {
    public static void main(String[] args) {
        double arrx[] = new double[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
        double arry[] = new double[] { 23, 44, 32, 56, 33, 34, 55, 65, 45, 55 };
        LinearRegression lr = new LinearRegression(arrx, arry);
        lr.Print();
        lr.predict(1.0);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值