在数据分析和机器学习领域,时间序列数据的处理和预测是一个关键且复杂的任务。Functime是一个专为大规模时间序列数据分析而设计的Python库,它利用Polars库的并行处理能力,以其高效、易用和强大的功能,为时间序列分析提供了一整套解决方案。
Functime的核心特性
-
生产就绪:Functime提供了一个强大且易于使用的API,用于预测和特征工程,适用于生产环境。 -
快速性能:能够在几秒钟内对100,000个时间序列进行预测,即使在笔记本电脑上也能实现。 -
高效特征提取:使用Polars库并行提取数百个时间序列特征。 -
支持多种数据模式:Functime支持面板数据和时间序列数据模式,适用于不同的数据集结构。 -
全面的功能:包括预处理、特征提取、时间序列交叉验证/分割器、回测、自动化超参数调整和评分。 -
外生特征支持:每个预测器都支持外生特征。 -
季节性效应:使用日历、傅里叶和假日特征来处理季节性效应。 -
自动化滞后和超参数调整:使用FLAML进行自动化滞后和超参数调整。 -
概率预测:通过分位数回归和保形预测提供概率预测。 -
评分指标:支持并行评分,使用MASE、sMAPE、CRPS等预测指标。 -
支持递归和直接预测策略:为零膨胀预测提供截断模型。 -
与LLMs互操作:Functime支持调用大型语言模型(如OpenAI的GPT模型),以增强预测分析。
安装和使用
Functime可以通过pip包管理器轻松安装。如果需要额外的功能,如使用大型语言模型或LightGBM预测器,可以通过指定额外的选项进行安装:
pip install "functime[llm,lgb]"
Functime提供了一个简洁的API,允许用户以函数式编程的方式进行数据的拟合和预测。例如,可以使用以下代码进行时间序列的加载、训练、预测和评分:
import polars as pl
from functime.cross_validation import train_test_split
from functime.forecasting import linear_model
from functime.preprocessing import scale
from functime.metrics import mase
# 加载商品价格数据
y = pl.read_parquet("https://github.com/functime-org/functime/raw/main/data/commodities.parquet")
entity_col, time_col = y.columns[:2]
# 时间序列分割
y_train, y_test = y.pipe(train_test_split(test_size=3))
# 拟合-预测
forecaster = linear_model(freq="1mo", lags=24)
forecaster.fit(y=y_train)
y_pred = forecaster.predict(fh=3)
# 评分预测
scores = mase(y_true=y_test, y_pred=y_pred, y_train=y_train)
特征提取
Functime提供了100多个时间序列特征提取器,每个特征都可以通过Functime的自定义ts(时间序列)命名空间轻松访问。例如,可以使用以下代码提取单个时间序列的特征:
from functime.feature_extractors import FeatureExtractor, binned_entropy
# 加载商品价格数据
y = pl.read_parquet("https://github.com/functime-org/functime/raw/main/data/commodities.parquet")
entity_col, time_col, value_col = y.columns
# 提取单个时间序列的特征
binned_entropy = binned_entropy(
pl.Series(np.random.normal(0, 1, size=10)),
bin_count=10
)
Functime还支持在LazyFrames上进行查询优化,可以快速地对多个时间序列进行特征提取。
使用大模型进行分析
Functime允许用户利用大型语言模型对预测结果进行深入分析。例如,可以分析不同商品的价格预测,并提供数据集的上下文以帮助LLM进行更准确的分析:
analysis = y_pred.llm.analyze(
context="This dataset comprises of forecasted commodity prices between 2020 to 2023.",
basket=["Aluminum", "Banana, Europe"],
)
Functime还允许用户比较不同商品或资产类别的预测结果。以下是一个比较两个不同商品篮子预测结果的示例:
basket_a = ["Aluminum", "Banana, Europe"]
basket_b = ["Chicken", "Cocoa"]
comparison = y_pred.llm.compare(basket=basket_a, other_basket=basket_b)
总结
Functime是一个功能丰富的时间序列分析库,它不仅提供了高效的预测和特征提取工具,还通过集成大型语言模型,增强了对预测结果的分析和解释能力。通过结合传统机器学习方法和最新的人工智能技术,Functime为用户提供了一个全面而先进的时间序列分析解决方案。
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/111117
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!