NeuralProphet хочет, чтобы столбец y был предсказан в DataframePython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 NeuralProphet хочет, чтобы столбец y был предсказан в Dataframe

Сообщение Anonymous »

Я хочу создать модель нейронного пророка, которая будет обучаться динамически. У меня есть два набора данных. Первый набор данных содержит реализованные значения. Первый набор данных содержит реализованное почасовое целевое значение (y) и реализованные данные о погоде с 01.02.2021 по 31.07.2024. Во втором наборе данных у меня есть прогноз погоды с 01.06.2024 по 31.07.2024. Я планирую проводить это динамически с временным горизонтом 48 часов и 1 день после каждого прогноза. Но прежде чем я перейду к этому этапу, у меня возникла следующая проблема.

Код: Выделить всё

import pandas as pd
from neuralprophet import NeuralProphet

# Veri Yükleme
maindata_path = 'maindata_V05.xlsx'
testverisi_path = 'testverisi.xlsx'

maindata = pd.read_excel(maindata_path, sheet_name='Sheet1')
testverisi = pd.read_excel(testverisi_path, sheet_name='Sheet1')
maindata.drop("Unnamed: 0", axis=1, inplace=True)
testverisi.drop("Unnamed: 0", axis=1, inplace=True)

# Tarih kolonunu datetime formatına dönüştürme
maindata['Tarih'] = pd.to_datetime(maindata['Tarih'])
testverisi['Tarih'] = pd.to_datetime(testverisi['Tarih'])

# NeuralProphet Modeli Kurma
model = NeuralProphet()

# Mevsimsellik, trend ve tatil gibi ek özellikler eklemek
model = model.add_seasonality(name='custom_daily', period=24, fourier_order=5)
model = model.add_lagged_regressor(names=['Sıcaklık', 'bagilnem', 'ruzgarhiz', 'ruzgaryon', 'bulutluluk', 'radyasyon', 'yagis', "Saat", "Gün", "Ay", "Yıl", "Haftanın Kaçıncı Günü", "Yılın Kaçıncı Haftası", "Günlük Işıklandırma Süresi", "Tatil", "High_Temp_Streak", "High_nem_Streak"])

# 01-02-2021'den 31-05-2024'e kadar gerçek verilerle model öğretilecek
train_data = maindata[maindata['Tarih'] = date) & (testverisi['Tarih'] < date + pd.Timedelta(days=2))]
prediction_data = prediction_data.rename(columns={'Tarih': 'ds'})

# Tahmin sırasında y sütunu olmamalıdır
required_columns = ['ds', 'Sıcaklık', 'bagilnem', 'ruzgarhiz', 'ruzgaryon', 'bulutluluk', 'radyasyon', 'yagis', "Saat", "Gün", "Ay", "Yıl", "Haftanın Kaçıncı Günü", "Yılın Kaçıncı Haftası", "Günlük Işıklandırma Süresi", "Tatil", "High_Temp_Streak", "High_nem_Streak"]
prediction_data = prediction_data[required_columns]

future = model.predict(prediction_data)
print(future)
Ошибка:

Код: Выделить всё

----------------------------------------------------------------
KeyError                       Traceback (most recent call last)
File ~\AppData\Roaming\Python\Python312\site-packages\pandas\core\indexes\base.py:3790, in Index.get_loc(self, key)
3789 try:
-> 3790     return self._engine.get_loc(casted_key)
3791 except KeyError as err:

File index.pyx:152, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:181, in pandas._libs.index.IndexEngine.get_loc()

File pandas\_libs\hashtable_class_helper.pxi:7080, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\_libs\hashtable_class_helper.pxi:7088, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'y'

The above exception was the direct cause of the following exception:

KeyError                       Traceback (most recent call last)
Cell In[32], line 43
41 prediction_data = prediction_data[required_columns]
42 # prediction_data["y"] = 0
---> 43 future = model.predict(prediction_data)
44 print(future)

File C:\ProgramData\anaconda3\Lib\site-packages\neuralprophet\forecaster.py:1152, in NeuralProphet.predict(self, df, decompose, raw)
1150 df, received_ID_col, received_single_time_series, _ = df_utils.prep_or_copy_df(df)
1151 # to get all forecasteable values with df given, maybe extend into future:
-> 1152 df, periods_added = _maybe_extend_df(
1153     df=df,
1154     n_forecasts=self.n_forecasts,
1155     max_lags=self.max_lags,
1156     freq=self.data_freq,
1157     config_regressors=self.config_regressors,
1158     config_events=self.config_events,
1159 )
1160 df = _prepare_dataframe_to_predict(model=self, df=df, max_lags=self.max_lags, freq=self.data_freq)
1161 # normalize

File C:\ProgramData\anaconda3\Lib\site-packages\neuralprophet\data\split.py:53, in _maybe_extend_df(df, n_forecasts, max_lags, freq, config_regressors, config_events)
51 _ = df_utils.infer_frequency(df_i, n_lags=max_lags, freq=freq)
52 # to get all forecasteable values with df given, maybe extend into future:
--->  53 periods_add[df_name] = _get_maybe_extend_periods(
54     df=df_i, n_forecasts=n_forecasts, max_lags=max_lags, config_regressors=config_regressors
55 )
56 if periods_add[df_name] > 0:
57     # This does not include future regressors or events.
58     # periods should be 0 if those are configured.
59     last_date = pd.to_datetime(df_i["ds"].copy(deep=True)).sort_values().max()

File C:\ProgramData\anaconda3\Lib\site-packages\neuralprophet\data\split.py:116, in _get_maybe_extend_periods(df, n_forecasts, max_lags, config_regressors)
114 periods_add = 0
115 nan_at_end = 0
--> 116 while len(df) > nan_at_end and df["y"].isnull().iloc[-(1 + nan_at_end)]:
117     nan_at_end += 1
118 if max_lags > 0:

File ~\AppData\Roaming\Python\Python312\site-packages\pandas\core\frame.py:3893, in DataFrame._getitem_(self, key)
3891 if self.columns.nlevels > 1:
3892     return self._getitem_multilevel(key)
-> 3893 indexer = self.columns.get_loc(key)
3894 if is_integer(indexer):
3895     indexer = [indexer]

File ~\AppData\Roaming\Python\Python312\site-packages\pandas\core\indexes\base.py:3797, in Index.get_loc(self, key)
3792     if isinstance(casted_key, slice) or (
3793         isinstance(casted_key, abc.Iterable)
3794         and any(isinstance(x, slice) for x in casted_key)
3795     ):
3796         raise InvalidIndexError(key)
-> 3797     raise KeyError(key) from err
3798 except TypeError:
3799     # If we have a listlike key, _check_indexing_error will raise
3800     #  InvalidIndexError. Otherwise we fall through and re-raise
3801     #  the TypeError.
3802     self._check_indexing_error(key)

KeyError: 'y'
Neuralprophet хочет, чтобы целевая переменная (y) находилась в кадре данных, который он будет прогнозировать. Я много искал о том, какая у меня проблема, но не смог ее найти. Если бы я уже знал целевую переменную (y), не было бы смысла ее прогнозировать. Можете ли вы мне помочь с этим?

Подробнее здесь: https://stackoverflow.com/questions/791 ... -dataframe
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»