岭回归 matlab示例
时间: 2023-09-07 13:17:36 浏览: 182
以下是一个简单的岭回归的 MATLAB 示例:
```matlab
%% 生成数据
rng(1); % 设置随机种子以保证结果可复现
n = 50; % 样本数量
p = 10; % 特征数量
X = randn(n, p); % 生成随机的特征矩阵
beta = randn(p, 1); % 生成随机的真实权重向量
epsilon = 0.5 * randn(n, 1); % 生成随机的误差项
y = X * beta + epsilon; % 生成随机的响应变量
%% 岭回归
lambda = logspace(-5, 1, 100); % 设置不同的正则化参数
beta_ridge = zeros(p, length(lambda)); % 存储岭回归的结果
for i = 1:length(lambda) % 遍历不同的正则化参数
beta_ridge(:,i) = ridge(y, X, lambda(i)); % 使用 MATLAB 自带的 ridge 函数进行岭回归
end
%% 绘图
figure;
semilogx(lambda, beta_ridge', 'LineWidth', 2); % 绘制不同正则化参数下的权重向量
xlabel('正则化参数 \lambda');
ylabel('权重向量');
title('岭回归结果');
legend('特征1', '特征2', '特征3', '特征4', '特征5', '特征6', '特征7', '特征8', '特征9', '特征10');
```
此代码生成了一个包含10个特征的数据集,并使用 MATLAB 自带的 `ridge` 函数执行了岭回归。结果被存储在 `beta_ridge` 变量中,并使用 `semilogx` 函数进行绘图,以显示不同的正则化参数下的权重向量。
阅读全文