训练好的SVR模型如何预测?求sklearn SVR手动预测实现方法
手动计算RBF核SVR的预测值
核心公式
对偶形式下,RBF核SVR的预测值计算逻辑为:
预测值 = (对偶系数数组 ⋅ 核函数(输入样本, 所有支持向量)) + 偏置项b
分步实现
1. 确认所需参数
除了你已有的对偶系数数组、支持向量,还需从训练好的sklearn.svm.SVR模型中获取:- 偏置项:
model.intercept_[0] - RBF核参数γ:对应
model.gamma,若模型设为scale,则γ=1/(特征数×训练集特征方差);设为auto则γ=1/特征数
- 偏置项:
2. 实现RBF核函数
RBF核的数学表达式为:K(x, sv) = exp(-γ × ||x - sv||²)
用Python实现单样本与单个支持向量的核值计算:import numpy as np def calc_rbf_kernel(x, sv, gamma): diff = x - sv return np.exp(-gamma * np.sum(diff ** 2))3. 计算输入样本与所有支持向量的核值数组
对单个输入样本x(形状为(特征数,)),遍历所有支持向量生成核值数组:kernel_vals = np.array([calc_rbf_kernel(x, sv, gamma) for sv in model.support_vectors_])4. 计算最终预测值
将对偶系数(需展平为一维数组)与核值数组做点积,再加偏置项:dual_coef_flat = model.dual_coef_.flatten() y_pred = np.dot(dual_coef_flat, kernel_vals) + model.intercept_[0]
验证
手动计算结果和model.predict([x])的输出应几乎一致(仅浮点精度差异)
内容的提问来源于stack exchange,提问作者n6r5
相关产品推荐
相关产品推荐

