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

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

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

 

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

/*
 * 这是一个最小二乘法的一个线性回归问题
 */
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);
    }
}

 

posted @ 2016-10-18 21:01  nolonely  阅读(727)  评论(0编辑  收藏  举报