matlab Lasso回归

matlab Lasso回归Lasso回归clc,clear;closeall;data=[1.541.611.621.661.711.721.731.861.9222.212.292.342.382.422.442.572.642.712.852.933.013.143.223.343.493.553.793.994.1220.120.120.320.420.420.520.620.720.921.121.321.521

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

Lasso回归

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('原数据','拟合数据')

逐步回归

%逐步回归
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

求误差平方和

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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • centos系统不识别u盘_Unable to locate package vim

    centos系统不识别u盘_Unable to locate package vim在修改源后使用sudoapt-getupdate 显示 W:GPGerror:https://mirrors.ustc.edu.cn/kalikali-rollingInRelease:Thefollowingsignaturescouldn’tbeverifiedbecausethepublickeyisnotavailable:…

    2022年10月13日
  • GiD学习笔记「建议收藏」

    GiD学习笔记「建议收藏」GiD软件初步使用时,与一般传统的三维软件,思维方式很难一下子转变过来。它的最基本结构是几何结构,创建模型从点到线,线到面,面到体的顺序。网格面与几何体有截然不同的意义,所以在使用初期,需要先搞清楚一些基本概念。

  • 浙江新增python编程_9月起,浙江省八年级新增Python编程课,未来编程是处理大数据的手段…「建议收藏」

    浙江新增python编程_9月起,浙江省八年级新增Python编程课,未来编程是处理大数据的手段…「建议收藏」原标题:9月起,浙江省八年级新增Python编程课,未来编程是处理大数据的手段最近一个非常火爆的话题在家长群引起热议——浙江省中小学学习编程。浙江官方教育部宣布:今年9月份开始的新学期,三到九年级信息技术课将替换新教材。其中,八年级将新增Python课程内容。新高一信息技术编程语言由VB替换为Python,大数据、人工智能、程序设计与算法等内容按照教材规划五六年级开始接触。下面我们来具体看一…

  • 《数据库系统概论》之数据库设计六步骤(需求、概念、逻辑、物理、实施、运行维护)

    《数据库系统概论》之数据库设计六步骤(需求、概念、逻辑、物理、实施、运行维护)文章目录0.一图总览1.数据库设计概述及六步骤简介2.需求分析—步骤一2.1收集资料2.2分析整理2.3数据流图2.4数据字典2.5用户确认3.概念结构设计—步骤二3.1E-R模型3.2建立E-R模型4.逻辑结构设计—步骤三4.1E-R模型向关系模式的转换4.2关系模式的优化4.3设计用户子模式5.物理结构设计—步骤四5.1确定数据库的物理结构5.2物理结构进行评价6.数据库实施—步骤五7.数据库运行维护—步骤六0.一图总览1.数据库设计概述及

  • MySQL与PostgreSQL相比哪个更好?

    MySQL与PostgreSQL相比哪个更好?

  • mysql只有information_schema_validationquery not set

    mysql只有information_schema_validationquery not set在MySQL8.0以前,通常会通过infomation_schema的表来获取一些元数据,例如从tables表中获取表的下一个auto_increment值,从indexes表获取索引的相关信息等。但在MySQL8.0去查询这些信息的时候,出现了不准确的情况。例如auto_increment,–此时test表的auto_increment是204mysql&amp;gt;showcreate…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号