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

基于日期范围的时序数据采样划分最佳方法

时序气温预测任务的数据集划分方案

首先明确你提到的两种划分方式都存在明显问题:

  • 把含待预测5.7-5.18时段的全量数据当训练集、再把同一待预测时段当测试集的方案完全不可行,属于严重数据泄露:模型训练阶段已经见过测试集全部数据,输出的评估指标没有任何参考价值,相当于提前拿到答案再考试,完全反映不了真实预测场景的效果。
  • 排序后直接按8:2比例有序划分训练测试集的方案存在适配性问题:这种切法得到的测试集是距离目标预测窗口较远的历史时段,基于这个测试集调出来的模型参数,不一定适配5月中旬的气温规律;如果是排序后再随机拆分,会直接破坏时序依赖,出现未来数据流入训练集的问题,结果完全失真。

200条小样本气象时序任务的最优处理流程

  • 先做特征工程适配非时序模型:你选的决策树/RF、SVM、NN都不是原生支持时序依赖的模型,不能直接用原始表格特征训练。需要先构造滞后特征+滑窗统计特征:比如取预测日期前1天、前3天、前7天的气温、气压、湿度、风速、降雨量的原始值,以及对应窗口内的均值、极值、标准差作为输入特征,预测目标为对应日期的气温;如果不是做当日实时预报,全程不能用预测当日的观测特征,避免特征泄露。
  • 用**滚动向前验证(Walk-forward Validation)**做模型调参和效果评估,这是小样本时序任务最贴合真实场景的验证方式:你最终要预测最后12天左右的气温,就从靠近目标窗口的位置切分验证集,比如第一轮用前170条(2007.11.1-2008.4.19左右)当训练集,取后续12天数据当验证集;第二轮把这12天验证集加入训练集,再取后续12天当新的验证集,多轮验证的平均效果作为模型选型、参数调优的依据,全程保证训练集时间严格早于验证集,绝对不引入未来信息。
  • 最终预测阶段:用2007.11.1-2008.5.6的全部历史数据训练调好参数的最优模型,直接输出2008.5.7-2008.5.18的气温预测结果即可,不需要额外的测试集做评估——前面滚动验证的结果已经能反映模型的真实泛化能力。

附:提供的R代码问题修正

你贴的代码里日期排序部分有格式错误,as.Date()的格式符写错了:%M代表分钟、%D是固定的%m/%d/%y格式,和数据里的年-月-日日期格式不匹配,会导致排序错乱,修正后的可运行代码如下:

install.packages("rattle")
install.packages("RGtk2")
library("rattle")

seed <- 42
set.seed(seed)
fname <- system.file("csv", "weather.csv", package = "rattle")
dataset <- read.csv(fname, encoding = "UTF-8")

dataset$Date <- as.Date(dataset$Date)
# 修正错误的日期格式参数,直接按Date类型排序即可
dataset <- dataset[order(dataset$Date),]
dataset <- dataset[1:200,]
str(dataset)

运行后输出的数据集结构和示例一致,为200条观测、24个字段的Canberra站点气象数据,时间范围刚好覆盖2007-11-01到2008-05-18时段。

额外提醒:数据集里的RISK_MM字段是和降雨量直接相关的泄露字段,做降雨预测时需要删掉,做气温预测时也建议先做相关性校验,如果和待预测气温直接挂钩也要谨慎使用,避免泄露。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 12:09:13