工具系列:TimeGPT_(1)获取token方式和初步使用

文章目录

    • 介绍
    • 获取Token
    • 用法
    • 数据的重要要求
    • 使用DateTime索引推断频率。

介绍

Nixtla的TimeGPT是一种用于时间序列数据的生成式预训练预测模型。TimeGPT可以在没有训练的情况下,仅使用历史值作为输入,为新的时间序列生成准确的预测。TimeGPT可以用于各种任务,包括需求预测、异常检测、财务预测等等。

TimeGPT 利用 Transformer 架构和基于 Google 和多伦多大学 2017 年开创性工作的自注意力机制。该模型是根据来自公开数据的 1000 亿个数据点进行训练的。

TimeGPT模型的工作方式类似于人类阅读句子的方式-从左到右。它查看过去数据的窗口,我们可以将其视为“标记”,并预测接下来会发生什么。这种预测是基于模型在过去数据中识别出的模式,并推断到未来。

该API提供了与TimeGPT的接口,允许用户利用其预测能力来预测未来事件。TimeGPT还可以用于其他与时间序列相关的任务,例如假设情景、异常检测等等。

获取Token

1、官网网站:
https://docs.nixtla.io

2、登录入口
工具系列:TimeGPT_(1)获取token方式和初步使用_第1张图片
红色框处的Log in
3、登录控制台
工具系列:TimeGPT_(1)获取token方式和初步使用_第2张图片

4、创建Token
工具系列:TimeGPT_(1)获取token方式和初步使用_第3张图片

5、查看使用次数
工具系列:TimeGPT_(1)获取token方式和初步使用_第4张图片
可以免费使用420次

用法


# Import the colab_badge module from the nixtlats.utils package
from nixtlats.utils import colab_badge
# 导入colab_badge函数
from IPython.display import colab_badge

# 调用colab_badge函数,显示Colab徽章
colab_badge('docs/getting-started/1_getting_started_short')
# 导入load_dotenv函数,用于加载.env文件中的环境变量
from dotenv import load_dotenv
# 加载dotenv模块,用于从.env文件中加载环境变量
load_dotenv()
True
# 导入TimeGPT模块
from nixtlats import TimeGPT
/home/ubuntu/miniconda/envs/nixtlats/lib/python3.11/site-packages/statsforecast/core.py:25: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
  from tqdm.autonotebook import tqdm

您可以实例化TimeGPT类并提供您的凭据。

# 导入TimeGPT类
from timegpt import TimeGPT

# 创建TimeGPT对象,传入token参数,如果没有提供则默认使用环境变量中的TIMEGPT_TOKEN
timegpt = TimeGPT(token='my_token_provided_by_nixtla')
# 创建一个TimeGPT对象,用于生成时间相关的文本。
timegpt = TimeGPT()

您可以通过调用validate_token方法来测试您的令牌的有效性。

# 调用timegpt模块的validate_token()函数进行token验证
timegpt.validate_token()
INFO:nixtlats.timegpt:Happy Forecasting! :), If you have questions or need support, please email [email protected]





True

现在您可以开始进行预测了!让我们导入一个经典的AirPassengers数据集的示例。该数据集包含1949年至1960年期间澳大利亚每月的航空公司乘客数量。首先,让我们加载数据集并绘制它:

# 导入pandas库,用于数据处理和分析
import pandas as pd
df = pd.read_csv('https://raw.githubusercontent.com/Nixtla/transfer-learning-time-series/main/datasets/air_passengers.csv')

# 显示数据集的前5行
df.head()
timestamp value
0 1949-01-01 112
1 1949-02-01 118
2 1949-03-01 132
3 1949-04-01 129
4 1949-05-01 121
# 使用timegpt模块的plot函数绘制图表
# 参数df为数据集,time_col为时间列,target_col为目标列
timegpt.plot(df, time_col='timestamp', target_col='value')

工具系列:TimeGPT_(1)获取token方式和初步使用_第5张图片

数据的重要要求

  • 确保目标变量列没有缺失或非数字值。
  • 在第一个和最后一个日期戳之间不要包含日期戳的间隔/跳跃(对于给定的频率)。预测函数不会填补缺失的日期。
  • 日期戳列的格式应该可以被Pandas读取(有关更多详细信息,请参见此链接)。

下一步,使用SDK的forecast方法预测接下来的12个月。设置以下参数:

  • df:包含时间序列数据的pandas dataframe。
  • h:要预测的步数。
  • freq:时间序列的频率,使用Pandas格式。参见pandas可用的频率。
  • time_col:标识日期时间戳列的列。
  • target_col:我们想要预测的变量。
# 使用timegpt库中的forecast函数对数据进行预测
# 参数说明:
# - df: 待预测的数据框
# - h: 预测的时间步数
# - freq: 预测的时间频率
# - time_col: 时间列的列名
# - target_col: 目标列的列名
timegpt_fcst_df = timegpt.forecast(df=df, h=12, freq='MS', time_col='timestamp', target_col='value')

# 打印预测结果的前几行
timegpt_fcst_df.head()
INFO:nixtlats.timegpt:Validating inputs...
INFO:nixtlats.timegpt:Preprocessing dataframes...
INFO:nixtlats.timegpt:Calling Forecast Endpoint...
timestamp TimeGPT
0 1961-01-01 437.837952
1 1961-02-01 426.062744
2 1961-03-01 463.116577
3 1961-04-01 478.244507
4 1961-05-01 505.646484

# 导入必要的库
import timegpt

# 使用timegpt库中的plot函数绘制图表
# 参数df为原始数据集,timegpt_fcst_df为预测数据集
# time_col参数指定时间列的名称为'timestamp'
# target_col参数指定目标列的名称为'value'
timegpt.plot(df, timegpt_fcst_df, time_col='timestamp', target_col='value')

工具系列:TimeGPT_(1)获取token方式和初步使用_第6张图片

您还可以通过增加时间范围参数来生成更长的预测。例如,让我们预测接下来的36个月:

# 使用timegpt模块中的forecast函数对数据进行预测
# 参数df表示输入的数据框
# 参数h表示预测的时间步数
# 参数time_col表示时间列的名称
# 参数target_col表示目标列的名称
# 参数freq表示数据的频率
timegpt_fcst_df = timegpt.forecast(df=df, h=36, time_col='timestamp', target_col='value', freq='MS')

# 打印预测结果的前几行
timegpt_fcst_df.head()
INFO:nixtlats.timegpt:Validating inputs...
INFO:nixtlats.timegpt:Preprocessing dataframes...
WARNING:nixtlats.timegpt:The specified horizon "h" exceeds the model horizon. This may lead to less accurate forecasts. Please consider using a smaller horizon.
INFO:nixtlats.timegpt:Calling Forecast Endpoint...
timestamp TimeGPT
0 1961-01-01 437.837952
1 1961-02-01 426.062744
2 1961-03-01 463.116577
3 1961-04-01 478.244507
4 1961-05-01 505.646484
# 使用timegpt模块中的plot函数来绘制图表
# 参数df是原始数据,timegpt_fcst_df是预测数据
# time_col指定时间列的名称,target_col指定目标列的名称
timegpt.plot(df, timegpt_fcst_df, time_col='timestamp', target_col='value')

工具系列:TimeGPT_(1)获取token方式和初步使用_第7张图片

或者一个更短的:

# 使用timegpt模块的forecast函数对数据进行预测
# 参数df表示输入的数据框
# 参数h表示预测的时间步长
# 参数time_col表示时间列的名称
# 参数target_col表示目标列的名称
# 参数freq表示数据的频率
timegpt_fcst_df = timegpt.forecast(df=df, h=6, time_col='timestamp', target_col='value', freq='MS')

# 使用timegpt模块的plot函数绘制原始数据和预测数据的图形
# 参数df表示原始数据框
# 参数timegpt_fcst_df表示预测数据框
# 参数time_col表示时间列的名称
# 参数target_col表示目标列的名称
timegpt.plot(df, timegpt_fcst_df, time_col='timestamp', target_col='value')
INFO:nixtlats.timegpt:Validating inputs...
INFO:nixtlats.timegpt:Preprocessing dataframes...
INFO:nixtlats.timegpt:Calling Forecast Endpoint...

工具系列:TimeGPT_(1)获取token方式和初步使用_第8张图片

TimeGPT-1目前针对短期预测进行了优化。虽然forecast方法可以允许任何正数和大的预测范围,但预测的准确性可能会降低。我们目前正在努力提高对长期预测的准确性。

使用DateTime索引推断频率。

freq参数表示连续数据点之间的时间单位,特别关键。幸运的是,您可以将具有DateTime索引的DataFrame传递给预测方法,确保您的时间序列数据配备了必要的时间特征。通过将适当的freq参数分配给DataFrame的DateTime索引,您可以向模型提供有关观测之间一致间隔的信息,无论是天(‘D’)、月(‘M’)还是其他适当的频率。

# 将DataFrame的索引设置为'timestamp'列
df_time_index = df.set_index('timestamp')

# 将索引转换为DatetimeIndex对象,并设置频率为'MS'(月初)
df_time_index.index = pd.DatetimeIndex(df_time_index.index, freq='MS')

# 使用timegpt模型对DataFrame进行预测,预测未来36个时间点的值
# 预测使用的数据为df,时间列为'timestamp',目标列为'value'
forecast_result = timegpt.forecast(df=df, h=36, time_col='timestamp', target_col='value')
INFO:nixtlats.timegpt:Validating inputs...
INFO:nixtlats.timegpt:Preprocessing dataframes...
INFO:nixtlats.timegpt:Inferred freq: MS
WARNING:nixtlats.timegpt:The specified horizon "h" exceeds the model horizon. This may lead to less accurate forecasts. Please consider using a smaller horizon.
INFO:nixtlats.timegpt:Calling Forecast Endpoint...
timestamp TimeGPT
0 1961-01-01 437.837952
1 1961-02-01 426.062744
2 1961-03-01 463.116577
3 1961-04-01 478.244507
4 1961-05-01 505.646484

你可能感兴趣的:(数据挖掘,人工智能,transformer)