class_docstr: Probability of Improvement
  
  :math:`P(f_{t+1}(\mathbf{X})\geq f(\mathbf{X^+}))` :math:`:= \Phi(\\frac{ \mu(\mathbf{X})-f(\mathbf{X^+}) }
  { \sigma(\mathbf{X}) })` with :math:`f(X^+)` as the incumbent and :math:`\Phi` the cdf of the standard normal.
  
  Parameters
  ----------
  xi : float, defaults to 0.0
      Controls the balance between exploration and exploitation of the acquisition function.
class_docstr_tok: ["Probability","of","Improvement",":","math",":","`","P","(","f_","{","t+1","}","(","\\mathbf","{","X","}",")","\\geq","f","(","\\mathbf","{","X^+","}",")",")","`",":","math",":","`",":","=","\\Phi","(","\\\\frac","{","\\mu","(","\\mathbf","{","X","}",")","-f","(","\\mathbf","{","X^+","}",")","}","{","\\sigma","(","\\mathbf","{","X","}",")","}",")","`","with",":","math",":","`","f","(","X^+",")","`","as","the","incumbent","and",":","math",":","`","\\Phi","`","the","cdf","of","the","standard","normal",".","Parameters","--","--","--","--","--","xi",":","float",",","defaults","to","0.0","Controls","the","balance","between","exploration","and","exploitation","of","the","acquisition","function","."]
docstr: Compute the PI value.
  
  Parameters
  ----------
  X: np.ndarray [N, D]
     Points to evaluate PI. N is the number of points and D the dimension for the points.
  
  Returns
  -------
  np.ndarray [N, 1]
      Expected Improvement of X.
  
  Raises
  ------
  ValueError
      If `update` has not been called before (current incumbent value `eta` unspecified).
docstr_tok: ["Compute","the","PI","value",".","Parameters","--","--","--","--","--","X",":","np.ndarray","[","N",",","D","]","Points","to","evaluate","PI",".","N","is","the","number","of","points","and","D","the","dimension","for","the","points",".","Returns","--","--","--","-","np.ndarray","[","N",",","1","]","Expected","Improvement","of","X",".","Raises","--","--","--","ValueError","If","`","update","`","has","not","been","called","before","(","current","incumbent","value","`","eta","`","unspecified",")","."]
code: def _compute(self, X: np.ndarray) -> np.ndarray:
      """Compute the PI value.
  
      Parameters
      ----------
      X: np.ndarray [N, D]
         Points to evaluate PI. N is the number of points and D the dimension for the points.
  
      Returns
      -------
      np.ndarray [N, 1]
          Expected Improvement of X.
  
      Raises
      ------
      ValueError
          If `update` has not been called before (current incumbent value `eta` unspecified).
  
      """
      assert self._model is not None
      if self._eta is None:
          raise ValueError(
              "No current best specified. Call update("
              "eta=<float>) to inform the acquisition function "
              "about the current best value."
          )
  
      if len(X.shape) == 1:
          X = X[:, np.newaxis]
      m, var_ = self._model.predict_marginalized(X)
      std = np.sqrt(var_)
  
      return norm.cdf((self._eta - m - self._xi) / std)
  
file_path: SMAC3/smac/acquisition/function/probability_improvement.py
imports: from __future__ import annotations
  from typing import Any
  import numpy
  from scipy.stats import norm
  from smac.acquisition.function.abstract_acquisition_function import AbstractAcquisitionFunction
  from smac.utils.logging import get_logger
label_desc: Use image node_id 5 for calling the PI obj's underlying member method code with example usage: obj._compute(X) and returns: norm