`L iU/ZdZddlZddlmZddlmZddlmZm Z dZ d Z d d Z d d Z y) zwUtilities to get the response values of a classifier or a regressor. It allows to make uniform checks and validation. N) is_classifier)type_of_target)_check_response_methodcheck_is_fittedcX|dk(r+|jddkrtd|jd|dk(r$tj||k(d}|dd|fS|dk(rFt |t r4tj |Dcgc] }|ddd f c}jS|S|Scc}w) aGet the response values when the response method is `predict_proba`. This function process the `y_pred` array in the binary and multi-label cases. In the binary case, it selects the column corresponding to the positive class. In the multi-label case, it stacks the predictions if they are not in the "compressed" format `(n_samples, n_outputs)`. Parameters ---------- y_pred : ndarray Output of `estimator.predict_proba`. The shape depends on the target type: - for binary classification, it is a 2d array of shape `(n_samples, 2)`; - for multiclass classification, it is a 2d array of shape `(n_samples, n_classes)`; - for multilabel classification, it is either a list of 2d arrays of shape `(n_samples, 2)` (e.g. `RandomForestClassifier` or `KNeighborsClassifier`) or an array of shape `(n_samples, n_outputs)` (e.g. `MLPClassifier` or `RidgeClassifier`). target_type : {"binary", "multiclass", "multilabel-indicator"} Type of the target. classes : ndarray of shape (n_classes,) or list of such arrays Class labels as reported by `estimator.classes_`. pos_label : int, float, bool or str Only used with binary and multiclass targets. Returns ------- y_pred : ndarray of shape (n_samples,), (n_samples, n_classes) or (n_samples, n_output) Compressed predictions format as requested by the metrics. binaryrrzGot predict_proba of shape z', but need classifier with two classes.rNzmultilabel-indicator)shape ValueErrornp flatnonzero isinstancelistvstackT)y_pred target_typeclasses pos_labelcol_idxps ]/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sklearn/utils/_response.py_process_predict_probarsHh6<<?Q#6)&,,8+ +  h..I!56q9aj!! . . fd #9971a2h78:: :M M 8sB'c*|dk(r ||dk(rd|zS|S)a{Get the response values when the response method is `decision_function`. This function process the `y_pred` array in the binary and multi-label cases. In the binary case, it inverts the sign of the score if the positive label is not `classes[1]`. In the multi-label case, it stacks the predictions if they are not in the "compressed" format `(n_samples, n_outputs)`. Parameters ---------- y_pred : ndarray Output of `estimator.decision_function`. The shape depends on the target type: - for binary classification, it is a 1d array of shape `(n_samples,)` where the sign is assuming that `classes[1]` is the positive class; - for multiclass classification, it is a 2d array of shape `(n_samples, n_classes)`; - for multilabel classification, it is a 2d array of shape `(n_samples, n_outputs)`. target_type : {"binary", "multiclass", "multilabel-indicator"} Type of the target. classes : ndarray of shape (n_classes,) or list of such arrays Class labels as reported by `estimator.classes_`. pos_label : int, float, bool or str Only used with binary and multiclass targets. Returns ------- y_pred : ndarray of shape (n_samples,), (n_samples, n_classes) or (n_samples, n_output) Compressed predictions format as requested by the metrics. r rr rrrrs r_process_decision_functionrLs'Fh9 #:F{ McJddlm}m}||rt||}|j}t |} | dvr1|#||j vrtd|d|| | dk(r|d}||} |jd vrt| | || } n|jd k(rrt| | || } nb||rt||}||d}} nC|d k7r(t|jjd |d|d|j}||d}} |r| ||jfS| |fS)a Compute the response values of a classifier, an outlier detector, or a regressor. The response values are predictions such that it follows the following shape: - for binary classification, it is a 1d array of shape `(n_samples,)`; - for multiclass classification, it is a 2d array of shape `(n_samples, n_classes)`; - for multilabel classification, it is a 2d array of shape `(n_samples, n_outputs)`; - for outlier detection, it is a 1d array of shape `(n_samples,)`; - for regression, it is a 1d array of shape `(n_samples,)`. If `estimator` is a binary classifier, also return the label for the effective positive class. This utility is used primarily in the displays and the scikit-learn scorers. .. versionadded:: 1.3 Parameters ---------- estimator : estimator instance Fitted classifier, outlier detector, or regressor or a fitted :class:`~sklearn.pipeline.Pipeline` in which the last estimator is a classifier, an outlier detector, or a regressor. X : {array-like, sparse matrix} of shape (n_samples, n_features) Input values. response_method : {"predict_proba", "predict_log_proba", "decision_function", "predict"} or list of such str Specifies the response method to use get prediction from an estimator (i.e. :term:`predict_proba`, :term:`predict_log_proba`, :term:`decision_function` or :term:`predict`). Possible choices are: - if `str`, it corresponds to the name to the method to return; - if a list of `str`, it provides the method names in order of preference. The method returned corresponds to the first method in the list and which is implemented by `estimator`. pos_label : int, float, bool or str, default=None The class considered as the positive class when computing the metrics. If `None` and target is 'binary', `estimators.classes_[1]` is considered as the positive class. return_response_method_used : bool, default=False Whether to return the response method used to compute the response values. .. versionadded:: 1.4 Returns ------- y_pred : ndarray of shape (n_samples,), (n_samples, n_classes) or (n_samples, n_outputs) Target scores calculated from the provided `response_method` and `pos_label`. pos_label : int, float, bool, str or None The class considered as the positive class when computing the metrics. Returns `None` if `estimator` is a regressor or an outlier detector. response_method_used : str The response method used to compute the response values. Only returned if `return_response_method_used` is `True`. .. versionadded:: 1.4 Raises ------ ValueError If `pos_label` is not a valid label. If the shape of `y_pred` is not consistent for binary classifier. If the response method can be applied to a classifier only and `estimator` is a regressor. r)ris_outlier_detector)r multiclassNz pos_label=z+ is not a valid label: It should be one of r r ) predict_probapredict_log_probardecision_functionpredictz? should either be a classifier to be used with response_method=zR or the response_method should be 'predict'. Got a regressor with response_method= instead.) sklearn.baserr"rclasses_rtolistr __name__rr __class__r') estimatorXresponse_methodrreturn_response_method_usedrr"prediction_methodrrrs r_get_response_valuesr3tsd@Y29oN$$$W- 2 2$'..:J)J   ,%Y("{h'>#BK "1%  % %)O O+'# F  ' '+> >/'# F Y '29oN-a0$  i '&&//01--<,=>M"#9.  &---a0$ "y"3"<"<<< 9 r c*d}t|t|s&t|d|jjdzt |j dk7r%t|dt |j dz|dk(rddg}t||||| S) aCompute the response values of a binary classifier. Parameters ---------- estimator : estimator instance Fitted classifier or a fitted :class:`~sklearn.pipeline.Pipeline` in which the last estimator is a binary classifier. X : {array-like, sparse matrix} of shape (n_samples, n_features) Input values. response_method : {'auto', 'predict_proba', 'decision_function'} Specifies whether to use :term:`predict_proba` or :term:`decision_function` as the target response. If set to 'auto', :term:`predict_proba` is tried first and if it does not exist :term:`decision_function` is tried next. pos_label : int, float, bool or str, default=None The class considered as the positive class when computing the metrics. By default, `estimators.classes_[1]` is considered as the positive class. return_response_method_used : bool, default=False Whether to return the response method used to compute the response values. .. versionadded:: 1.5 Returns ------- y_pred : ndarray of shape (n_samples,) Target scores calculated from the provided response_method and pos_label. pos_label : int, float, bool or str The class considered as the positive class when computing the metrics. response_method_used : str The response method used to compute the response values. Only returned if `return_response_method_used` is `True`. .. versionadded:: 1.5 z/Expected 'estimator' to be a binary classifier.z Got r(rz classes instead.autor$r&)rr1)rrr r-r,lenr*r3)r.r/r0rr1classification_errors r_get_response_values_binaryr8s^MI  # U9+>+>+G+G*H #R R   Y   A % U3y/A/A+B*CCT#U U  & *,?@  $?  r )NF)__doc__numpyrbaserr#r validationrrrrr3r8rr rr=s@ &?9x%X % BLPUDr