我一直在玩先知。我对 Python 很陌生。无论如何,由于某种原因,当我绘制我的预测时,它在一开始就放置了 1970 年的 30 行日期。我的约会要到 2016 年才开始。我肯定在某个地方搞砸了。我真的只想从 2016 年到 2021 年。它不应该从数据框中的最早日期开始吗?
%matplotlib inline
import pandas as pd
from fbprophet import Prophet
import matplotlib.pyplot as plt
plt.style.use('fivethirtyeight')
df = pd.read_csv('sp18.csv',parse_dates=True, skip_blank_lines=True)
(df['ar_balance'].replace( '[\$,)]','', regex=True )
.replace( '[(]','-', regex=True ).astype(float))
df.fillna(value=0, method=None, axis=None, inplace=True, limit=None, downcast=None)
df.drop(['day_week', 'ar_balance', 'on_campus', 'online', 'day_num', 'total_cred', 'admissions_event', 'term'], axis = 1, inplace = True)
df.head(5)
Output:
date fte
0 11/7/2017 0.0
1 11/8/2017 0.0
2 11/9/2017 0.0
3 11/10/2017 0.0
4 11/11/2017 0.0
df['date'] = pd.DatetimeIndex(df['date'])
df.dtypes
Output:
date datetime64[ns]
fte float64
dtype: object
df = df.rename(columns={'date': 'ds',
'fte': 'y'})
ax = df.set_index('ds').plot(figsize=(12, 12))
ax.set_ylabel('FTE')
ax.set_xlabel('Date')
plt.show()
my_model = Prophet(interval_width=0.95)
my_model.fit(df)
future_dates = my_model.make_future_dataframe(periods=36)
forecast = my_model.predict(future_dates)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].head()
Output:
ds yhat yhat_lower yhat_upper
0 1970-01-01 48.455828 -1690.768761 1747.227251
1 1970-01-01 48.455828 -1768.346730 1739.514319
2 1970-01-01 48.455828 -1696.532596 1698.719255
3 1970-01-01 48.455828 -1770.763440 1722.128055
4 1970-01-01 48.455828 -1621.479143 1664.295881
my_model.plot(forecast,
uncertainty=True)
my_model.plot_components(forecast)
forecast.to_csv('PredictOutput.csv')
这是我的自大情节。我错过了一些明显的东西吗?感谢您的帮助!