Superstore-myynnin ennustemallin kehittäminen, arvioiminen ja pisteytys
Tässä opetusohjelmassa esitellään päästä päähän -esimerkki Synapse Data Science -työnkulusta Microsoft Fabricissa. Skenaario luo ennustemallin, joka käyttää historiallisia myyntitietoja tuoteluokan myynnin ennustamiseen superkaupassa.
Ennustaminen on tärkeä resurssi myynnissä. Se yhdistää historialliset tiedot ja ennakoivat menetelmät ja tarjoaa merkityksellisiä tietoja tulevista trendeistä. Ennustaminen voi analysoida aiempia myynnit mallien tunnistamiseksi ja oppia kuluttajien toiminnasta varasto-, tuotanto- ja markkinointistrategioiden optimoimiseksi. Tämä ennakoiva lähestymistapa parantaa yritysten mukautuvuutta, reagointia ja dynaamisten Marketplacen yritysten yleistä suorituskykyä.
Tässä opetusohjelmassa käsitellään seuraavat vaiheet:
- Lataa tiedot
- Tietojen ymmärtäminen ja käsitteleminen valmistelevan tietoanalyysin avulla
- Harjoita koneoppimismalli avoimen lähdekoodin ohjelmistopaketilla ja seuraa MLflow-ja Fabric-automaattianalyysiominaisuuksien kokeiluja
- Tallenna lopullinen koneoppimismalli ja tee ennusteita
- Mallin suorituskyvyn näyttäminen Power BI -visualisointien avulla
Edellytykset
Hanki Microsoft Fabric -tilaus. Voit myös rekisteröityä microsoft fabric -kokeiluversion maksuttomaan .
Vaihda Fabriciin aloitussivun vasemmassa alakulmassa olevan käyttökokemuksen vaihtajan avulla.
- Luo tarvittaessa Microsoft Fabric Lakehouse kohdan Create a Lakehouse in Microsoft Fabrickuvatulla tavalla.
Seuraa mukana muistikirjassa
Voit valita jonkin seuraavista vaihtoehdoista, joita voit seurata muistikirjassa:
- Avaa ja suorita sisäinen muistikirja Synapse Data Science -kokemuksessa
- Lataa muistikirjasi GitHubista Synapse Data Science -kokemukseen
Avaa sisäinen muistikirja
Tämän opetusohjelman mukana on malli Myyntiennusteet -muistikirja.
Avaa tätä opetusohjelmaa varten näytemuistikirja noudattamalla ohjeita kohdassa Järjestelmän valmisteleminen datatieteen opetusohjelmia varten.
Varmista, että liittää lakehouse- ennen kuin aloitat koodin suorittamisen.
Tuo muistikirja GitHubista
Tämän opetusohjelman mukana on AIsample - Superstore Forecast.ipynb notebook.
Jos haluat avata tämän opetusohjelman liitteenä olevan muistikirjan, noudata ohjeita kohdassa Valmistele järjestelmäsi datatiedeopetusohjelmia varten muistikirjan tuomiseksi työtilaasi.
Jos haluat kopioida ja liittää koodin tältä sivulta, voit luoda uuden muistikirjan.
Muista liittää muistikirjaan lakehouse- ennen kuin aloitat koodin suorittamisen.
Vaihe 1: Lataa tiedot
Tietojoukko sisältää 9 995 eri tuotteiden myynnin esiintymää. Se sisältää myös 21 määritettä. Tämä taulukko on tässä muistikirjassa käytetystä Superstore.xlsx tiedostosta:
Rivin tunnus | Tilaustunnus | Tilauspäivämäärä | Lähetyspäivämäärä | Lähetystila | Asiakastunnus | Asiakkaan nimi | Segmentoida | Maa | Kaupunki | Valtio | Postinumero | Alue | Tuotetunnus | Luokka | Sub-Category | Tuotteen nimi | Myynti | Määrä | Alennus | Voitto |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4 | US-2015-108966 | 2015-10-11 | 2015-10-18 | Vakioluokka | SO-20335 | Sean O'Donnell | Kuluttaja | Yhdysvallat | Fort Lauderdale | Florida | 33311 | Etelä | FUR-TA-10000577 | Huonekalut | Taulukot | Bretford CR4500 Series Slim Suorakulmainen taulukko | 957.5775 | 5 | 0.45 | -383.0310 |
11 | CA-2014-115812 | 2014-06-09 | 2014-06-09 | Vakioluokka | Vakioluokka | Brosina Hoffman | Kuluttaja | Yhdysvallat | Los Angeles | Kalifornia | 90032 | Länsi | FUR-TA-10001539 | Huonekalut | Taulukot | Chromcraft-suorakulmaiset konferenssitaulukot | 1706.184 | 9 | 0.2 | 85.3092 |
31 | US-2015-150630 | 2015-09-17 | 2015-09-21 | Vakioluokka | TB-21520 | Tracy Blumstein | Kuluttaja | Yhdysvallat | Philadelphia | Pennsylvania | 19140 | Itä | OFF-EN-10001509 | Toimistotarvikkeet | Kirjekuoret | Poly String Tie Kirjekuori | 3.264 | 2 | 0.2 | 1.1016 |
Määritä nämä parametrit niin, että voit käyttää tätä muistikirjaa eri tietojoukkojen kanssa:
IS_CUSTOM_DATA = False # If TRUE, the dataset has to be uploaded manually
IS_SAMPLE = False # If TRUE, use only rows of data for training; otherwise, use all data
SAMPLE_ROWS = 5000 # If IS_SAMPLE is True, use only this number of rows for training
DATA_ROOT = "/lakehouse/default"
DATA_FOLDER = "Files/salesforecast" # Folder with data files
DATA_FILE = "Superstore.xlsx" # Data file name
EXPERIMENT_NAME = "aisample-superstore-forecast" # MLflow experiment name
Lataa tietojoukko ja lataa se Lakehouse-palveluun
Tämä koodi lataa tietojoukosta julkisesti saatavilla olevan version ja tallentaa sen Fabric Lakehouse -järjestelmään:
Tärkeä
Muista lisätä muistikirjaan lakehouse- ennen sen suorittamista. Muussa tapauksessa saat virheilmoituksen.
import os, requests
if not IS_CUSTOM_DATA:
# Download data files into the lakehouse if they're not already there
remote_url = "https://synapseaisolutionsa.blob.core.windows.net/public/Forecast_Superstore_Sales"
file_list = ["Superstore.xlsx"]
download_path = "/lakehouse/default/Files/salesforecast/raw"
if not os.path.exists("/lakehouse/default"):
raise FileNotFoundError(
"Default lakehouse not found, please add a lakehouse and restart the session."
)
os.makedirs(download_path, exist_ok=True)
for fname in file_list:
if not os.path.exists(f"{download_path}/{fname}"):
r = requests.get(f"{remote_url}/{fname}", timeout=30)
with open(f"{download_path}/{fname}", "wb") as f:
f.write(r.content)
print("Downloaded demo data files into lakehouse.")
MLflow-kokeilujen seurannan määrittäminen
Microsoft Fabric tallentaa automaattisesti koneoppimismallin syöteparametrien arvot ja tulostemittarit harjoittaessasi sitä. Tämä laajentaa MLflow-automaattisen lokeroinnin ominaisuuksia. Tiedot kirjataan sitten työtilaan, jossa voit käyttää ja visualisoida niitä MLflow-ohjelmointirajapinnoilla tai vastaavalla työtilan kokeilulla. Jos haluat lisätietoja automaattisesta lokista, katso automaattinen lokiloggaus Microsoft Fabric.
Jos haluat poistaa Microsoft Fabricin automaattisen lokerauksen käytöstä muistikirjaistunnossa, kutsu mlflow.autolog()
ja määritä disable=True
:
# Set up MLflow for experiment tracking
import mlflow
mlflow.set_experiment(EXPERIMENT_NAME)
mlflow.autolog(disable=True) # Turn off MLflow autologging
Raakadata Lakehousesta
Lue raakadataa Lakehousen Files -osiosta. Lisää sarakkeita eri päivämääräosille. Samoja tietoja käytetään ositetun delta-taulukon luomiseen. Raakatiedot on tallennettu Excel-tiedostoon, joten niiden lukeminen edellyttää pandojen käyttöä:
import pandas as pd
df = pd.read_excel("/lakehouse/default/Files/salesforecast/raw/Superstore.xlsx")
Vaihe 2: Tee valmisteleva tietoanalyysi
Tuontikirjastot
Tuo tarvittavat kirjastot ennen analyysiä:
# Importing required libraries
import warnings
import itertools
import numpy as np
import matplotlib.pyplot as plt
warnings.filterwarnings("ignore")
plt.style.use('fivethirtyeight')
import pandas as pd
import statsmodels.api as sm
import matplotlib
matplotlib.rcParams['axes.labelsize'] = 14
matplotlib.rcParams['xtick.labelsize'] = 12
matplotlib.rcParams['ytick.labelsize'] = 12
matplotlib.rcParams['text.color'] = 'k'
from sklearn.metrics import mean_squared_error,mean_absolute_percentage_error
Raakatietojen näyttäminen
Tarkista tietojen alijoukko manuaalisesti, jotta ymmärrät paremmin tietojoukon itse, ja tulosta DataFrame display
funktiolla. Lisäksi Chart
näkymien avulla voidaan helposti visualisoida tietojoukon alijoukkoja.
display(df)
Tämä muistikirja keskittyy ensisijaisesti luokkamyynnin Furniture
ennustamiseen. Tämä nopeuttaa laskentaa ja auttaa näyttämään mallin suorituskyvyn. Tämä muistikirja käyttää kuitenkin mukautuvia tekniikoita. Voit laajentaa näitä tekniikoita ennustaaksesi muiden tuoteluokkien myynnin.
# Select "Furniture" as the product category
furniture = df.loc[df['Category'] == 'Furniture']
print(furniture['Order Date'].min(), furniture['Order Date'].max())
Tietojen esikäsittely
Reaalimaailman liiketoimintaskenaarioiden on usein ennustettava myyntiä kolmessa erillisessä luokassa:
- Tietty tuoteluokka
- Tietty asiakasluokka
- Tuoteluokan ja asiakasluokan tietty yhdistelmä
Hylkää ensin tarpeettomat sarakkeet tietojen esikäsittelyä varten. Jotkin sarakkeista (Row ID
, Order ID
,Customer ID
ja Customer Name
) ovat tarpeettomia, koska niillä ei ole vaikutusta. Haluamme ennustaa kokonaismyynnin osavaltiosta ja alueesta tietylle tuoteluokalle (Furniture
), jotta voimme jättää pois State
-, Region
-, Country
-, City
- ja Postal Code
-sarakkeet. Jos haluat ennustaa tietyn sijainnin tai luokan myynnin, sinun on ehkä muutettava esikäsittelyvaihetta vastaavasti.
# Data preprocessing
cols = ['Row ID', 'Order ID', 'Ship Date', 'Ship Mode', 'Customer ID', 'Customer Name',
'Segment', 'Country', 'City', 'State', 'Postal Code', 'Region', 'Product ID', 'Category',
'Sub-Category', 'Product Name', 'Quantity', 'Discount', 'Profit']
# Drop unnecessary columns
furniture.drop(cols, axis=1, inplace=True)
furniture = furniture.sort_values('Order Date')
furniture.isnull().sum()
Tietojoukko jäsennetty päivittäin. Meidän on määritettävä sarakkeen Order Date
, koska haluamme kehittää mallin, joka ennustaa myynnin kuukausittain.
Ryhmittele ensin Furniture
-luokka Order Date
mukaan. Laske sitten kunkin ryhmän Sales
-sarakkeen summa määrittääksesi jokaisen yksilöllisen Order Date
-arvon kokonaismyynnin. Voit koostaa tiedot kuukauden mukaan nimeämällä Sales
sarakkeen uudelleen MS
tiheydellä. Laske lopuksi kunkin kuukauden keskimääräinen myyntiarvo.
# Data preparation
furniture = furniture.groupby('Order Date')['Sales'].sum().reset_index()
furniture = furniture.set_index('Order Date')
furniture.index
y = furniture['Sales'].resample('MS').mean()
y = y.reset_index()
y['Order Date'] = pd.to_datetime(y['Order Date'])
y['Order Date'] = [i+pd.DateOffset(months=67) for i in y['Order Date']]
y = y.set_index(['Order Date'])
maximim_date = y.reset_index()['Order Date'].max()
Osoita Order Date
vaikutus Sales
Furniture
luokalle:
# Impact of order date on the sales
y.plot(figsize=(12, 3))
plt.show()
Ennen tilastoanalyysia sinun on tuotava statsmodels
Python-moduuli. Se tarjoaa luokkia ja funktioita monien tilastollisten mallien arviointia varten. Se tarjoaa myös luokkia ja funktioita tilastollisten testien ja tilastollisten tietojen tutkimisen suorittamiseen.
import statsmodels.api as sm
Tilastollisen analyysin suorittaminen
Aikasarja seuraa näitä tietoelementtejä määritetyin väliajoin määrittääkseen näiden elementtien vaihtelun aikasarjamallissa:
tason: Perusosa, joka edustaa tietyn ajanjakson keskiarvoa
Trendi-: Kuvailee, pieneneekö, pysyykö aikasarja vakiona vai kasvaako se ajan mittaan
Kausivaihtelun: Kuvailee aikasarjan kausittaisen signaalin ja etsii sykliset esiintymät, jotka vaikuttavat aikasarjamallien lisääntymiseen tai vähenemiseen
Kohina/Jäännös-: Viittaa aikasarjatietojen satunnaisiin vaihteluihin ja vaihteluihin, joita malli ei pysty selittämään.
Tässä koodissa tarkkailet näitä tietojoukkosi elementtejä esikäsittelyn jälkeen:
# Decompose the time series into its components by using statsmodels
result = sm.tsa.seasonal_decompose(y, model='additive')
# Labels and corresponding data for plotting
components = [('Seasonality', result.seasonal),
('Trend', result.trend),
('Residual', result.resid),
('Observed Data', y)]
# Create subplots in a grid
fig, axes = plt.subplots(nrows=4, ncols=1, figsize=(12, 7))
plt.subplots_adjust(hspace=0.8) # Adjust vertical space
axes = axes.ravel()
# Plot the components
for ax, (label, data) in zip(axes, components):
ax.plot(data, label=label, color='blue' if label != 'Observed Data' else 'purple')
ax.set_xlabel('Time')
ax.set_ylabel(label)
ax.set_xlabel('Time', fontsize=10)
ax.set_ylabel(label, fontsize=10)
ax.legend(fontsize=10)
plt.show()
Kaaviot kuvaavat ennustetiedoissa kausivaihtelua, trendejä ja melua. Voit tallentaa pohjana olevat mallit ja kehittää malleja, jotka tekevät tarkkoja ennusteita, jotka kestävät satunnaisia vaihteluja.
Vaihe 3: Mallin harjoittaminen ja seuraaminen
Nyt kun tiedot ovat käytettävissä, määritä ennustemalli. Käytä tässä muistikirjassa ennustemallia nimeltä kausittainen autoregressiivinen integroitu liukuva keskiarvo, jossa on eksogeenisia tekijöitä (SARIMAX). SARIMAX yhdistää autoregressiiviset (AR) ja liukuvan keskiarvon (MA) osat, kausivaihtelun ja ulkoiset ennusteet aikasarjatietojen tarkkojen ja joustavien ennusteiden tekemiseksi.
Voit myös käyttää MLflow- ja Fabric-automaattianalyysipalveluita kokeilujen seuraamiseen. Lastatkaa deltataulukko lakehousesta. Voit käyttää muita delta-taulukoita, jotka pitävät Lakehousea lähteenä.
# Import required libraries for model evaluation
from sklearn.metrics import mean_squared_error, mean_absolute_percentage_error
Hyperparametrien hienosäätäminen
SARIMAX ottaa huomioon tavalliseen autoregressiiviseen integroituun liukuvaan keskiarvoon (ARIMA) liittyvän parametrin (p
, d
, q
), ja lisää kausivaihteluparametrit (P
, D
, Q
, s
). Näitä SARIMAX-malliargumentteja kutsutaan order - (p
, d
, q
) ja kausijärjestystä (P
, D
, Q
, s
). Tämän vuoksi meidän on ensin hienosäädettävä seitsemää parametria, jotta voimme harjoittaa mallin.
Tilausparametrit:
p
: AR-osan järjestys, joka edustaa aiempien havaintojen määrää aikasarjassa, jota käytetään nykyisen arvon ennustamiseen.Yleensä tämän parametrin tulee olla ei-negatiivinen kokonaisluku. Yleiset arvot ovat
0
3
alueella, vaikka korkeammat arvot ovat mahdollisia, riippuen tietojen ominaisuuksista. Suurempip
arvo tarkoittaa pidempää muistia mallin aiemmista arvoista.d
: Erojen järjestys, joka edustaa aikasarjan erojen määrää, jotta saadaan aikaan asema.Tämän parametrin on oltava ei-negatiivinen kokonaisluku. Yleiset arvot ovat
0
–2
.d
0
arvo tarkoittaa, että aikasarja on jo paikallaan. Korkeammat arvot ilmaisevat sen kiinteäksi tekemiseen tarvittavien erilaisten toimintojen määrän.q
: MA-osan järjestys, joka edustaa nykyisen arvon ennustamiseen käytettyjen aiempien white-noise-virhesanomien määrää.Tämän parametrin on oltava ei-negatiivinen kokonaisluku. Yleiset arvot ovat
0
3
alueella, mutta suuremmat arvot saattavat olla tarpeen tietyissä aikasarjoissa. Suurempiq
arvo ilmaisee, että ennusteiden tekeminen on riippuvaisempi aiemmista virheehdoista.
Kausitilauksen parametrit:
-
P
: Ar-osan kausijärjestys, joka muistuttaap
mutta kausivaihteluosaa -
D
: Erojen kausivaihtelujärjestys, vastaad
mutta kausivaihteluosaa -
Q
: Ma-osan kausijärjestys, joka vastaaq
mutta kausivaihteluosaa -
s
: Aikavaiheiden määrä kausijaksoa kohti (esimerkiksi 12 kuukausittaisille tiedoille, jotka sisältävät vuosittaista kausivaihtelua)
# Hyperparameter tuning
p = d = q = range(0, 2)
pdq = list(itertools.product(p, d, q))
seasonal_pdq = [(x[0], x[1], x[2], 12) for x in list(itertools.product(p, d, q))]
print('Examples of parameter combinations for Seasonal ARIMA...')
print('SARIMAX: {} x {}'.format(pdq[1], seasonal_pdq[1]))
print('SARIMAX: {} x {}'.format(pdq[1], seasonal_pdq[2]))
print('SARIMAX: {} x {}'.format(pdq[2], seasonal_pdq[3]))
print('SARIMAX: {} x {}'.format(pdq[2], seasonal_pdq[4]))
SARIMAX sisältää muita parametreja:
enforce_stationarity
: Tuleeko mallin pakottaa aikasarjatietojen paikallaan ennen SARIMAX-mallin asentamista vai ei.Jos
enforce_stationarity
on määritettyTrue
(oletus), se ilmaisee, että SARIMAX-mallin on valvottava aikasarjatietojen stationarity-määritystä. SARIMAX-malli soveltaa sitten automaattisesti eriäviä tietoja, jotta ne pysyvät paikallaand
jaD
tilausten mukaisesti ennen mallin asentamista. Tämä on yleinen käytäntö, koska monet aikasarjamallit, mukaan lukien SARIMAX, olettavat tietojen olevan paikallaan.Jos kyseessä on ei-stationaarinen aikasarja (esimerkiksi siinä on trendejä tai kausivaihteluja), on hyvä käytäntö määrittää
enforce_stationarity
arvoksiTrue
, ja antaa SARIMAX-mallin käsitellä eroavuuden paikallaanoton saavuttamiseksi. Jos kyseessä on kiinteä aikasarja (esimerkiksi ilman trendejä tai kausivaihtelua), määritäenforce_stationarity
arvoksiFalse
, jotta vältät tarpeettomat erot.enforce_invertibility
: Määrittää, pitääkö mallin pakottaa arvioitujen parametrien kääntämättömyys optimointiprosessin aikana.Jos
enforce_invertibility
on määritettyTrue
(oletus), se ilmaisee, että SARIMAX-mallin tulisi pakottaa kääntämättömyys arvioituihin parametreihin. Kääntämättömyys varmistaa, että malli on määritelty hyvin ja että arvioitu AR- ja MA-kerroin osuu maahan aseman alueen sisäpuolella.Kääntömyyden pakottaminen auttaa varmistamaan, että SARIMAX-malli noudattaa vakaan aikasarjamallin teoreettisia vaatimuksia. Se auttaa myös estämään mallin arvioon ja vakauteen liittyviä ongelmia.
Oletusarvona on AR(1)
malli. Tämä viittaa kohteeseen (1, 0, 0)
. On kuitenkin yleinen käytäntö kokeilla eri yhdistelmiä tilausparametreista ja kausijärjestysparametreista ja arvioida tietojoukon mallin suorituskyky. Soveltuvat arvot voivat vaihdella aikasarjasta toiseen.
Optimaalisen arvon määrittäminen edellyttää usein aikasarjatietojen autocorrelation-funktion (ACF) ja osittaisen autosarelaatiofunktion (PACF) analyysia. Siihen liittyy usein myös mallin valintakriteerien käyttö, kuten Akaike-tietokriteeri (AIC) tai bayesiläisen tiedon kriteeri (BIC).
Hyperparametrien hienosäätäminen:
# Tune the hyperparameters to determine the best model
for param in pdq:
for param_seasonal in seasonal_pdq:
try:
mod = sm.tsa.statespace.SARIMAX(y,
order=param,
seasonal_order=param_seasonal,
enforce_stationarity=False,
enforce_invertibility=False)
results = mod.fit(disp=False)
print('ARIMA{}x{}12 - AIC:{}'.format(param, param_seasonal, results.aic))
except:
continue
Edellä mainittujen tulosten arvioinnin jälkeen voit määrittää sekä tilausparametrien että kausijärjestysparametrien arvot. Valintana ovat order=(0, 1, 1)
ja seasonal_order=(0, 1, 1, 12)
, jotka tarjoavat pienimmän AIC:n (esimerkiksi 279,58). Näiden arvojen avulla voit harjoittaa mallin.
Harjoita mallia
# Model training
mod = sm.tsa.statespace.SARIMAX(y,
order=(0, 1, 1),
seasonal_order=(0, 1, 1, 12),
enforce_stationarity=False,
enforce_invertibility=False)
results = mod.fit(disp=False)
print(results.summary().tables[1])
Tämä koodi visualisoi aikasarjaennusteen huonekalujen myyntitieduksille. Piirtotuloksissa näkyvät sekä havaitut tiedot että yksi askel eteenpäin -ennuste, ja niissä on varjostettu alue luottamusvälille.
# Plot the forecasting results
pred = results.get_prediction(start=maximim_date, end=maximim_date+pd.DateOffset(months=6), dynamic=False) # Forecast for the next 6 months (months=6)
pred_ci = pred.conf_int() # Extract the confidence intervals for the predictions
ax = y['2019':].plot(label='observed')
pred.predicted_mean.plot(ax=ax, label='One-step ahead forecast', alpha=.7, figsize=(12, 7))
ax.fill_between(pred_ci.index,
pred_ci.iloc[:, 0],
pred_ci.iloc[:, 1], color='k', alpha=.2)
ax.set_xlabel('Date')
ax.set_ylabel('Furniture Sales')
plt.legend()
plt.show()
# Validate the forecasted result
predictions = results.get_prediction(start=maximim_date-pd.DateOffset(months=6-1), dynamic=False)
# Forecast on the unseen future data
predictions_future = results.get_prediction(start=maximim_date+ pd.DateOffset(months=1),end=maximim_date+ pd.DateOffset(months=6),dynamic=False)
predictions
avulla voit arvioida mallin suorituskykyä vertaamalla sitä todellisiin arvoihin.
predictions_future
arvo ilmaisee tulevia ennusteita.
# Log the model and parameters
model_name = f"{EXPERIMENT_NAME}-Sarimax"
with mlflow.start_run(run_name="Sarimax") as run:
mlflow.statsmodels.log_model(results,model_name,registered_model_name=model_name)
mlflow.log_params({"order":(0,1,1),"seasonal_order":(0, 1, 1, 12),'enforce_stationarity':False,'enforce_invertibility':False})
model_uri = f"runs:/{run.info.run_id}/{model_name}"
print("Model saved in run %s" % run.info.run_id)
print(f"Model URI: {model_uri}")
mlflow.end_run()
# Load the saved model
loaded_model = mlflow.statsmodels.load_model(model_uri)
Vaihe 4: Mallin pisteytys ja ennusteiden tallentaminen
Voit luoda Power BI -raportin integroimalla todelliset arvot ennustettuihin arvoihin. Tallenna nämä tulokset järvenmökissä olevalle taulukolle.
# Data preparation for Power BI visualization
Future = pd.DataFrame(predictions_future.predicted_mean).reset_index()
Future.columns = ['Date','Forecasted_Sales']
Future['Actual_Sales'] = np.NAN
Actual = pd.DataFrame(predictions.predicted_mean).reset_index()
Actual.columns = ['Date','Forecasted_Sales']
y_truth = y['2023-02-01':]
Actual['Actual_Sales'] = y_truth.values
final_data = pd.concat([Actual,Future])
# Calculate the mean absolute percentage error (MAPE) between 'Actual_Sales' and 'Forecasted_Sales'
final_data['MAPE'] = mean_absolute_percentage_error(Actual['Actual_Sales'], Actual['Forecasted_Sales']) * 100
final_data['Category'] = "Furniture"
final_data[final_data['Actual_Sales'].isnull()]
input_df = y.reset_index()
input_df.rename(columns = {'Order Date':'Date','Sales':'Actual_Sales'}, inplace=True)
input_df['Category'] = 'Furniture'
input_df['MAPE'] = np.NAN
input_df['Forecasted_Sales'] = np.NAN
# Write back the results into the lakehouse
final_data_2 = pd.concat([input_df,final_data[final_data['Actual_Sales'].isnull()]])
table_name = "Demand_Forecast_New_1"
spark.createDataFrame(final_data_2).write.mode("overwrite").format("delta").save(f"Tables/{table_name}")
print(f"Spark DataFrame saved to delta table: {table_name}")
Vaihe 5: Visualisointi Power BI:ssä
Power BI -raportti näyttää absoluuttisen prosenttivirheen (MAPE) keskiarvona 16,58. MAPE-arvo määrittää ennustemenetelmän tarkkuuden. Se edustaa ennustettujen määrien tarkkuutta verrattuna todellisiin määriin.
MAPE on yksinkertainen mittausarvo. MAPE-0% tarkoittaa, että ennustettujen arvojen ja todellisten arvojen välinen keskihajonta on 10%, riippumatta siitä, oliko poikkeama positiivinen vai negatiivinen. Haluttavien MAPE-arvojen standardit vaihtelevat eri toimialoilla.
Vaaleansininen viiva tässä kaaviossa edustaa todellisia myyntiarvoja. Tummansininen viiva edustaa ennustettuja myyntiarvoja. Todellisten ja ennustettujen myyntien vertailu osoittaa, että malli ennustaa tehokkaasti Furniture
luokan myynnin vuoden 2023 kuuden ensimmäisen kuukauden aikana.
Tämän havainnon perusteella voimme luottaa mallin ennusteominaisuuksiin, kokonaismyyntiin vuoden 2023 viimeisten kuuden kuukauden aikana ja ulottuen vuoteen 2024. Tämä luottamus voi antaa tietoja strategisista päätöksistä varastonhallinnasta, raaka-aineiden hankinnasta ja muista liiketoimintaan liittyvistä seikoista.
Aiheeseen liittyvä sisältö
- Microsoft Fabric -muistikirjojen käyttäminen
- microsoft Fabric:n
-koneoppimismalli - Koneoppimismallien harjoittaminen
- Koneoppimisen kokeiluja Microsoft Fabric