我曾经遇到一个类似的问题——希望将时间序列分段,使它们具有相似的趋势。对于这个任务,你可以使用 trend-classifier Python 库。它可以通过 pip 安装 (pip3 install trend-classifier
)。
下面是一个示例,它从 YahooFinance 获取时间序列数据并进行分析。
import yfinance as yf
from trend_classifier import Segmenter
# download data from yahoo finance
df = yf.download("AAPL", start="2018-09-15", end="2022-09-05", interval="1d", progress=False)
x_in = list(range(0, len(df.index.tolist()), 1))
y_in = df["Adj Close"].tolist()
seg = Segmenter(x_in, y_in, n=20)
seg.calculate_segments()
seg.plot_segments()
您可以查看每个线段的详细信息(例如,斜率的正值表示上升趋势,负值表示下降趋势)。要查看索引为3
的线段的信息:
from devtools import debug
debug(seg.segments[3])
Segmenter.segments.to_dataframe()
方法以表格形式获取所有段落的信息,该方法会生成Pandas DataFrame。seg.segments.to_dataframe()
forecast
包。 - Dinesh.hmn