一行代码,得到最强时序基线!

本文介绍了AutoTS,一个集成自动化机器学习的Python库,用于快速训练并选择ARIMA、SARIMAX、FBProphet和VAR等模型进行时间序列预测。只需一行代码即可完成模型训练,是解决时间序列问题的强大工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 AutoTS 

简介

e502c4ea052fd77193cf941e554905d0.png

时间序列问题无论是在销量预测,天气预测还是在股票预测等问题中都至关重要,而如今随着机器学习等快速发展,已经出现了非常多时间序列建模相关的工具包,今天介绍一种非常霸道的工具,融合了自动化机器学习技术开发的AutoTS。

Auto TS会先对数据进行预处理,从数据中删除异常值,通过学习寻找最佳的NaN值。只需使用一行代码,就可以训练多个时间序列模型,包括ARIMA、SARIMAX、FB Prophet、VAR,并得出效果最佳的模型。

a2a975018088079a5a0240a61f80ed0b.png

AutoTS

cf61a51f59878f96d7a0353d9fdb554e.png

Auto TS是一个关于时间序列预测的开源Python库。

它可以在仅仅使用一行Python代码中训练多个时间序列预测模型,包括ARIMA、SARIMAX、FB Prophet、VAR等,然后在从中选择最佳模型进行预测。其中AutoTS包含的技术有:

  • 遗传规划优化方法寻找最优时间序列预测模型。

  • 训练简单的模型、统计模型、机器学习模型和深度学习模型,同时涉及到所有可能的超参数配置和交叉验证。

  • 其它

代码

5acbc70d420874f5c8f49fff9ea62173.png

  • 代码摘自:https://medium.com/towards-data-science/train-multiple-time-series-forecasting-models-in-one-line-of-python-code-615f2253b67a

# !pip install autots
from autots import auto_timeseries
import pandas as pd


df = pd.read_csv("./data/data.csv", usecols=['Date', 'Close'])
df['Date'] = pd.to_datetime(df['Date'])
df = df.sort_values('Date')
train_df.Close.plot(figsize=(15,8), title= 'AMZN Stock Price', fontsize=14, label='Train')
test_df.Close.plot(figsize=(15,8), title= 'AMZN Stock Price', fontsize=14, label='Test')
plt.legend()
plt.grid()
plt.show()

b2945d660eb4372504f715b29d017254.png

model = auto_timeseries(forecast_period=219, score_type='rmse', time_interval='D', model_type='best')
model.fit(traindata= train_df, ts_column="Date", target="Close")
future_predictions = model.predict(testdata=219)

ca2bda895dcb6d2f418b04a51fcb22b3.png

小结

95e81c1b91c1267481e1b10af9f22b89.png

Auto TS是一个非常不错的时间序列Baseline工具包,集成了非常多经典的时序模型,在碰到时间序列问题时,可以考虑使用AutoTS来进行训练和预测,作为一个非常不错的基线。

参考文献

6c7af1bd52e6ac76bfa4b46cb772b91b.png

  1. Train multiple Time Series Forecasting Models in one line of Python Code

  2. https://pypi.org/project/AutoTS/

  3. https://github.com/winedarksea/AutoTS

71a426d32392bc814632358632187435.png

干货学习,三连

### 一维时序信号基线去除算法 一维时序信号的基线去除是信号处理中的一个重要步骤,旨在消除信号中的低频漂移或直流分量,从而提高后续分析的准确性。以下是几种常见的基线去除算法及其特点: #### 1. 平均移除法 平均移除法是一种简单且有效的方法,通过从原始信号中减去其平均来消除直流分量。这种方法适用于信号中仅存在恒定偏移的情况[^1]。 ```python import numpy as np def remove_mean(signal): return signal - np.mean(signal) ``` #### 2. 使用 `detrend` 函 MATLAB 和 Python 的 SciPy 库提供了 `detrend` 函,可以用于去除信号中的线性趋势或恒定偏移。对于一维时序信号,可以选择 `'constant'` 或 `'linear'` 模式来分别去除均或线性趋势。 ```python from scipy.signal import detrend def remove_trend(signal, mode='constant'): return detrend(signal, type=mode) ``` #### 3. 小波变换去噪 小波变换是一种强大的时频分析工具,能够将信号分解到不同尺度的小波基上。通过选择合适的阈,可以有效地分离信号和噪声,同时去除基线漂移[^3]。 ```python import pywt def wavelet_denoise(signal, wavelet='db4', level=None): coeffs = pywt.wavedec(signal, wavelet, level=level) threshold = np.sqrt(2 * np.log(len(signal))) # Universal threshold coeffs_thresh = [pywt.threshold(c, value=threshold) for c in coeffs] return pywt.waverec(coeffs_thresh, wavelet) ``` #### 4. 多项式拟合法 多项式拟合法通过拟合信号的低频成分(如基线漂移)并将其从原始信号中减去,达到去除基线的目的。通常选择较低阶次的多项式以避免过拟合[^1]。 ```python import numpy as np def polynomial_baseline_removal(signal, degree=2): t = np.arange(len(signal)) p = np.polyfit(t, signal, degree) baseline = np.polyval(p, t) return signal - baseline ``` #### 5. 高通滤波器 高通滤波器可以通过抑制低频成分来去除基线漂移。设计一个截止频率适当的高通滤波器,并将其应用于信号,即可实现基线去除。 ```python from scipy.signal import butter, filtfilt def high_pass_filter(signal, cutoff_freq, fs, order=4): nyquist = 0.5 * fs normal_cutoff = cutoff_freq / nyquist b, a = butter(order, normal_cutoff, btype='high', analog=False) return filtfilt(b, a, signal) ``` ### 总结 不同的基线去除方法适用于不同的应用场景。平均移除法和 `detrend` 函适合处理简单的恒定偏移或线性趋势;多项式拟合法和小波变换适用于更复杂的基线漂移;高通滤波器则适合需要保留高频信息的场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值