(优雅的使用)matlab脚本编程习题6(已摆烂)

第6次作业:正则化回归

博主摆烂了,没按题目要求写
上课没听,老师的代码完全看不懂

1.波士顿房价数据集下载链接:Boston Dataset (toronto.edu)
根据下载的数据集,构建多元线性回归模型,采用误差平方和作为损失函数(最小二乘),利用L2正则化优化参数,使用随机抽取80%的样本训练模型,对剩余20%的样本进行预测。

clear
boston=textread('housing.data');
% 'CRIM: 城镇人均犯罪率'
% 'ZN: 住宅用地所占比例'
% 'INDUS: 城镇中非住宅用地所占比例'
% 'CHAS: 虚拟变量,用于回归分析'
% 'NOX: 环保指数'
% 'RM: 每栋住宅的房间数'
% 'AGE: 1940 年以前建成的自住单位的比例'
% 'DIS: 距离 5 个波士顿的就业中心的加权距离'
% 'RAD: 距离高速公路的便利指数'
% 'TAX: 每一万美元的不动产税率'
% 'PTRATIO: 城镇中的教师学生比例'
% 'B: 城镇中的黑人比例'
% 'LSTAT: 地区中有多少房东属于低收入人群'
% 'MEDV:中值'
% boston1=boston(1,:)
[r,c]=size(boston);
tr=floor(r*0.8);
testr=r-tr;
ran=randsample(r,tr);
testData=zeros(testr,c);
trainData=zeros(tr,c);
trainc=1;
testc=1;
for i = 1:r
    
    flag=0;
    for j=1:tr
        if(i==ran(j))
            flag=1;
            trainData(trainc,:)=boston(i,:);
            trainc=trainc+1;
            break;
        end
    end
    if flag==0
        testData(testc,:)=boston(i,:);
        testc=testc+1;
    end 
end
train_x=trainData(:,1:c-1);
train_y=trainData(:,c);
test_x=testData(:,1:c-1);
test_y=testData(:,c);
lm=fitlm(train_x,train_y,'linear');
testyhatL=feval(lm,test_x);
testerrorL=(1/56)*sum((test_y-testyhatL).^2);
trainxnew=horzcat(train_x(:,1:2),train_x(:,4:6),train_x(:,8),train_x(:,10:end));
testxnew=horzcat(test_x(:,1:2),test_x(:,4:6),test_x(:,8),test_x(:,10:end));
lmnew=fitlm(trainxnew,train_y,'linear');
testyhatLn=feval(lmnew,testxnew);
testerrorLn=(1/56)*sum((test_y-testyhatLn).^2);
lmQ=fitlm(train_x,train_y,'quadratic');
testyhatLQ=feval(lmQ,test_x);
testerroeLQ=(1/56)*sum((test_y-testyhatLQ).^2);

figure
plot(test_y)
hold on
plot(testyhatLQ)

在这里插入图片描述
有机会大概可能应该会重写一下

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值