流光显示时间序列的问题

Posted

技术标签:

【中文标题】流光显示时间序列的问题【英文标题】:Issues with displays timeseries with streamlit 【发布时间】:2021-04-03 07:42:54 【问题描述】:

我试图使用 streamlit 显示预测时间序列,但我卡住了,因为我不知道我应该先做什么,对于时间序列我使用 jupyter notebook 的 bcs,我很困惑如何使用 streamlit 显示它(固定的问题等)。大家能给我参考一下吗?谢谢! 这是我在 spyder 中的代码(我只显示原始数据和图表,是的,部署我的预测时卡住了)

import streamlit as st
import pandas as pd
import numpy as np
import plotly.express as px
import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import acf,pacf
from statsmodels.tsa.stattools import adfuller
from statsmodels.tsa.arima_model import ARIMA
import warnings                                  # `do not disturbe` mode
warnings.filterwarnings('ignore')

st.title('Forecasting Harga KCL')

DATE_COLUMN = 'month'


@st.cache
def load_data(nrows):
    data = pd.read_csv('kcl.csv', nrows=nrows)
    lowercase = lambda x: str(x).lower()
    data.rename(lowercase, axis='columns', inplace=True)
    data[DATE_COLUMN] = pd.to_datetime(data[DATE_COLUMN])
    data.set_index('month', inplace=True)
    data =data['price']
    return data

data_load_state = st.text('Loading data...')
data = load_data(300)
data_load_state.text("Done! (using st.cache)")

if st.checkbox('Show raw data'):
    st.subheader('Raw data')
    st.write(data)

st.subheader('Plot harga')
st.line_chart(data)

st.subheader('Harga Prediksi')

关于下面这段代码,我不知道它是否正确,因为时间序列根本没有通过平稳测试,预测可能会出错

data = data [66:]
for a in range(1,30):
    model = ARIMA (data, order = (1, 1, 1))
    model_fit = model.fit(disp=False)
    yhat = model_fit.predict(len(data), len(data), typ='levels')
    data = data.append(yhat)
    st.write(yhat)
    # We display the prediction to see when it passes 0
if st.checkbox('Show hasil prediksi'):
    st.subheader('data prediction')
    st.write(yhat)

希望大家能理解我的不理解和提问!提前谢谢你

【问题讨论】:

【参考方案1】:

听起来您有两个问题 - 一个是关于流光的,另一个是关于时间序列平稳性的。

如果您尝试在本地提供流光模型,只需执行streamlit run my_file.py 即可在其中插入文件路径。您必须在您的机器/虚拟环境上安装 streamlit。如果您尝试在服务器上部署您的应用程序,请查看精简的部署指南here。 Heroku 可能是最简单的免费部署。

如果您的数据不是固定的并且存在季节性成分,您将需要 SARIMA 而不是 ARIMA。

如果您想尝试使用 p,d,q,P,D,Q 自动选择 SARIMA 的值或在拟合之前进行任何转换,sktime's autoarima 可能会有所帮助。它包装了使用 statsmodels SARIMAX 的 pmdarima。

Forecasting Principles and Practice](https://otexts.com/fpp3/) Rob Hyndman 和 George Athanasopoulos 是一本很棒的关于时间序列的免费电子书。

【讨论】:

非常感谢你帮了我很多忙!但对不起,我之前的意思是显示图表而不是部署..我在显示和部署之间感到困惑..是的,我真正想问的是在 jupyter 笔记本中我做了所有预测的事情,但是在 streamlit 中呢(我正在使用spyder)我是否必须检查平稳、假设、acf pacf 和所有关于平稳的东西才能显示我的预测?再次感谢您! 在我尝试做所有固定的事情之前,但我遇到了这样的错误“ufunc 循环不支持类型函数的参数 0,它没有可调用的日志方法” 如果您不想使用 Jupyter 笔记本,可以只使用 Python 脚本来检查平稳性。一般来说,我会在 Jupyter 笔记本中以交互方式完成所有这些操作。如果您想要一个向人们展示如何检查平稳性的应用程序,我只会使用 streamlit。

以上是关于流光显示时间序列的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在流光中显示绘图

如何在流光中缓存绘图?

如何在流光中将文本泵入滚动窗口?

中心流光按钮

如何清除特定的流光缓存?

流光小部件依赖