基于matlab的Catboost多输入单输出回归预测模型 catboost-1.1.1版本
运行环境
windows10 matlab2020a
catboost版本:catboost-1.1.1
一、导入数据
采用3输入,1输出,共103组数据,其中80个数据训练,23个数据测试。
%% 导入数据 res = xlsread('数据集.xlsx'); %% 划分训练集和测试集 temp = randperm(103); P_train = res(temp(1: 80), 1: 3)'; T_train = res(temp(1: 80), 8)'; M = size(P_train, 2); P_test = res(temp(81: end), 1: 3)'; T_test = res(temp(81: end), 8)'; N = size(P_test, 2);
输出数据曲线如下图所示:
二、数据归一化
%% 数据归一化 [p_train, ps_input] = mapminmax(P_train, 0, 1); p_test = mapminmax('apply', P_test, ps_input); [t_train, ps_output] = mapminmax(T_train, 0, 1); t_test = mapminmax('apply', T_test, ps_output);
三、建立catboost模型
fit1=table(Ypred1,'VariableNames',{'RawFormulaVal'}); fit2=table(Ypred2,'VariableNames',{'RawFormulaVal'}); writetable(fit1,'fit1.txt'); writetable(CD,'trainlabel.txt'); writetable(traindata,'traindata.txt'); command1 = 'catboost-1.1.1.exe fit % Catboost训练集拟合fit函数创建 status1 = system(command1) writetable(fit2,'fit2.txt'); writetable(CD,'testlabel.txt'); writetable(testdata,'testdata.txt'); command2 = 'catboost-1.1.1.exe fit % Catboost测试集拟合fit函数创建 status2 = system(command2)
Catboost常见参数设置
%params={"iterations":43, %迭代次数 %"learning_rate":.001,%初始学习率 %"cat_features":cat_feature, % "depth":8, % "verbose":50, % "od_type":"Iter",#overfit detector. %"od_wait":50, %"eval_metric":"AUC", % "random_seed":SEED}
四、预测仿真
Catboost模型将非线性回归的拟合结果进行预测拟合,得到残差值(预测结果-非线性回归拟合)
Pred1=A1.RawFormulaVal;% Catboost训练集残差拟合结果 Pred1=Ypred1+Pred1;%Catboost训练集预测结果 YPRED1 = mapminmax('reverse', Pred1, ps_output);%反归一 Y1=T_train; Pred2=A2.RawFormulaVal;% Catboost测试集残差拟合结果 Pred2=Ypred2+Pred2;%Catboost测试集预测结果 YPRED2 = mapminmax('reverse', Pred2, ps_output); Y2=T_test;
五、预测结果
六、代码下载链接获取
后台私聊回复“第20期”可获取下载链接。