Lag-Llama時間序列模型簡單實現數據預測

前言:

最近在大模型預測,簡單了解了lag-llama開源項目,網上也有很多講解原理的,這里就將如何快速上手使用說一下,只懂得一點點皮毛,有錯誤的地方歡迎大佬指出。

簡單介紹:

Lag-Llama?是一個開源的時間序列預測模型,基于?Transformer?架構設計,專注于利用?滯后特征(Lagged Features)?捕捉時間序列的長期依賴關系。其核心思想是將傳統時間序列分析中的滯后算子(Lags)與現代深度學習結合,實現對復雜時序模式的高效建模。

GitHup地址:GitHub - time-series-foundation-models/lag-llama: Lag-Llama: Towards Foundation Models for Probabilistic Time Series Forecasting

相關技術原理:...(搜一下很多文章講的都非常好)

實現模型預測:

1.下載模型文件

從?HuggingFace下載,如果網絡原因訪問不了,建議從魔搭社區下載(lag-Llama · 模型庫)

2.準備數據集

參考文檔:pandas.DataFrame based dataset - GluonTS documentation

以我測試數據舉例:

3.完整代碼:(需要替換模型文件地址和數據集地址)

from itertools import islicefrom matplotlib import pyplot as plt
import matplotlib.dates as mdatesimport torch
from gluonts.evaluation import make_evaluation_predictions, Evaluator
from gluonts.dataset.repository.datasets import get_datasetfrom gluonts.dataset.pandas import PandasDataset
import pandas as pdfrom lag_llama.gluon.estimator import LagLlamaEstimatordef get_lag_llama_predictions(dataset, prediction_length, device, num_samples, context_length=32, use_rope_scaling=False):# 模型文件地址ckpt = torch.load("/models/lag-Llama/lag-llama.ckpt", map_location=device, weights_only=False)  # Uses GPU since in this Colab we use a GPU.estimator_args = ckpt["hyper_parameters"]["model_kwargs"]rope_scaling_arguments = {"type": "linear","factor": max(1.0, (context_length + prediction_length) / estimator_args["context_length"]),}estimator = LagLlamaEstimator(# 模型文件地址ckpt_path="/models/lag-Llama/lag-llama.ckpt",prediction_length=prediction_length,context_length=context_length,# Lag-Llama was trained with a context length of 32, but can work with any context length# estimator argsinput_size=estimator_args["input_size"],n_layer=estimator_args["n_layer"],n_embd_per_head=estimator_args["n_embd_per_head"],n_head=estimator_args["n_head"],scaling=estimator_args["scaling"],time_feat=estimator_args["time_feat"],rope_scaling=rope_scaling_arguments if use_rope_scaling else None,batch_size=1,num_parallel_samples=100,device=device,)lightning_module = estimator.create_lightning_module()transformation = estimator.create_transformation()predictor = estimator.create_predictor(transformation, lightning_module)forecast_it, ts_it = make_evaluation_predictions(dataset=dataset,predictor=predictor,num_samples=num_samples)forecasts = list(forecast_it)tss = list(ts_it)return forecasts, tssimport pandas as pd
from gluonts.dataset.pandas import PandasDataseturl = ("/lag-llama/history.csv"
)
df = pd.read_csv(url, index_col=0, parse_dates=True)# Set numerical columns as float32
for col in df.columns:# Check if column is not of string typeif df[col].dtype != 'object' and pd.api.types.is_string_dtype(df[col]) == False:df[col] = df[col].astype('float32')# Create the Pandas
dataset = PandasDataset.from_long_dataframe(df, target="target", item_id="item_id")backtest_dataset = dataset
# 預測長度
prediction_length = 24  # Define your prediction length. We use 24 here since the data is of hourly frequency
# 樣本數
num_samples = 1  # number of samples sampled from the probability distribution for each timestep
device = torch.device("cuda:1")  # You can switch this to CPU or other GPUs if you'd like, depending on your environmentforecasts, tss = get_lag_llama_predictions(backtest_dataset, prediction_length, device, num_samples)# 提取第一個時間序列的預測結果
forecast = forecasts[0]
print('=================================')
# 概率預測的完整樣本(形狀: [num_samples, prediction_length])
samples = forecast.samples
print(samples)

關鍵參數說明:

參數

說明

prediction_length

預測的未來時間步長

context_length

模型輸入的歷史時間步長(需 >= 季節性周期)

num_samples

概率預測的采樣次數(值越大,概率區間越準)

checkpoint_path

預訓練模型權重路徑(需提前下載)

freq

時間序列頻率(如 "H" 小時、"D" 天)

結果:

這里只是給出了簡單的代碼實現,想要更好的效果還需深入研究!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/899488.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899488.shtml
英文地址,請注明出處:http://en.pswp.cn/news/899488.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Plastiform復制膠泥:高精度表面復制與測量的高效工具

在工業制造和質量檢測領域,表面復制和測量是確保產品質量的關鍵環節。Plastiform復制膠泥作為一種創新材料,憑借其出色的性能和多樣化的應用,為用戶提供了可靠的解決方案。它能夠快速捕捉復雜表面的細節,確保測量結果的準確性&…

AI大模型、機器學習以及AI Agent開源社區和博客

以下梳理了適合學習 AI大模型、機器學習、AI Agent和多模態技術 的英文網站、社區、官網和博客,按類別分類整理: 一、官方網站與開源平臺 1. AI大模型 (Large Language Models) ? OpenAI ? 官網: openai.com ? 內容: GPT系列模型文檔、研究論文、AP…

python 上下文管理器with

with 上下文管理器 上下文管理器示例如下:若想不使用with關鍵字 上下文管理器 任何實現了 enter() 和 exit() 方法的對象都可稱之為上下文管理器,上下文管理器對象可以使用 with 關鍵字。 必須同時具有__enter__和__exit__,就可以使用with語句…

買賣股票的最佳時機(121)

121. 買賣股票的最佳時機 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a; class Solution { public:int maxProfit(vector<int>& prices) {int cur_min prices[0];int max_profit 0;for (int i 1; i < prices.size(); i) {if (prices[i] > cur…

CesiumJS 本地數據瓦片加載南北兩極出現圓點問題

const imageryProvider new UrlTemplateImageryProvider({url: "/gisimg/{z}/{x}/{reverseY}.png",minimumLevel: 0,maximumLevel: 19})上面這段代碼是加載本地切片&#xff0c;但是有個致命問題就是會出現南北兩極顯示藍色圓點 解決方案&#xff1a; 加上這句話&am…

Linux編譯器gcc/g++使用完全指南:從編譯原理到動靜態鏈接

一、gcc/g基礎認知 在Linux開發環境中&#xff0c;gcc和g是我們最常用的編譯器工具&#xff1a; gcc&#xff1a;GNU C Compiler&#xff0c;專門用于編譯C語言程序g&#xff1a;GNU C Compiler&#xff0c;用于編譯C程序&#xff08;也可編譯C語言&#xff09; &#x1f4cc…

Vue學習筆記集--computed

computed 在 Vue 3 的 Composition API 中&#xff0c;computed 用于定義響應式計算屬性 它的核心特性是自動追蹤依賴、緩存計算結果&#xff08;依賴未變化時不會重新計算&#xff09; 基本用法 1. 定義只讀計算屬性 import { ref, computed } from vue;const count ref(…

飛致云榮獲“Alibaba Cloud Linux最佳AI鏡像服務商”稱號

2025年3月24日&#xff0c;阿里云云市場聯合龍蜥社區發布“2024年度Alibaba Cloud Linux最佳AI鏡像服務商”評選結果。 經過主辦方的嚴格考量&#xff0c;飛致云&#xff08;即杭州飛致云信息科技有限公司&#xff09;憑借旗下MaxKB開源知識庫問答系統、1Panel開源面板、Halo開…

Vue如何利用Postman和Axios制作小米商城購物車----簡版

實現功能&#xff1a;全選、單選、購物數量顯示、合計價格顯示 實現效果如下&#xff1a; 思路&#xff1a; 1.數據要利用寫在Postman里面&#xff0c;通過地址來調用Postman里面的數據。 2.寫完數據后&#xff0c;給寫的數據一個名字&#xff0c;然后加上一個空數組&#xf…

第一篇:系統分析師首篇

目錄 一、目標二、計劃三、完成情況1.宏觀思維導圖2.過程中的團隊管理和其它方面的思考 四、意外之喜(最少2點)1.計劃內的明確認知和思想的提升標志2.計劃外的具體事情提升內容和標志 一、目標 通過參加考試&#xff0c;訓練學習能力&#xff0c;而非單純以拿證為目的。 1.在復…

CSS學習筆記4——盒子模型

目錄 盒子模型是什么&#xff1f; 盒子模型的組成 一、div標簽 二、邊框屬性 1、border-style:邊框樣式 2、border-width:邊框寬度 3、border-color:邊框顏色、border&#xff1a;綜合設置 4、border-radius:圓角邊框 5、border-image&#xff1a;圖像邊框 三、邊距屬性…

復現文獻中的三維重建圖像生成,包括訓練、推理和可視化

要復現《One - 2 - 3 - 45 Fast Single Image to 3D Objects with Consistent Multi - View Generation and 3D Diffusion (CVPR)2024》文獻中的三維重建圖像生成&#xff0c;包括訓練、推理和可視化&#xff0c;并且確保代碼能正常運行&#xff0c;下面是基本的實現步驟和示例…

stable diffusion 本地部署教程 2025最新版

前提&#xff1a; 需要環境 git git下載地址Git - Downloading Package ? 直接裝即可 python3.10.6 下載地址 Python Release Python 3.10.6 | Python.org ? 記得python環境一定要3.10.6&#xff01;&#xff01;&#xff01; 第一個版本 項目地址https://github.…

【二刷代碼隨想錄】螺旋矩陣求解方法、推薦習題

一、求解方法 &#xff08;1&#xff09;按點模擬路徑 在原有坐標的基準上&#xff0c;疊加 橫縱坐標 的變化值&#xff0c;求出下一位置&#xff0c;并按題完成要求。但需注意轉角的時機判斷&#xff0c;特別是最后即將返回上一出發點的位置。 &#xff08;2&#xff09;按層…

從Manus到OpenManus:AI智能體技術如何重塑未來生活場景?

從Manus到OpenManus&#xff1a;AI智能體技術如何重塑未來生活場景&#xff1f; 一、現狀&#xff1a;AI智能體技術面臨的三大核心矛盾 &#xff08;通過分析用戶高頻痛點與市場反饋提煉&#xff09; 能力與門檻的失衡 Manus展示的復雜任務處理能力&#xff08;如股票分析、代…

迭代器與可迭代對象

概念層面&#xff1a; 可迭代對象&#xff1a; 一個可迭代對象是指任何可以返回一個迭代器的對象。換句話說&#xff0c;它實現了 __iter__() 方法 比如&#xff1a;列表、元組、字典、字符串、集合等 直接通過 for 循環使用&#xff0c;因為 for 循環內部會調用其 __iter__(…

總結PostgreSQL創建數據庫失敗的解決辦法

作者&#xff1a;朱金燦 來源&#xff1a;clever101的專欄 系統環境是Windows 11 專業版&#xff0c;PostgreSQL版本是17。在運行sql語句創建數據庫時出現錯誤&#xff1a; 閿欒: template database \"template1\" has a collation version mismatch DETAIL: Th…

Mybatis源碼 插件機制

簡介 插件是一種常見的擴展方式&#xff0c;大多數開源框架也都支持用戶通過添加自定義插件的方式來擴展或者改變原有的功能&#xff0c;MyBatis中也提供的有插件&#xff0c;雖然叫插件&#xff0c;但是實際上是通過攔截器(Interceptor)實現的&#xff0c;在MyBatis的插件模塊…

Android14 SystemUI中添加第三方AIDL

由于特殊需求&#xff0c;需要在SystemUI中添加第三方AIDL&#xff0c;去做一些客制化的修改。現在記錄一下AIDL添加的過程。 1.將AIDL文件拷貝到frameworks/base/packages/SystemUI/src/下&#xff0c;我要添加的AIDL文件是com/test/myctr/IDevicectr.aidl&#xff0c;添加后的…

Binlog、Redo log、Undo log的區別

一、binlog和redo log的區別 特性binlogredo log記錄對象記錄的是 MySQL 服務器的事務操作&#xff0c;針對的是整個數據庫實例。記錄的是 InnoDB 存儲引擎的數據頁變化&#xff0c;針對的是具體的存儲引擎層面。記錄內容記錄的是事務的邏輯操作&#xff0c;例如 SQL 語句&…