前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >matlab Lasso回归

matlab Lasso回归

作者头像
全栈程序员站长
发布2022-08-31 17:14:06
3690
发布2022-08-31 17:14:06
举报

大家好,又见面了,我是你们的朋友全栈君。

Lasso回归

代码语言:javascript
复制
clc,clear;
close all;
data=[1.54  1.61 1.62 1.66 1.71 1.72 1.73 1.86 1.92  2 2.21 2.29  2.34 2.38 2.42 2.44  2.57 2.64 2.71 2.85  2.93 3.01 3.14 3.22  3.34 3.49 3.55 3.79  3.99 4.12
    20.1 20.1 20.3 20.4 20.4 20.5 20.6 20.7 20.9 21.1 21.3 21.5 21.7 21.9 22 22.2 22.4 22.5 22.7 22.7 22.8 22.9 23.4 23.7 24.4 24.9 25.3 27.4 28.4 29.1
    5.17 5.14 5.13 5.10  5.08 5.03 5.01 4.99  4.93 4.91 4.89 4.81  4.77 4.75 4.62 4.56  4.5  4.48 4.46 4.31 4.28  4.19 4.12 3.99 3.91  3.84 3.75 3.64 3.51  3.5]';
m=size(data,1);
x=[ones(m,1),data(:,1:2)];%前两列为自变量,再添加一列常数项
y=data(:,3);%最后一列为因变量
runnums  = 200000;%迭代的步数
eps = 0.0001;%调整步长
Res = StageWise(x, y, eps, runnums);
y1=x*Res(end,:)';
%根据Res画 参数收敛
figure
hold on 
xAxis = 1:runnums;
plot(xAxis, Res(:,1),'r');
plot(xAxis, Res(:,2),'b');
plot(xAxis, Res(:,3),'k');
legend('x1参数','x2参数','x3参数')
%拟合
figure
hold on 
plot(y,'b');
plot(y1,'r');
legend('原数据','拟合数据')

逐步回归

代码语言:javascript
复制
%逐步回归
function [ Res ] = StageWise( x, y, eps, runtime)
    [m,n] = size(x);%数据集的大小
    Res = zeros(runtime, n);%最终的结果
    w = zeros(n,1);
    wMax = zeros(n,1);
    for i = 1:runtime
        ws = w';%输出每一次计算出来的权重
        lowestError = inf;%定义最小值
        for j = 1:n
            for sign = -1:2:1
                wTest = w;%初始化
                wTest(j) = wTest(j)+eps*sign;%只改变一维变量
                yTest = x*wTest;
                %求误差
                rssE = RegressError(y, yTest);
                if rssE < lowestError%如果好,就替换
                    lowestError = rssE;
                    wMax = wTest;
                end
            end
        end
        w = wMax;
        Res(i,:) = w;
    end
end

求误差平方和

代码语言:javascript
复制
function [ error ] = RegressError( y, yTest )
    yDis = y-yTest;%误差
    [m,n] = size(yDis);
    %求平方
    for i = 1:m
        yDis(i) = yDis(i)^2;
    end
    error = sum(yDis);%求列和
end

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/142850.html原文链接:https://javaforall.cn

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Lasso回归
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com