Skip to content

plot_edf


method plot_edf(models=None, metric=None, title=None, legend="upper left", figsize=(900, 600), filename=None, display=True)[source]
Plot the Empirical Distribution Function of a study.

Use this plot to analyze and improve hyperparameter search spaces. The EDF assumes that the value of the objective function is in accordance with the uniform distribution over the objective space. This plot is only available for models that ran hyperparameter tuning.

Note

Only complete trials are considered when plotting the EDF.

Parametersmodels: int, str, Model, slice, sequence or None, default=None
Models to plot. If None, all models that used hyperparameter tuning are selected.

metric: int, str, sequence or None, default=None
Metric to plot (only for multi-metric runs). If str, add + between options to select more than one. If None, the metric used to run the pipeline is selected.

title: str, dict or None, default=None
Title for the plot.

legend: str, dict or None, default="upper left"
Legend for the plot. See the user guide for an extended description of the choices.

  • If None: No legend is shown.
  • If str: Location where to show the legend.
  • If dict: Legend configuration.

figsize: tuple, default=(900, 600)
Figure's size in pixels, format as (x, y).

filename: str or None, default=None
Save the plot using this name. Use "auto" for automatic naming. The type of the file depends on the provided name (.html, .png, .pdf, etc...). If filename has no file type, the plot is saved as html. If None, the plot is not saved.

display: bool or None, default=True
Whether to render the plot. If None, it returns the figure.

Returnsgo.Figure or None
Plot object. Only returned if display=None.


See Also

plot_hyperparameters

Plot hyperparameter relationships in a study.

plot_trials

Plot the hyperparameter tuning trials.


Example

>>> from atom import ATOMClassifier
>>> from optuna.distributions import IntDistribution

>>> X = pd.read_csv("./examples/datasets/weatherAUS.csv")

>>> atom = ATOMClassifier(X, y="RainTomorrow", n_rows=1e4)
>>> atom.impute()
>>> atom.encode()

>>> # We run three models with different search spaces
>>> atom.run(
...     models="RF1",
...     n_trials=200,
...     ht_params={"distributions": {"n_estimators": IntDistribution(10, 20)}},
... )
>>> atom.run(
...     models="RF2",
...     n_trials=200,
...     ht_params={"distributions": {"n_estimators": IntDistribution(50, 70)}},
... )
>>> atom.run(
...     models="RF3",
...     n_trials=200,
...     ht_params={"distributions": {"n_estimators": IntDistribution(80, 90)}},
... )

>>> atom.plot_edf()