使用TimesFM 对车辆销售进行预测

TimesFM模型在车辆销售数据的应用与微调

代码功能概述

  1. 导入相关包与设置环境变量
    • 首先导入了如 osnumpypandas 等常用的 Python 库,同时设置了一些与特定库(如 XLA_PYTHON_CLIENT_PREALLOCATE 和 JAX_PM AP_USE_TENSORSTORE)相关的环境变量,用于优化计算等操作。
  2. 加载预训练的 TimesFM 模型
    • 通过指定相关超参数(如后端为 gpu、每核心批处理大小等)以及预训练模型在 Hugging Face 上的仓库 id,实例化了 TimesFm 模型对象,用于后续的评估和微调等操作。
  3. 准备数据集相关信息并加载数据
    • 定义了一个数据集字典 DATA_DICT,包含多个数据集(如 ettm1 等)的详细信息,包括数据文件路径、时间频率、划分边界等。
    • 根据选定的数据集(示例中初始化为 ettm1),读取对应的数据文件为 DataFrame,然后配置 TimeSeriesdata 类的实例来进行数据加载、划分训练集、验证集和测试集,同时对数据进行了一些规范化等预处理操作,并生成对应的批次数据(train_batchesval_batchestest_batches)。
  4. 评估预训练模型在测试集上的 MAE(平均绝对误差)
    • 通过迭代测试集批次数据,利用预训练模型进行预测,计算预测值和实际值之间的平均绝对误差,以此来评估模型在当前数据集上的性能表现。
  5. 微调模型
    • 导入了一系列用于构建和训练模型的 praxispaxml 相关的模块和类,进行了诸如定义学习器(包括优化器、学习率调度等配置)、构建任务、初始化模型状态等操作。
    • 将预训练模型的参数设置为微调模型的初始权重,然后通过定义训练步和评估步函数,在多个 epoch 内循环进行训练和定期评估(利用早停机制,根据验证集损失决定是否提前停止训练),在每个训练步中对模型参数进行更新,每个评估步计算验证集上的损失,保存最优模型状态的检查点。
  6. 加载并评估微调后的模型
    • 从保存的检查点中恢复最优的模型状态,将其参数更新到原 TimesFM 模型中,然后再次在测试集上计算平均绝对误差,以对比微调前后模型性能的变化情况。

针对车辆销售数据的改写步骤

  1. 数据准备与加载部分(适配车辆销售数据)

    • 修改数据集字典 DATA_DICT
      • 创建一个新的字典项来对应你的车辆销售数据集,例如取名为 vehicle_sales
      • 填写对应的数据文件路径(假设你的车辆销售数据存储在 ../datasets/vehicle_sales.csv,则 data_path 设置为此路径)。
      • 根据你的数据时间粒度来设置 freq,比如如果是按天记录的,就可以设置为 "D"(代表 Daily),如果是按月记录的,可设置为 "M"(代表 Monthly)等。
      • 按照你的训练、验证、测试集划分的时间范围来设置 boundaries 列表中的值,例如如果前 3 年数据作为训练集,第 4 年作为验证集,第 5 年作为测试集,你需要根据数据点数量等信息确定对应的时间点边界值填入该列表。
    • 调整数据读取和数据加载配置部分
      • 在 data_df = pd.read_csv(open(data_path, "r")) 这行代码中,确认数据文件格式正确能被 read_csv 方法读取,如果数据有特定的分隔符、编码等情况,按需调整参数(比如添加 sep 参数指定分隔符、encoding 参数指定编码格式等)。
      • 根据你的车辆销售数据列名,修改 ts_colsnum_cov_colscat_cov_cols 的定义。例如,销售量和销售价格等数值型的时间序列列可添加到 ts_cols,车型、经销商这些分类列可以根据需求分配到 num_cov_cols(如果要进行数值编码等处理)或者 cat_cov_cols(作为分类特征)中。同时修改 TimeSeriesdata 实例化时传入的参数,确保数据能正确划分和预处理,例如 datetime_col 设置为数据中代表日期的列名。
  2. 模型微调部分(可能无需大改,但检查配置合理性)

    • 确认微调时定义的学习器配置(如优化器、学习率调度等参数)是否适合车辆销售数据预测任务。你可能需要根据实际情况调整学习率、训练总步数等参数,例如车辆销售数据如果比较复杂,可能需要适当调小学习率、增加训练总步数等,以保证模型能更好地收敛和学习到数据中的模式。
    • 检查 build_learner 函数中设置的 bprop_variable_exclusion 参数是否合理,对于车辆销售数据微调场景下想要固定或者放开训练的模型层,根据模型结构和需求进行调整,确保只训练希望更新参数的那些部分。
  3. 模型评估部分(保持逻辑基本一致)

    • 在计算微调前后模型在测试集上的平均绝对误差(MAE)部分,确保数据维度等处理符合车辆销售数据的特点。例如,在预测结果和实际结果对比计算 MAE 时,确认预测的销售量、销售价格等和实际值的对应关系和维度对齐正确,特别是如果有多个时间序列维度或者特征维度时,保证 forecasts 和 actuals 的形状匹配能正确计算误差。

以下是一个python代码(假设你的车辆销售数据 vehicle_sales.csv 有 date(日期)、car_model(车型)、dealer(经销商)、sales_volume(销售量)、sales_price(销售价格)这几列,并且想将车型和经销商作为分类特征,销售量和销售价格作为时间序列特征,数据按年划分训练、验证、测试集,这里简化假设前 3 年训练、第 4 年验证、第 5 年测试,并且时间频率是按年 "Y"):

# 以下代码主要用于基于TimesFM模型对车辆销售数据进行预训练模型评估、模型微调以及微调后模型的评估操作
# 导入相关包用于微调操作,同时设置一些环境变量来优化计算等相关配置
## Importing relevant packages for finetuning
import os
os.environ['XLA_PYTHON_CLIENT_PREALLOCATE'] = 'false'
o
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值