用matlab计算线性回归问题
程序员文章站
2022-05-30 18:05:19
看机器学习的时候遇到的第一个算法就是线性回归,高数中很详细的说明了线性回归的原理和最小2乘法的计算过程,很显然不适合手动计算,好在各种语言都有现成的函数使用,让我们愉快的做个调包侠吧简单线性回归R越接近1表示拟合效果越好>> x=[0,1,2,3,4,5,6,7]x = 0 1 2 3 4 5 6 ... ......
看机器学习的时候遇到的第一个算法就是线性回归,高数中很详细的说明了线性回归的原理和最小2乘法的计算过程,很显然不适合手动计算,好在各种语言都有现成的函数使用,让我们愉快的做个调包侠吧
简单线性回归
r越接近1表示拟合效果越好
>> x=[0,1,2,3,4,5,6,7]
x =
0 1 2 3 4 5 6 7
>> y=[27.0,26.8,26.5,26.3,26.1,25.7,25.3,24.8]
y =
列 1 至 7
27.000000000000000 26.800000000000001 26.500000000000000 26.300000000000001 26.100000000000001 25.699999999999999 25.300000000000001
列 8
24.800000000000001
>> [r,m,b]=regression(x,y)
r =
-0.986307223369922
m =
-0.303571428571428
b =
27.124999999999996
>> plotregression(x,y)
>>
多元线性回归
>> load carsmall
>> x1 = weight;
>> x2 = horsepower;
>> y = mpg;
>> x = [ones(size(x1)) x1 x2 x1.*x2];
>> b = regress(y,x)
b =
60.710360805049135
-0.010153547589001
-0.188206440954574
0.000038494827316
>> scatter3(x1,x2,y,'filled')
hold on
x1fit = min(x1):100:max(x1);
x2fit = min(x2):10:max(x2);
[x1fit,x2fit] = meshgrid(x1fit,x2fit);
yfit = b(1) + b(2)*x1fit + b(3)*x2fit + b(4)*x1fit.*x2fit;
mesh(x1fit,x2fit,yfit)
xlabel('weight')
ylabel('horsepower')
zlabel('mpg')
view(50,10)
hold off
>>
上一篇: 司马懿一生最害怕的2个人,有没有诸葛亮?