头图

大家好,我是涛哥,本文内容来自 涛哥聊Python ,转载请标原创。

更多Python学习内容:http://ipengtao.com

今天为大家分享一个超酷的 Python 库 - skforecast。

Github地址:https://github.com/JoaquinAmatRodrigo/skforecast


时间序列预测是数据科学和机器学习中的一个重要领域。在各种实际应用中,如金融市场预测、需求预测和气象预测等,时间序列预测模型起着关键作用。skforecast 是一个基于 scikit-learn 的 Python 库,专门用于时间序列预测。它简化了模型的构建、训练和评估过程,使得开发者能够更高效地进行时间序列预测。本文将详细介绍 skforecast 库,包括其安装方法、主要特性、基本和高级功能,以及实际应用场景,帮助全面了解并掌握该库的使用。

安装

要使用 skforecast 库,首先需要安装它。可以通过 pip 工具方便地进行安装。

以下是安装步骤:

pip install skforecast

安装完成后,可以通过导入 skforecast 库来验证是否安装成功:

import skforecast
print("skforecast 库安装成功!")

特性

  1. 基于 scikit-learn:与 scikit-learn 无缝集成,支持所有 scikit-learn 中的回归模型。
  2. 自动调参:支持超参数自动调优,简化模型优化过程。
  3. 多步预测:支持多步预测,即一次性预测多个未来时刻的值。
  4. 时间序列分割:提供方便的时间序列分割工具,用于模型训练和评估。
  5. 丰富的评估指标:支持多种评估指标,如 MAE、MSE、RMSE 等,便于模型性能评估。

基本功能

导入库和数据集

import numpy as np
import pandas as pd
from skforecast.ForecasterAutoreg import ForecasterAutoreg
from sklearn.ensemble import RandomForestRegressor

# 生成示例时间序列数据
data = pd.Series(np.sin(np.arange(100) * 0.1))
print(data.head())

创建和训练模型

使用 skforecast 库,可以方便地创建和训练时间序列预测模型。

# 创建和训练模型
forecaster = ForecasterAutoreg(
    regressor=RandomForestRegressor(n_estimators=100),
    lags=10
)
forecaster.fit(y=data)
print("模型训练完成!")

进行预测

skforecast 库支持进行单步预测和多步预测。

# 单步预测
predictions = forecaster.predict(steps=10)
print("单步预测结果:", predictions)

# 多步预测
multi_predictions = forecaster.predict(steps=20)
print("多步预测结果:", multi_predictions)

高级功能

超参数自动调优

skforecast 库支持超参数自动调优。

from skforecast.model_selection import grid_search_forecaster

# 定义参数网格
param_grid = {'n_estimators': [50, 100, 200]}

# 进行超参数调优
results = grid_search_forecaster(
    forecaster=forecaster,
    y=data,
    param_grid=param_grid,
    lags_grid=[5, 10, 20],
    steps=10,
    metric='mean_squared_error',
    refit=True
)
print("超参数调优结果:", results)

时间序列分割

skforecast 库提供方便的时间序列分割工具,用于模型训练和评估。

from skforecast.model_selection import time_series_split

# 进行时间序列分割
for train_index, test_index in time_series_split(data, test_size=10):
    train_data, test_data = data[train_index], data[test_index]
    print("训练数据长度:", len(train_data))
    print("测试数据长度:", len(test_data))

自定义评估指标

skforecast 库允许用户自定义评估指标。

from sklearn.metrics import mean_absolute_error

# 自定义评估指标
def custom_metric(y_true, y_pred):
    return mean_absolute_error(y_true, y_pred)

# 使用自定义评估指标
metric_value = custom_metric(data[-10:], predictions)
print("自定义评估指标结果:", metric_value)

实际应用场景

金融市场预测

在金融市场中,预测股票价格是一个常见的应用。

import pandas_datareader.data as web

# 获取股票数据
data = web.DataReader('AAPL', data_source='yahoo', start='2020-01-01', end='2021-01-01')['Close']

# 创建和训练模型
forecaster = ForecasterAutoreg(
    regressor=RandomForestRegressor(n_estimators=100),
    lags=30
)
forecaster.fit(y=data)

# 进行预测
predictions = forecaster.predict(steps=10)
print("股票价格预测结果:", predictions)

需求预测

在零售业中,预测产品需求量是库存管理的重要环节。

# 生成示例需求数据
data = pd.Series(np.random.poisson(10, 100))

# 创建和训练模型
forecaster = ForecasterAutoreg(
    regressor=RandomForestRegressor(n_estimators=100),
    lags=12
)
forecaster.fit(y=data)

# 进行预测
predictions = forecaster.predict(steps=10)
print("需求预测结果:", predictions)

总结

skforecast 库是一个功能强大且易于使用的时间序列预测工具,能够帮助开发者在时间序列预测中提高效率。通过支持多种回归模型、超参数自动调优、多步预测、时间序列分割和自定义评估指标,skforecast 库能够满足各种复杂的时间序列预测需求。本文详细介绍了 skforecast 库的安装方法、主要特性、基本和高级功能,以及实际应用场景。希望本文能帮助大家全面掌握 skforecast 库的使用,并在实际项目中发挥其优势。


涛哥聊Python
59 声望37 粉丝