code: def kde(features):
      """Computes the probability density function of the input signal using a Gaussian KDE (Kernel Density Estimate)
  
      Parameters
      ----------
      features : nd-array
          Input from which probability density function is computed
  
      Returns
      -------
      nd-array
          probability density values
  
      """
      features_ = np.copy(features)
      xx = create_xx(features_)
  
      if min(features_) == max(features_):
          noise = np.random.randn(len(features_)) * 0.0001
          features_ = np.copy(features_ + noise)
  
      kernel = scipy.stats.gaussian_kde(
          features_, bw_method="silverman"
      )
  
      return np.array(kernel(xx) / np.sum(kernel(xx)))
  
file_path: tsfel/tsfel/feature_extraction/features_utils.py
imports: import scipy
  import numpy
label_desc: Use image node_id 9 for calling a global function with example usage: kde(features) and returns: np