#python #pandas #matplotlib #indexing #valueerror
#питон #панды #matplotlib #индексирование #ошибка значения
Вопрос:
У меня есть фрейм данных, который разделяется на обучающие и тестовые данные с использованием этого кода:
train = df.iloc[:1000]
test = df.iloc[1000:]
Теперь я хочу использовать ARIMA для прогнозирования будущего:
model = ARIMA(train['IdCount'],order=(1,1,0))
results = model.fit()
Чтобы получить прогнозируемые значения, я использовал этот код:
start=len(train)
end=len(train) len(test)-1
predictions = results.predict(start=start, end=end, dynamic=False, typ='levels').rename('ARIMA(1,1,0) Predictions')
К сожалению, я получил это предупреждение о ценности:
ValueWarning: No supported index is available. Prediction results will be given with an integer index beginning at `start`.
И предсказания больше не имеют индекса даты и времени, а целочисленные значения в качестве индекса.
Для построения прогнозов вместе с тестовыми данными я использовал этот код:
test['IdCount'].plot(legend=True,figsize=(12,8))
predictions.plot(legend=True)
И затем получите эту ошибку:
ValueError: view limit minimum -35838.3 is less than 1 and is an invalid Matplotlib date value. This often happens if you pass a non-datetime value to an axis that has datetime units
Как я мог бы сохранить индекс даты и времени для прогнозов вместо целочисленных значений? Или я должен создать этот индекс синтетически? Есть ли причина, по которой этот индекс не поддерживается?
Комментарии:
1. Вы обучаете модель с помощью данных
train
и получаете модельresults
. И затем, вы хотите спрогнозировать данные, начинающиеся с индекса, превышающегоlen(train)
. Это не может сработать. Данные модели являются толькоlen(train)
длинными. Или я ошибаюсь?2. Нет,
df
фрейм данных для всех данных имеетdf(len)
значение 1157. Итак, я не думаю, что это причина.3. Чтобы избавиться от предупреждения о значении, вам нужно указать свои даты как
df.index