series_fbprophet_forecast_fl()
La funzione series_fbprophet_forecast_fl()
è una funzione definita dall'utente che accetta un'espressione contenente una serie temporale come input e stima i valori degli ultimi punti finali usando l'algoritmo Prophet. La funzione restituisce sia i punti previsti che gli intervalli di confidenza. Questa funzione è un wrapper di Linguaggio di query Kusto (KQL) alla classe Prophet() ed espone solo i parametri obbligatori per la stima. È possibile modificare la copia per supportare più parametri. come le festività, i punti di cambio, l'ordine di Fourier e così via.
Nota
È consigliabile usare la funzione nativa series_decompose_forecast(). La funzione nativa è basata su un modello più semplice, ma è più scalabile ed è più veloce.
Prerequisiti
- Il plug-in Python deve essere abilitato nel cluster. Questa operazione è necessaria per Python inline usato nella funzione .
- Il plug-in Python deve essere abilitato nel database. Questa operazione è necessaria per Python inline usato nella funzione .
- Installare il
fbprophet
pacchetto perché non è incluso nell'immagine Python. Per installare il pacchetto, eseguire le operazioni seguenti:- Seguire le linee guida per l'installazione di pacchetti per il plug-in Python.
- Per risparmiare tempo nelle linee guida precedenti, è possibile scaricare il
prophet
file ZIP contenente i file wheel diprophet
e le relative dipendenze da https://artifactswestus.blob.core.windows.net/public/prophet-1.1.5.zip. Salvare questo file nel contenitore BLOB consentito.
- Per risparmiare tempo nelle linee guida precedenti, è possibile scaricare il
- Creare un token di firma di accesso condiviso con accesso in lettura al file ZIP. Per creare un token di firma di accesso condiviso, vedere Ottenere la firma di accesso condiviso per un contenitore BLOB.
- Nell'esempio sostituire il riferimento URL nel parametro con il
external_artifacts
percorso del file e il relativo token di firma di accesso condiviso.
- Seguire le linee guida per l'installazione di pacchetti per il plug-in Python.
Sintassi
T | invoke series_fbprophet_forecast_fl(
,
ts_series,
y_series,
y_pred_series [ points ],
[ y_pred_low_series ],
[ y_pred_high_series ])
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Tipo | Obbligatoria | Descrizione |
---|---|---|---|
ts_series | string |
✔️ | Nome della colonna della tabella di input contenente i timestamp della serie da stimare. |
y_series | string |
✔️ | Nome della colonna della tabella di input contenente i valori della serie da stimare. |
y_pred_series | string |
✔️ | Nome della colonna in cui archiviare la serie stimata. |
punti | int |
✔️ | Numero di punti alla fine della serie da stimare (previsione). Questi punti vengono esclusi dal processo di apprendimento (regressione). Il valore predefinito è 0. |
y_pred_low_series | string |
Nome della colonna in cui archiviare la serie dei valori più bassi dell'intervallo di confidenza. Omettere se l'intervallo di confidenza non è necessario. | |
y_pred_high_series | string |
Nome della colonna in cui archiviare la serie dei valori più alti dell'intervallo di confidenza. Omettere se l'intervallo di confidenza non è necessario. |
Definizione di funzione
È possibile definire la funzione incorporando il codice come funzione definita da query o creandola come funzione archiviata nel database, come indicato di seguito:
Definire la funzione usando l'istruzione let seguente. Non sono necessarie autorizzazioni.
Importante
Un'istruzione let non può essere eseguita autonomamente. Deve essere seguita da un'istruzione di espressione tabulare. Per eseguire un esempio funzionante di series_fbprophet_forecast_fl()
, vedere Esempio.
let series_fbprophet_forecast_fl=(tbl:(*), ts_series:string, y_series:string, y_pred_series:string, points:int=0, y_pred_low_series:string='', y_pred_high_series:string='')
{
let kwargs = bag_pack('ts_series', ts_series, 'y_series', y_series, 'y_pred_series', y_pred_series, 'points', points, 'y_pred_low_series', y_pred_low_series, 'y_pred_high_series', y_pred_high_series);
let code = ```if 1:
from sandbox_utils import Zipackage
Zipackage.install("prophet.zip")
ts_series = kargs["ts_series"]
y_series = kargs["y_series"]
y_pred_series = kargs["y_pred_series"]
points = kargs["points"]
y_pred_low_series = kargs["y_pred_low_series"]
y_pred_high_series = kargs["y_pred_high_series"]
result = df
sr = pd.Series(df[y_pred_series])
if y_pred_low_series != '':
srl = pd.Series(df[y_pred_low_series])
if y_pred_high_series != '':
srh = pd.Series(df[y_pred_high_series])
from prophet import Prophet
df1 = pd.DataFrame(columns=["ds", "y"])
for i in range(df.shape[0]):
df1["ds"] = pd.to_datetime(df[ts_series][i])
df1["ds"] = df1["ds"].dt.tz_convert(None)
df1["y"] = df[y_series][i]
df2 = df1[:-points]
m = Prophet()
m.fit(df2)
future = df1[["ds"]]
forecast = m.predict(future)
sr[i] = list(forecast["yhat"])
if y_pred_low_series != '':
srl[i] = list(forecast["yhat_lower"])
if y_pred_high_series != '':
srh[i] = list(forecast["yhat_upper"])
result[y_pred_series] = sr
if y_pred_low_series != '':
result[y_pred_low_series] = srl
if y_pred_high_series != '':
result[y_pred_high_series] = srh
```;
tbl
| evaluate python(typeof(*), code, kwargs
, external_artifacts=bag_pack('prophet.zip', 'https://artifactswestus.blob.core.windows.net/public/prophet-1.1.5.zip?*** YOUR SAS TOKEN ***'))
};
// Write your query to use the function here.
Esempio
Nell'esempio seguente viene utilizzato l'operatore invoke per eseguire la funzione .
Per usare una funzione definita da query, richiamarla dopo la definizione della funzione incorporata.
let series_fbprophet_forecast_fl=(tbl:(*), ts_series:string, y_series:string, y_pred_series:string, points:int=0, y_pred_low_series:string='', y_pred_high_series:string='')
{
let kwargs = bag_pack('ts_series', ts_series, 'y_series', y_series, 'y_pred_series', y_pred_series, 'points', points, 'y_pred_low_series', y_pred_low_series, 'y_pred_high_series', y_pred_high_series);
let code = ```if 1:
from sandbox_utils import Zipackage
Zipackage.install("prophet.zip")
ts_series = kargs["ts_series"]
y_series = kargs["y_series"]
y_pred_series = kargs["y_pred_series"]
points = kargs["points"]
y_pred_low_series = kargs["y_pred_low_series"]
y_pred_high_series = kargs["y_pred_high_series"]
result = df
sr = pd.Series(df[y_pred_series])
if y_pred_low_series != '':
srl = pd.Series(df[y_pred_low_series])
if y_pred_high_series != '':
srh = pd.Series(df[y_pred_high_series])
from prophet import Prophet
df1 = pd.DataFrame(columns=["ds", "y"])
for i in range(df.shape[0]):
df1["ds"] = pd.to_datetime(df[ts_series][i])
df1["ds"] = df1["ds"].dt.tz_convert(None)
df1["y"] = df[y_series][i]
df2 = df1[:-points]
m = Prophet()
m.fit(df2)
future = df1[["ds"]]
forecast = m.predict(future)
sr[i] = list(forecast["yhat"])
if y_pred_low_series != '':
srl[i] = list(forecast["yhat_lower"])
if y_pred_high_series != '':
srh[i] = list(forecast["yhat_upper"])
result[y_pred_series] = sr
if y_pred_low_series != '':
result[y_pred_low_series] = srl
if y_pred_high_series != '':
result[y_pred_high_series] = srh
```;
tbl
| evaluate python(typeof(*), code, kwargs
, external_artifacts=bag_pack('prophet.zip', 'https://artifactswestus.blob.core.windows.net/public/prophet-1.1.5.zip?*** YOUR SAS TOKEN ***'))
};
//
// Forecasting 3 time series using fbprophet, compare to forecasting using the native function series_decompose_forecast()
//
let min_t = datetime(2017-01-05);
let max_t = datetime(2017-02-03 22:00);
let dt = 2h;
let horizon=7d;
demo_make_series2
| make-series num=avg(num) on TimeStamp from min_t to max_t+horizon step dt by sid
| extend pred_num_native = series_decompose_forecast(num, toint(horizon/dt))
| extend pred_num=dynamic(null), pred_num_lower=dynamic(null), pred_num_upper=dynamic(null)
| invoke series_fbprophet_forecast_fl('TimeStamp', 'num', 'pred_num', toint(horizon/dt), 'pred_num_lower', 'pred_num_upper')
| render timechart
Output
Questa funzionalità non è supportata.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per