完成一元线性回归y=ax+b
———————————————————分割线—————————————————————
数据集如下
6.1101,17.592
5.5277,9.1302
8.5186,13.662
7.0032,11.854
5.8598,6.8233
8.3829,11.886
7.4764,4.3483
8.5781,12
6.4862,6.5987
5.0546,3.8166
5.7107,3.2522
14.164,15.505
5.734,3.1551
8.4084,7.2258
5.6407,0.71618
5.3794,3.5129
6.3654,5.3048
5.1301,0.56077
6.4296,3.6518
7.0708,5.3893
6.1891,3.1386
20.27,21.767
5.4901,4.263
6.3261,5.1875
5.5649,3.0825
18.945,22.638
12.828,13.501
10.957,7.0467
13.176,14.692
22.203,24.147
5.2524,-1.22
6.5894,5.9966
9.2482,12.134
5.8918,1.8495
8.2111,6.5426
7.9334,4.5623
8.0959,4.1164
5.6063,3.3928
12.836,10.117
6.3534,5.4974
5.4069,0.55657
6.8825,3.9115
11.708,5.3854
5.7737,2.4406
7.8247,6.7318
7.0931,1.0463
5.0702,5.1337
5.8014,1.844
11.7,8.0043
5.5416,1.0179
7.5402,6.7504
5.3077,1.8396
7.4239,4.2885
7.6031,4.9981
6.3328,1.4233
6.3589,-1.4211
6.2742,2.4756
5.6397,4.6042
9.3102,3.9624
9.4536,5.4141
8.8254,5.1694
5.1793,-0.74279
21.279,17.929
14.908,12.054
18.959,17.054
7.2182,4.8852
8.2951,5.7442
10.236,7.7754
5.4994,1.0173
20.341,20.992
10.136,6.6799
7.3345,4.0259
6.0062,1.2784
7.2259,3.3411
5.0269,-2.6807
6.5479,0.29678
7.5386,3.8845
5.0365,5.7014
10.274,6.7526
5.1077,2.0576
5.7292,0.47953
5.1884,0.20421
6.3557,0.67861
9.7687,7.5435
6.5159,5.3436
8.5172,4.2415
9.1802,6.7981
6.002,0.92695
5.5204,0.152
5.0594,2.8214
5.7077,1.8451
7.6366,4.2959
5.8707,7.2029
5.3054,1.9869
8.2934,0.14454
13.394,9.0551
5.4369,0.61705
代码参考
function LinerLogic
a=load('Y:\singleFeature.txt');%读取文件数据
la=length(a);%求数组长度
k1=0;k2=0; %--------
for i=1:la % |
k1=k1+a(i,1)*a(i,2); % |
k2=k2+a(i,1)*a(i,1); % |----利用最小二乘法求拟合直线的斜率
end % |
a_a=mean(a,1); % |
ax=a_a(1);ay=a_a(2); % |
k=(k1-la*ax*ay)/(k2-la*ax*ax);%--------
c=ay-k*ax; %求b0
b=zeros(la,2); %初始化预测结果矩阵b
for i=1:la %求矩阵b
b(i,1)=a(i,1);
b(i,2)=k*b(i,1)+c;
end
plot(a(:,1),a(:,2),'r.');hold on;%将原始数据a以散点图的形式输出
plot(b(:,1),b(:,2),'g+');hold on;%将预测数据b以散点图的形式输出
h=refline(k,c);set(h,'color','black');%将拟合好的直线输出