メインコンテンツへスキップ
Validation 要素は、パイプライン前段で生成されたパラメータを使って objectives に列挙された実験をシミュレートし、測定データと比較します。フィットしたデータ範囲外への汎化性能を確認するための要素です。

最小構成の検証

import ionworks_schema as iws
from ionworks import Ionworks

known = iws.direct_entries.DirectEntry(
    parameters={"Ambient temperature [K]": 298.15},
)

# 検証対象の保留実験
val = iws.Validation(
    objectives={
        "0.5C": iws.objectives.CurrentDriven(
            data_input="file:examples/data/chen_synthetic_0.5C/time_series.csv",
            options={"model": {"type": "SPMe"}},
        ),
    },
    summary_stats=[iws.costs.RMSE(), iws.costs.MAE(), iws.costs.Max()],
)

pipeline = iws.Pipeline({"known": known, "validate": val})

client = Ionworks()
submission = client.pipeline.create(pipeline)
client.pipeline.wait_for_completion(submission.id)
summary_stats を省略すると、測定データと同じ物理単位で報告されるよう適切なデフォルトが補われます。

検証結果の取得

element_results には目的関数ごとの集約統計量が格納されます。
result = client.pipeline.result(submission.id)
print(result.element_results["validate"]["summary_stats"])
点ごとの詳細(時系列トレース、プロット設定)は別途保存され、get_element_metadata で取得します。
metadata = client.pipeline.get_element_metadata(submission.id, "validate")
要素名(上記の "validate")はパイプラインの elements dict で指定したキーです。"validate_pristine""validate_aged" のように複数の検証要素を 1 つのパイプラインで実行できます。

フィット後の検証

フィットと検証を同じパイプライン内に置くと、パラメータが自動的に共有されます。
pipeline = iws.Pipeline(
    {
        "known": known,
        "fit": fit,           # iws.DataFit、/ja/pipelines/data-fitting/overview を参照
        "validate": val,
    },
)
検証ステップは fit の最適パラメータを受け取り、保留した実験に対して走らせます。

パイプライン概要

検証が直接エントリ・計算・データフィットとどう連結するか。

データフィッティング概要

検証対象となるパラメータの生成方法。