java实现线性回归(简单明了,适合理解)

今天做了一个小demo测试一下线性回归直线拟合。

package htt.wave.notification.qztest;

/**
 * @authorseerhuitao 线性回归编程
 * @create2019/5/10
 */
public class ClineNone {
    //求出来的b值
    public static double getB(double[] x,double[] y,int j){
        //首先先保证xy是数量相同的
        double b=0;
        //先对x求平均
        double xp=0;
        double yp=0;
        for(int i=0;i<j;i++){
            xp+=x[i];
            yp+=y[i];
        }
        xp=xp/(double)j;
        yp=yp/(double)j;
        //第二步
        // 计算一系列的差值 x-xp,y-yp
        double xpp=0;
        double ypp=0;
        double zpp=0;
        double xxp=0;
        for(int k=0;k<j;k++){
            xpp =(x[k]-xp);
            ypp =(y[k]-yp);
            zpp+=(xpp*ypp);
            xxp+=(xpp*xpp);
        }

        b=zpp/xxp;

        return b;
    }
    //测试
    public static void main(String[] args)
    {
        double[] x={1,2,3,4,6,9};
        double[] y={2,5,8,1,2,4};
        double f=getB(x,y,x.length);
        System.out.println(f+"---------------------------");
    }


}

把b值求出来就是求出来,直线拟合的斜率,如果b>0,表示上升,如果b1>b表示b1数据比b上升的更快,如果b1<b表示上升的慢。

如果b<0,表示下降,如果b1>b表示b1数据比b下降的慢,如果b1<b表示下降的快。

猜你喜欢

转载自blog.csdn.net/chehec2010/article/details/90056475
今日推荐