Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

함수 기반 시계열 설정

숫자형 시계열을 반환하는 Python 함수와 Quiver가 참조할 태그된 함수 버전을 준비합니다.

라이브러리와 반환 계약

Code Repositories의 Libraries에서 timeseries-sdk를 추가합니다. Prophet 예제에는 Prophet, pandas와 사용할 객체 유형의 생성된 온톨로지 SDK도 필요합니다.

TimeSeries.serialize에 전달하는 pandas DataFrame은 다음 두 열을 가집니다.

열자료형과 의미
timestamppandas Timestamp
valueint32나 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 등 입력을 설정합니다.

여러 시나리오를 비교하려면 카드를 추가로 만들고 서로 다른 입력을 지정할 수 있습니다.