series_fbprophet_forecast_fl()
Funkce series_fbprophet_forecast_fl()
je uživatelem definovaná funkce (UDF), která jako vstup přebírá výraz obsahující časovou řadu a predikuje hodnoty posledních koncových bodů pomocí algoritmu Proroka. Funkce vrátí prognózované body i intervaly spolehlivosti. Tato funkce je obálka dotazovací jazyk Kusto (KQL) třídě Prorok() a zveřejňuje pouze parametry, které jsou povinné pro predikci. Nebojte se upravit kopii tak, aby podporovala více parametrů. jako jsou svátky, změna bodů, Fourierova pořadí atd.
Poznámka:
Zvažte použití nativní funkce series_decompose_forecast(). Nativní funkce je založená na jednodušším modelu, ale je škálovatelnější a běží rychleji.
Požadavky
- Modul plug-in Pythonu musí být v clusteru povolený. To se vyžaduje pro vložený Python použitý ve funkci.
- Modul plug-in Pythonu musí být v databázi povolený. To se vyžaduje pro vložený Python použitý ve funkci.
fbprophet
Nainstalujte balíček, protože není součástí image Pythonu. Pokud chcete balíček nainstalovat, postupujte takto:- Postupujte podle pokynů pro instalaci balíčků pro modul plug-in Python.
- Chcete-li ušetřit čas v předchozích pokynech, můžete stáhnout
prophet
soubor ZIP, který obsahuje souboryprophet
kola a jeho závislosti, z https://artifactswestusnew.blob.core.windows.net/public/prophet-1.1.5.zip. Uložte tento soubor do kontejneru objektů blob v seznamu povolených.
- Chcete-li ušetřit čas v předchozích pokynech, můžete stáhnout
- Vytvořte token SAS s přístupem ke čtení souboru ZIP. Pokud chcete vytvořit token SAS, podívejte se na získání SAS pro kontejner objektů blob.
- V příkladu nahraďte odkaz na adresu URL v parametru
external_artifacts
cestou k souboru a jeho tokenem SAS.
- Postupujte podle pokynů pro instalaci balíčků pro modul plug-in Python.
Syntaxe
T | invoke series_fbprophet_forecast_fl(
ts_series y_series y_pred_series,
,
[ body ],
[ y_pred_low_series ],
[ y_pred_high_series ],
)
Přečtěte si další informace o konvencích syntaxe.
Parametry
Název | Type | Požadováno | Popis |
---|---|---|---|
ts_series | string |
✔️ | Název sloupce vstupní tabulky obsahující časové razítko řady, které se mají předpovědět. |
y_series | string |
✔️ | Název sloupce vstupní tabulky obsahující hodnoty řady, které se mají předpovědět. |
y_pred_series | string |
✔️ | Název sloupce pro uložení předpovězené řady. |
výhybka | int |
✔️ | Počet bodů na konci řady, které se mají předpovědět (prognóza). Tyto body jsou vyloučené z procesu učení (regrese). Výchozí hodnota je 0. |
y_pred_low_series | string |
Název sloupce pro uložení řady nejnižších hodnot intervalu spolehlivosti. Pokud interval spolehlivosti nepotřebujete, vynecháte ho. | |
y_pred_high_series | string |
Název sloupce pro uložení řady nejvyšších hodnot intervalu spolehlivosti. Pokud interval spolehlivosti nepotřebujete, vynecháte ho. |
Definice funkce
Funkci můžete definovat vložením jejího kódu jako funkce definovanou dotazem nebo vytvořením jako uložené funkce v databázi následujícím způsobem:
Definujte funkci pomocí následujícího příkazu let. Nejsou vyžadována žádná oprávnění.
Důležité
Příkaz let nemůže běžet samostatně. Musí následovat příkaz tabulkového výrazu. Pokud chcete spustit funkční příklad, podívejte se na příkladseries_fbprophet_forecast_fl()
.
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://artifactswestusnew.blob.core.windows.net/public/prophet-1.1.5.zip?*** YOUR SAS TOKEN ***'))
};
// Write your query to use the function here.
Příklad
Následující příklad používá operátor invoke ke spuštění funkce.
Pokud chcete použít funkci definovanou dotazem, vyvoláte ji po definici vložené funkce.
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://artifactswestusnew.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
Výstup
Tato funkce není podporovaná.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro