算法------回归之最小二乘法
线性回归是指,试图学得一个线性模型以尽可能准确的预测实值输出标记。
最小二乘法:基于均方误差最小化来进行模型求解的方法。
通过变成实现最小二乘法(可能不是最简化的,有待提高编程能力)
/* * 这是一个最小二乘法的一个线性回归问题 */ 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); } }