def __init__(self, kernel: Optional[Kernel] = None, **kwargs):
        """
        This model uses the ``GaussianProcessRegressor`` of scikit-learn to fit a Gaussian Process to the
        supplied TimeSeries. This can then be used to obtain samples from the
        Gaussian Process at the times of the TimeSeries.

        It can for instance be used to fill in missing (NaN) values from a TimeSeries.

        Parameters
        ----------
        kernel : sklearn.gaussian_process.kernels.Kernel, default: None
            The kernel specifying the covariance function of the Gaussian Process. If None is passed,
            the default in scikit-learn is used. Note that the kernel hyperparameters are optimized
            during fitting unless the bounds are marked as 'fixed'.
        **kwargs
            Additional keyword arguments passed to ``sklearn.gaussian_process.GaussianProcessRegressor``.
        """
        super().__init__()
        self.model = GaussianProcessRegressor(kernel=kernel, **kwargs)

        This model uses the ``GaussianProcessRegressor`` of scikit-learn to fit a Gaussian Process to the
        supplied TimeSeries. This can then be used to obtain samples from the
        Gaussian Process at the times of the TimeSeries.

        It can for instance be used to fill in missing (NaN) values from a TimeSeries.

        Parameters
        ----------
        kernel : sklearn.gaussian_process.kernels.Kernel, default: None
            The kernel specifying the covariance function of the Gaussian Process. If None is passed,
            the default in scikit-learn is used. Note that the kernel hyperparameters are optimized
            during fitting unless the bounds are marked as 'fixed'.
        **kwargs
            Additional keyword arguments passed to ``sklearn.gaussian_process.GaussianProcessRegressor``.
        
darts/models/filtering/gaussian_process_filter.py