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

使用SVR做降雨量预测时RMSE过高且预测值全相同的原因求解

SVR降雨量预测异常问题原因分析与解决方法

异常原因

  • 未进行特征与目标的标准化处理:SVR的模型构建依赖特征空间的距离计算,对输入、输出的数值尺度高度敏感。降雨量场景下,月度特征和年度目标的数值量级存在明显差异,未做标准化会导致距离计算完全失效,模型无法学习到输入与输出之间的映射关系。
  • 模型参数配置不合理:当前使用的C=0.1正则化系数过小,正则化强度过高,模型处于严重欠拟合状态;epsilon=0.2的设置未匹配目标值的数值量级,进一步限制了模型的拟合能力,最终模型仅能输出全局均值作为所有样本的预测结果,因此出现所有预测值一致、RMSE过高的现象。
  • 特征相关性不足:如果1-12月月度降雨量与年度降雨量的线性/非线性相关性极低,也会导致模型无法学习有效映射,出现同类欠拟合表现,该情况可在排查前两个问题后进一步验证。

解决步骤

  • 完成数据标准化处理:使用StandardScaler分别对训练集的特征和目标拟合缩放器,再对训练集、测试集做统一转换,禁止使用测试集数据拟合缩放器,避免数据泄露。
  • 重新调试模型参数:将gamma参数设置为scale适配标准化后的特征;通过GridSearchCV网格搜索对C(推荐调试范围:1、10、100、1000)、epsilon(推荐调试范围:0.1、0.5、1、2,匹配标准化后的目标量级)做参数寻优。
  • 拟合效果校验:调参完成后先查看训练集的预测误差,若训练集误差依旧过高,需要进一步验证特征与目标的相关性是否满足预测任务的基本要求。

参考优化代码

from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVR
from sklearn.model_selection import GridSearchCV
import math
from sklearn.metrics import mean_squared_error
import pandas as pd
import time

# 特征标准化
scaler_X = StandardScaler()
X_train_scaled = scaler_X.fit_transform(X_train)
X_test_scaled = scaler_X.transform(X_test)

# 目标标准化(也可直接调整epsilon和C适配原始y量级)
scaler_y = StandardScaler()
y_train_scaled = scaler_y.fit_transform(y_train.reshape(-1,1)).ravel()

# 参数寻优
param_grid = {
    'C': [1, 10, 100, 1000],
    'gamma': ['scale'],
    'epsilon': [0.1, 0.5, 1, 2]
}
grid = GridSearchCV(SVR(), param_grid, cv=5)
grid.fit(X_train_scaled, y_train_scaled)
clf = grid.best_estimator_

# 预测与反归一化
y_pred_scaled = clf.predict(X_test_scaled)
y_pred = scaler_y.inverse_transform(y_pred_scaled.reshape(-1,1)).ravel()

# 指标计算
testScore = math.sqrt(mean_squared_error(y_test,y_pred))
print('Test Score: %.2f RMSE' % (testScore))
df_SVR = pd.DataFrame({'Actual': y_test, 'Predicted': y_pred})
print(df_SVR)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:27:02