함수 기반 시계열 설정
숫자형 시계열을 반환하는 Python 함수와 Quiver가 참조할 태그된 함수 버전을 준비합니다.
라이브러리와 반환 계약
Code Repositories의 Libraries에서 timeseries-sdk를 추가합니다. Prophet 예제에는 Prophet, pandas와 사용할 객체 유형의 생성된 온톨로지 SDK도 필요합니다.
TimeSeries.serialize에 전달하는 pandas DataFrame은 다음 두 열을 가집니다.
| 열 | 자료형과 의미 |
|---|---|
| timestamp | pandas Timestamp |
| value | int32나 float 등의 숫자 |
함수는 직렬화된 list[bytes]를 반환합니다. 이 경로는 범주형 출력을 지원하지 않습니다.
예측 함수
다음은 Machine의 숫자형 performance_score를 읽는 함수입니다. 실제 저장소에서 같은 생성 모델과 TSP를 준비하거나 이름을 맞춥니다. 빈 입력은 빈 시계열을 반환하며, 그 밖의 입력에는 유효한 숫자 관측이 최소 두 개 필요합니다. 모델에 전달할 시각은 UTC로 변환한 뒤 시간대 정보를 제거합니다. 출력의 timestamp도 같은 기준을 사용합니다.
import pandas as pd
from functions.api import function
from ontology_sdk.ontology.objects import Machine
from prophet import Prophet
from timeseries_sdk.types import TimeSeries
@function
def performance_prophet_forecast(
machine: Machine,
periods: int = 96,
freq: str = "15min",
) -> list[bytes]:
dataframe = machine.performance_score.to_pandas(all_time=True)
if dataframe.empty:
empty = pd.DataFrame({
"timestamp": pd.Series(dtype="datetime64[ns]"),
"value": pd.Series(dtype="float64"),
})
return TimeSeries.serialize(empty)
training = dataframe.rename(
columns={"timestamp": "ds", "value": "y"}
)
training["ds"] = pd.to_datetime(training["ds"], utc=True).dt.tz_localize(None)
training = training.sort_values("ds")
model = Prophet().fit(training)
future = model.make_future_dataframe(
periods=periods,
freq=freq,
include_history=True,
)
forecast = model.predict(future)
output = forecast[["ds", "yhat"]].rename(
columns={"ds": "timestamp", "yhat": "value"}
)
return TimeSeries.serialize(output)
게시와 Quiver 연결
함수를 게시하고 사용할 버전에 태그를 붙입니다. Quiver에 Code function time series 카드를 추가합니다.
함수와 버전을 고르고 Machine, periods와 freq 등 입력을 설정합니다.
여러 시나리오를 비교하려면 카드를 추가로 만들고 서로 다른 입력을 지정할 수 있습니다.