Skip to content

prophet.ProphetModelDataset

kedro_datasets_experimental.prophet.ProphetModelDataset

ProphetModelDataset(
    *,
    filepath,
    save_args=None,
    version=None,
    credentials=None,
    fs_args=None,
    metadata=None
)

Bases: JSONDataset

ProphetModelDataset loads/saves Facebook Prophet models to a JSON file using an underlying filesystem (e.g., local, S3, GCS). It uses Prophet's built-in serialization to handle the JSON file.

Example usage for the YAML API
model:
    type: custom_datasets.ProphetModelDataset
    filepath: gcs://your_bucket/model.json
    fs_args:
        project: my-project
    credentials: my_gcp_credentials
Example usage for the Python API
from kedro_datasets_experimental.prophet import ProphetModelDataset
from prophet import Prophet
import pandas as pd

df = pd.DataFrame(
    {"ds": ["2024-01-01", "2024-01-02", "2024-01-03"], "y": [100, 200, 300]}
)

model = Prophet()
model.fit(df)
dataset = ProphetModelDataset(filepath="path/to/model.json")
dataset.save(model)
reloaded_model = dataset.load()

Parameters:

  • filepath (str) –

    Filepath in POSIX format to a JSON file prefixed with a protocol like s3://. If prefix is not provided, file protocol (local filesystem) will be used. The prefix should be any protocol supported by fsspec. Note: http(s) doesn't support versioning.

  • save_args (dict[str, Any] | None, default: None ) –

    json options for saving JSON files (arguments passed into `json.dump). Here you can find all available arguments: https://docs.python.org/3/library/json.html All defaults are preserved, but "default_flow_style", which is set to False.

  • version (Version | None, default: None ) –

    If specified, should be an instance of kedro.io.core.Version. If its load attribute is None, the latest version will be loaded. If its save attribute is None, save version will be autogenerated.

  • credentials (dict[str, Any] | None, default: None ) –

    Credentials required to get access to the underlying filesystem. E.g. for GCSFileSystem it should look like {"token": None}.

  • fs_args (dict[str, Any] | None, default: None ) –

    Extra arguments to pass into underlying filesystem class constructor (e.g. {"project": "my-project"} for GCSFileSystem), as well as to pass to the filesystem's open method through nested keys open_args_load and open_args_save. Here you can find all available arguments for open: https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem.open

  • metadata (dict[str, Any] | None, default: None ) –

    Any arbitrary metadata. This is ignored by Kedro, but may be consumed by users or external plugins.

Source code in kedro_datasets_experimental/prophet/prophet_dataset.py
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
def __init__(  # noqa: PLR0913
    self,
    *,
    filepath: str,
    save_args: dict[str, Any] | None = None,
    version: Version | None = None,
    credentials: dict[str, Any] | None = None,
    fs_args: dict[str, Any] | None = None,
    metadata: dict[str, Any] | None = None,
) -> None:
    """Creates a new instance of ``ProphetModelDataset`` pointing to a concrete JSON file
    on a specific filesystem.

    Args:
        filepath: Filepath in POSIX format to a JSON file prefixed with a protocol like `s3://`.
            If prefix is not provided, `file` protocol (local filesystem) will be used.
            The prefix should be any protocol supported by ``fsspec``.
            Note: `http(s)` doesn't support versioning.
        save_args: json options for saving JSON files (arguments passed
            into ```json.dump``). Here you can find all available arguments:
            https://docs.python.org/3/library/json.html
            All defaults are preserved, but "default_flow_style", which is set to False.
        version: If specified, should be an instance of
            ``kedro.io.core.Version``. If its ``load`` attribute is
            None, the latest version will be loaded. If its ``save``
            attribute is None, save version will be autogenerated.
        credentials: Credentials required to get access to the underlying filesystem.
            E.g. for ``GCSFileSystem`` it should look like `{"token": None}`.
        fs_args: Extra arguments to pass into underlying filesystem class constructor
            (e.g. `{"project": "my-project"}` for ``GCSFileSystem``), as well as
            to pass to the filesystem's `open` method through nested keys
            `open_args_load` and `open_args_save`.
            Here you can find all available arguments for `open`:
            https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem.open
        metadata: Any arbitrary metadata.
            This is ignored by Kedro, but may be consumed by users or external plugins.
    """
    super().__init__(
        filepath=filepath,
        save_args=save_args,
        version=version,
        credentials=credentials,
        fs_args=fs_args,
        metadata=metadata,
    )

load

load()

Loads a Prophet model from a JSON file.

Returns:

  • Prophet

    A deserialized Prophet model.

Source code in kedro_datasets_experimental/prophet/prophet_dataset.py
 93
 94
 95
 96
 97
 98
 99
100
101
102
def load(self) -> Prophet:
    """Loads a Prophet model from a JSON file.

    Returns:
        Prophet: A deserialized Prophet model.
    """
    load_path = get_filepath_str(self._get_load_path(), self._protocol)

    with self._fs.open(load_path, **self._fs_open_args_load) as fs_file:
        return model_from_json(fs_file.read())

save

save(data)

Saves a Prophet model to a JSON file.

Parameters:

  • data (Prophet) –

    The Prophet model instance to be serialized and saved.

Source code in kedro_datasets_experimental/prophet/prophet_dataset.py
104
105
106
107
108
109
110
111
112
113
114
115
def save(self, data: Prophet) -> None:
    """Saves a Prophet model to a JSON file.

    Args:
        data: The Prophet model instance to be serialized and saved.
    """
    save_path = get_filepath_str(self._get_save_path(), self._protocol)

    with self._fs.open(save_path, **self._fs_open_args_save) as fs_file:
        fs_file.write(model_to_json(data))

    self._invalidate_cache()