You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab高斯核回归SVM手动实现预测结果错误问题排查咨询

问题排查结果

核心错误1:向量运算维度不匹配

你代码中SV(n,:)'是列向量,而input是1×3的行向量,二者做减法时Matlab会触发自动广播生成3×3的矩阵,norm()函数计算的是矩阵的F范数而非两个向量的欧氏距离,导致范数结果严重偏大,最终G值极小。

核心错误2:RBF核函数缺少缩放参数

Matlab训练的高斯核SVM默认引入了核缩放系数,你实现的核函数没有加入该系数项,不符合训练时的核函数定义。Matlab RBF核的完整公式为:

$G(x,y) = \exp\left(-\frac{|x-y|2}{2\sigma2}\right)$
其中$\sigma$为核缩放参数,可从trainedModel.RegressionSVM.KernelParameters.Scale中读取。

其他注意点

不要使用sum作为变量名,sum是Matlab内置函数,覆盖后可能引发未知问题。


修正后的代码

bias  = trainedModel.RegressionSVM.Bias;
alpha = trainedModel.RegressionSVM.Alpha;
SV    = trainedModel.RegressionSVM.SupportVectors;
Mu    = trainedModel.RegressionSVM.Mu;
Sg    = trainedModel.RegressionSVM.Sigma;
kernel_scale = trainedModel.RegressionSVM.KernelParameters.Scale; % 读取核缩放系数

input = ([0.5 1 50] - Mu) ./ Sg;
pred = bias; % 替换sum变量名避免冲突
for n=1:length(alpha)
    % 修正维度匹配,直接计算两个行向量的欧氏距离平方
    dist_sq = sum((SV(n,:) - input).^2);
    % 完整RBF核计算
    G = exp(-dist_sq/(2*kernel_scale^2));
    pred = pred + alpha(n) * G;
end
disp(pred)

内容的提问来源于stack exchange,提问作者ocirocir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:06:04