series_fbprophet_forecast_fl()
関数 series_fbprophet_forecast_fl()
は ユーザー定義関数 (UDF) であり、時系列を含む式を入力として受け取り、 Prophet アルゴリズムを使用して最後の末尾のポイントの値を予測。 関数は、予測ポイントとその信頼区間の両方を返します。 この関数は、Prophet () クラスへの Kusto 照会言語 (KQL) ラッパーであり、予測に必須のパラメーターのみを公開します。 追加のパラメーターをサポートするには、コピーを自由に変更してください。 休日、変更点、フーリエ次数などがあります。
Note
ネイティブ関数 series_decompose_forecast () の使用を検討してください。 ネイティブ関数は、より単純なモデルに基づいていますが、拡張性が高く、より高速に実行できます。
前提条件
- Python プラグインは、クラスター 有効にする必要があります。 これは、関数で使用されるインライン Python に必要です。
- Python プラグインは、データベース 有効にする必要があります。 これは、関数で使用されるインライン Python に必要です。
- python イメージに含まれていないので、
fbprophet
パッケージをインストールします。 パッケージをインストールするには、次の操作を行います。- Python プラグインのパッケージをインストールするためのガイドラインに従います。
- 上記のガイドラインで時間を節約するために、https://artifactswestusnew.blob.core.windows.net/public/prophet-1.1.5.zip から
prophet
のホイール ファイルとその依存関係を含むprophet
ZIP ファイルをダウンロードできます。 このファイルを許可リストに載せられている BLOB コンテナーに保存します。
- 上記のガイドラインで時間を節約するために、https://artifactswestusnew.blob.core.windows.net/public/prophet-1.1.5.zip から
- ZIP ファイルへの読み取りアクセス権を持つ SAS トークンを作成します。 SAS トークンを作成するには、「BLOB コンテナーの SAS を取得する」を参照してください。
- Exampleで、
external_artifacts
パラメーターの URL 参照を、ファイル パスとその SAS トークンに置き換えます。
- Python プラグインのパッケージをインストールするためのガイドラインに従います。
構文
T | invoke series_fbprophet_forecast_fl(
ts_series,
y_series,
y_pred_series,
[ ポイント ] ,
[ y_pred_low_series ] ,
[ y_pred_high_series ])
構文規則について詳しく知る。
パラメーター
件名 | タイプ | Required | 説明 |
---|---|---|---|
ts_series | string |
✔️ | 予測する系列のタイム スタンプを含む入力テーブル列の名前。 |
y_series | string |
✔️ | 予測する系列の値を含む入力テーブル列の名前。 |
y_pred_series | string |
✔️ | 予測された系列を格納する列の名前。 |
ポイント | int |
✔️ | 予測する系列の末尾にあるポイントの数 (予測)。 これらの点は、学習 (回帰) プロセスから除外されます。 既定値は 0 です。 |
y_pred_low_series | string |
信頼区間の最小値の系列を格納する列の名前。 信頼区間が必要ない場合は省略します。 | |
y_pred_high_series | string |
信頼区間の最大値の系列を格納する列の名前。 信頼区間が必要ない場合は省略します。 |
関数定義
関数を定義するには、次のようにコードをクエリ定義関数として埋め込むか、データベースに格納された関数として作成します。
次の let ステートメントを使用して関数を定義。 権限は必要ありません。
重要
let ステートメント単独では実行できません。 その後に 表形式の式ステートメントが続く必要があります。 series_fbprophet_forecast_fl()
の動作例を実行するには、Exampleを参照してください。
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.
例
次の例では、 invoke 演算子 を使用して関数を実行します。
クエリ定義関数を使用するには、埋め込み関数定義の後に呼び出します。
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
出力
この機能はサポートされていません。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示