我是MATLAB的新手,并尝试实现sequentialfs来识别最适合线性回归的子集。我已经阅读了在线文档但发现很难理解。
我有一套训练数据,并希望使用'重新置换'将此作为测试数据应用的选项。
x_train是一个包含67行和8列的矩阵。 y_train有67行1列。
有人可以检查一下为什么这段代码不起作用?
x_train = std_pros_pred_full;
y_train = pros_resp;
fun_RSS = @RSS_check;
inmodel = sequentialfs(fun_RSS,x_train,y_train,'resubstitution');
函数RSS_check执行线性回归计算并输出平方误差之和。它的定义(外部)如下:
function RSS_out = RSS_check(X,Y)
lin1 = X'*X;
lin2 = X'*Y;
lin_coef = (lin1^-1)*lin2;
lin_fit = X*lin_coef;
row_count = size(Y,1);
RSS_out = 0;
for q = 1:row_count
pred_diff = lin_fit(q,1) - Y(q,1);
RSS_out =RSS_out + pred_diff^2;
end
错误消息是: 使用sequentialfs时出错(第212行) 参数数量错误。
当尝试不同的选项时,我也有关于该功能的输入和输出数量的错误。我见过的很多例子都提到了测试数据的单独矩阵(给出了4个输入),但我认为这对于重新取代'而言是不必要的。选项。