Chciałem stworzyć Model, który przewidywałby przyszły popyt na każdy produkt w ciągu wielu tygodni na każdym kroku (przewidzieć tygodniowe zapotrzebowanie na każdy produkt w przyszłym roku)

Mam kilka małych rozmiarów (około 100-200 rekordów) csv.

Tutaj informacje o kolumnach CSV: - Pierwsza kolumna makeId przedstawia identyfikator produktu. Druga kolumna areaId przedstawia wewnętrzny identyfikator miejsca, w którym produkt jest sprzedawany. Data w trzeciej kolumnie przedstawia datę w formacie mm / dd / rrrr. Czwarta kolumna kwota przedstawia zapotrzebowanie na dany produkt na danym terenie w danym tygodniu.

Przykładowy plik 1-

enter image description here

Przykładowy plik 2-

enter image description here

Przykładowy plik 3-

enter image description here

Myślałem o przejściu na model Arima, ale jestem trochę zdezorientowany, jak przenieść dane do formatu tygodniowego i użyć ich do przewidywania dla każdego identyfikatora marki.

Każda sugestia byłaby pomocna, ponieważ jestem nowy w problemie z szeregami czasowymi

1
Shaitender Singh 16 grudzień 2019, 12:43
 – 
PV8
16 grudzień 2019, 14:38

2 odpowiedzi

Ten rodzaj problemu nosi nazwę „ Analiza i prognozowanie szeregów czasowych ”.

⬇️ To jest artykuł przydatny dla Ciebie

https://towardsdatascience.com/the-complete-guide-to-time-series-analysis-and-forecasting-70d476bfe775

Ponadto proponuję skorzystać z sieci neuronowej MLP po wykonaniu techniki „ Przesuwne okno ”.

⬇️ Okno przesuwne

https://machinelearningmastery.com/time-series-forecasting-supervised-learning/

⬇️ MLP

https://machinelearningmastery.com/how-to-develop-multilayer-perceptron-models-for-time-series-forecasting/

-1
Liuk 16 grudzień 2019, 14:39

UWAGA: Po szybkim przejrzeniu przykładów wygląda na to, że masz już tygodniowe dane. Poniższa odpowiedź pomoże, jeśli to nieprawda lub jeśli chcesz po prostu ustawić ramkę danych, aby móc korzystać z modeli ARIMA.

Szybka odpowiedź na Twoje pytanie brzmi: użyj pakietu pandas do wczytywania / manipulowania danymi do obiektu dataframe, a następnie użyj metody .resample() z częstotliwością tygodniową, np .: {{ X3}}.

Więcej szczegółów:

W przypadku analizy szeregów czasowych większość aplikacji skorzysta na ustawieniu indeksu danych na zmienną czasową. W Twoim przypadku możesz to zrobić wczytując dane za pomocą pandas:

import pandas as pd df = pd.read_csv('/path/to/your_data.csv', parse_dates=['date'], index_col='date')

Jeśli nie możesz jej wczytać i musisz zmienić ramkę danych na miejscu, możesz:

df = df.set_index('date')

Zakłada się, że kolumna date jest poprawnie ustawiona jako obiekt daty i godziny.

Następnym krokiem jest ponowne próbkowanie danych, aby uzyskać nową wartość, która rejestruje tygodniową aktywność w danych. Wymaga to wyboru metody łączenia danych w polu Amount, ponieważ chcesz pokazać wartość, która może łączyć wartości z wielu dni. Tutaj wybiorę mean(), tak aby nowa wartość była średnią danych z tych dni obecnych w tym tygodniu.

df['Amount_weekly'] = df['Amount'].resample('W', how='mean')

Ponieważ agregujesz dane, funkcja zwraca nową serię, więc tutaj umieszczam tę nową serię w nowej kolumnie w Twoim df, czyli df['Amount_weekly'].

W rezultacie uzyskasz ramkę danych zindeksowaną szeregami czasowymi z kolumną pokazującą dane próbkowane raz w tygodniu. Będzie to odpowiedni format do użycia w modelach ARIMA w pakiecie takim jak statsmodels.

2
Savage Henry 16 grudzień 2019, 22:22