时间序列预测:客户类别访问日期图表不准确问题求助
时间序列预测图表不符合预期的问题排查与解决
我正尝试基于客户类别与时间戳进行时间序列预测,但生成的图表不符合预期,与参考博客的图表差异明显。调整代码后还出现了空图表的问题,寻求问题原因及解决方案。
完整代码
from google.colab import drive drive.mount('/content/gdrive', force_remount = True) import pandas as pd from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestRegressor from sklearn.metrics import mean_squared_error import matplotlib.pyplot as plt data = pd.read_csv('gdrive/My Drive/Colab_Notebooks/classproject/classdata.csv', parse_dates=['time_date'], index_col='time_date') class_id = data['class_id'] time_date = data.index.date data['date'] = data.index.date class_id = data['class_id'] time_date = data.index.to_series() m1 = class_id.ne(class_id.shift()) m2 = time_date.dt.date.ne(time_date.dt.date.shift()) data['count'] = data.groupby((m1 | m2).cumsum()).cumcount().add(1).values out = data[data.groupby(data.index.date).transform('size').gt(1)] !pip install pandas-datareader import pandas_datareader.data as web import datetime import pandas as pd pd.set_option('display.max_columns', None) pd.set_option('display.max_rows', None) import matplotlib.pyplot as plt import seaborn as sns sns.set() plt.ylabel('Amount of classes') plt.xlabel('Date') plt.xticks(rotation=45) out.index = pd.to_datetime(out['date'], format='%Y-%m-%d') plt.plot(out.index, out['count'], )
图表对比
- 当前生成图表:

- 参考目标图表:

输入数据
| timestamp | class_id |
|---|---|
| 2021-09-27 06:00:00 | A |
| 2021-09-27 03:00:00 | A |
| 2021-09-27 01:00:00 | A |
| 2021-09-27 08:29:00 | C |
| 2021-05-23 08:08:49 | B |
| 2021-05-23 03:21:49 | B |
| 2021-05-23 01:22:11 | C |
处理后的数据
| count | timestamp | class_id | date |
|---|---|---|---|
| 1 | 2021-09-27 06:00:00 | A | 2021-09-27 |
| 2 | 2021-09-27 03:00:00 | A | 2021-09-27 |
| 3 | 2021-09-27 01:00:00 | A | 2021-09-27 |
| 1 | 2021-09-27 08:29:00 | C | 2021-09-27 |
| 1 | 2021-05-23 08:08:49 | B | 2021-05-23 |
| 2 | 2021-05-23 03:21:49 | B | 2021-05-23 |
| 1 | 2021-05-23 01:22:11 | C | 2021-05-23 |
调整后的代码及问题
尝试以下调整后,生成的第一个图表为空:
plt.ylabel('Amount of classes') plt.xlabel('date') plt.xticks(rotation=45) out.index = pd.to_datetime(out['date'], format='%Y-%m-%d') out.groupby('class_id').plot() plt.plot(out.index, out['count'], )
调整后生成的空图表:
内容的提问来源于stack exchange,提问作者Sonny
相关产品推荐
相关产品推荐

