Ë
    êÿæi¶d  ã                   ó"  — d dl Z d dlmZmZ d dlZd dlmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZmZmZ d dlmZ d dlmZmZmZmZmZ d d	lmZmZm Z m!Z!m"Z" d d
l#m$Z$ d dl%m&Z&m'Z'm(Z(m)Z)m*Z*  ejV                  d«      Z,d„ Z- G d„ dee
e	e«      Z.y)é    N)ÚIntegralÚReal)ÚBaseEstimatorÚMetaEstimatorMixinÚMultiOutputMixinÚRegressorMixinÚ_fit_contextÚclone)ÚConvergenceWarning)ÚLinearRegression)Úcheck_consistent_lengthÚcheck_random_stateÚget_tags)ÚBunch)Ú
HasMethodsÚIntervalÚOptionsÚ
RealNotIntÚ
StrOptions)ÚMetadataRouterÚMethodMappingÚ_raise_for_paramsÚ_routing_enabledÚprocess_routing)Úsample_without_replacement)Ú_check_method_paramsÚ_check_sample_weightÚcheck_is_fittedÚhas_fit_parameterÚvalidate_dataé   c           
      ó<  — | t        |«      z  }t        t        d|z
  «      }t        t        d||z  z
  «      }|dk(  ry|dk(  rt        d«      S t        t        t	        j
                  t	        j                  |«      t	        j                  |«      z  «      «      «      S )a  Determine number trials such that at least one outlier-free subset is
    sampled for the given inlier/outlier ratio.

    Parameters
    ----------
    n_inliers : int
        Number of inliers in the data.

    n_samples : int
        Total number of samples in the data.

    min_samples : int
        Minimum number of samples chosen randomly from original data.

    probability : float
        Probability (confidence) that one outlier-free sample is generated.

    Returns
    -------
    trials : int
        Number of trials.

    r!   r   Úinf)ÚfloatÚmaxÚ_EPSILONÚabsÚnpÚceilÚlog)Ú	n_inliersÚ	n_samplesÚmin_samplesÚprobabilityÚinlier_ratioÚnomÚdenoms          úq/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/sklearn/linear_model/_ransac.pyÚ_dynamic_max_trialsr3   /   s‚   € ð0 œu YÓ/Ñ/€LÜ
Œh˜˜K™Ó
(€CÜ”˜!˜l¨KÑ7Ñ7Ó8€EØ
ˆa‚xØØ�‚zÜ�U‹|ÐÜŒu”R—W‘WœRŸV™V C›[¬2¯6©6°%«=Ñ8Ó9Ó:Ó;Ð;ó    c                   ó6  ‡ — e Zd ZU dZ eg d¢«      dg eeddd¬«       eeddd¬«      dg eeddd¬«      dge	dge	dg eeddd¬«       e
eej                  h«      g eeddd¬«       e
eej                  h«      g eeddd¬«       e
eej                  h«      g eeddd¬«      g eeddd¬«      g ed	d
h«      e	gdgdœZeed<   	 ddddddej                  ej                  ej                  dd	ddœd„Z ed¬«      dd„«       Zd„ Zd„ Zd„ Zˆ fd„Zˆ xZS )ÚRANSACRegressora·  RANSAC (RANdom SAmple Consensus) algorithm.

    RANSAC is an iterative algorithm for the robust estimation of parameters
    from a subset of inliers from the complete data set.

    Read more in the :ref:`User Guide <ransac_regression>`.

    Parameters
    ----------
    estimator : object, default=None
        Base estimator object which implements the following methods:

        * `fit(X, y)`: Fit model to given training data and target values.
        * `score(X, y)`: Returns the mean accuracy on the given test data,
          which is used for the stop criterion defined by `stop_score`.
          Additionally, the score is used to decide which of two equally
          large consensus sets is chosen as the better one.
        * `predict(X)`: Returns predicted values using the linear model,
          which is used to compute residual error using loss function.

        If `estimator` is None, then
        :class:`~sklearn.linear_model.LinearRegression` is used for
        target values of dtype float.

        Note that the current implementation only supports regression
        estimators.

    min_samples : int (>= 1) or float ([0, 1]), default=None
        Minimum number of samples chosen randomly from original data. Treated
        as an absolute number of samples for `min_samples >= 1`, treated as a
        relative number `ceil(min_samples * X.shape[0])` for
        `min_samples < 1`. This is typically chosen as the minimal number of
        samples necessary to estimate the given `estimator`. By default a
        :class:`~sklearn.linear_model.LinearRegression` estimator is assumed and
        `min_samples` is chosen as ``X.shape[1] + 1``. This parameter is highly
        dependent upon the model, so if a `estimator` other than
        :class:`~sklearn.linear_model.LinearRegression` is used, the user must
        provide a value.

    residual_threshold : float, default=None
        Maximum residual for a data sample to be classified as an inlier.
        By default the threshold is chosen as the MAD (median absolute
        deviation) of the target values `y`. Points whose residuals are
        strictly equal to the threshold are considered as inliers.

    is_data_valid : callable, default=None
        This function is called with the randomly selected data before the
        model is fitted to it: `is_data_valid(X, y)`. If its return value is
        False the current randomly chosen sub-sample is skipped.

    is_model_valid : callable, default=None
        This function is called with the estimated model and the randomly
        selected data: `is_model_valid(model, X, y)`. If its return value is
        False the current randomly chosen sub-sample is skipped.
        Rejecting samples with this function is computationally costlier than
        with `is_data_valid`. `is_model_valid` should therefore only be used if
        the estimated model is needed for making the rejection decision.

    max_trials : int, default=100
        Maximum number of iterations for random sample selection.

    max_skips : int, default=np.inf
        Maximum number of iterations that can be skipped due to finding zero
        inliers or invalid data defined by ``is_data_valid`` or invalid models
        defined by ``is_model_valid``.

        .. versionadded:: 0.19

    stop_n_inliers : int, default=np.inf
        Stop iteration if at least this number of inliers are found.

    stop_score : float, default=np.inf
        Stop iteration if score is greater equal than this threshold.

    stop_probability : float in range [0, 1], default=0.99
        RANSAC iteration stops if at least one outlier-free set of the training
        data is sampled in RANSAC. This requires to generate at least N
        samples (iterations)::

            N >= log(1 - probability) / log(1 - e**m)

        where the probability (confidence) is typically set to high value such
        as 0.99 (the default) and e is the current fraction of inliers w.r.t.
        the total number of samples.

    loss : str, callable, default='absolute_error'
        String inputs, 'absolute_error' and 'squared_error' are supported which
        find the absolute error and squared error per sample respectively.

        If ``loss`` is a callable, then it should be a function that takes
        two arrays as inputs, the true and predicted value and returns a 1-D
        array with the i-th value of the array corresponding to the loss
        on ``X[i]``.

        If the loss on a sample is greater than the ``residual_threshold``,
        then this sample is classified as an outlier.

        .. versionadded:: 0.18

    random_state : int, RandomState instance, default=None
        The generator used to initialize the centers.
        Pass an int for reproducible output across multiple function calls.
        See :term:`Glossary <random_state>`.

    Attributes
    ----------
    estimator_ : object
        Final model fitted on the inliers predicted by the "best" model found
        during RANSAC sampling (copy of the `estimator` object).

    n_trials_ : int
        Number of random selection trials until one of the stop criteria is
        met. It is always ``<= max_trials``.

    inlier_mask_ : bool array of shape [n_samples]
        Boolean mask of inliers classified as ``True``.

    n_skips_no_inliers_ : int
        Number of iterations skipped due to finding zero inliers.

        .. versionadded:: 0.19

    n_skips_invalid_data_ : int
        Number of iterations skipped due to invalid data defined by
        ``is_data_valid``.

        .. versionadded:: 0.19

    n_skips_invalid_model_ : int
        Number of iterations skipped due to an invalid model defined by
        ``is_model_valid``.

        .. versionadded:: 0.19

    n_features_in_ : int
        Number of features seen during :term:`fit`.

        .. versionadded:: 0.24

    feature_names_in_ : ndarray of shape (`n_features_in_`,)
        Names of features seen during :term:`fit`. Defined only when `X`
        has feature names that are all strings.

        .. versionadded:: 1.0

    See Also
    --------
    HuberRegressor : Linear regression model that is robust to outliers.
    TheilSenRegressor : Theil-Sen Estimator robust multivariate regression model.
    SGDRegressor : Fitted by minimizing a regularized empirical loss with SGD.

    References
    ----------
    .. [1] https://en.wikipedia.org/wiki/RANSAC
    .. [2] https://www.sri.com/wp-content/uploads/2021/12/ransac-publication.pdf
    .. [3] https://bmva-archive.org.uk/bmvc/2009/Papers/Paper355/Paper355.pdf

    Examples
    --------
    >>> from sklearn.linear_model import RANSACRegressor
    >>> from sklearn.datasets import make_regression
    >>> X, y = make_regression(
    ...     n_samples=200, n_features=2, noise=4.0, random_state=0)
    >>> reg = RANSACRegressor(random_state=0).fit(X, y)
    >>> reg.score(X, y)
    0.9885
    >>> reg.predict(X[:1,])
    array([-31.9417])

    For a more detailed example, see
    :ref:`sphx_glr_auto_examples_linear_model_plot_ransac.py`
    )ÚfitÚscoreÚpredictNr!   Úleft)Úclosedr   ÚbothÚabsolute_errorÚsquared_errorÚrandom_state)Ú	estimatorr-   Úresidual_thresholdÚis_data_validÚis_model_validÚ
max_trialsÚ	max_skipsÚstop_n_inliersÚ
stop_scoreÚstop_probabilityÚlossr?   Ú_parameter_constraintséd   g®Gáz®ï?)r-   rA   rB   rC   rD   rE   rF   rG   rH   rI   r?   c                ó¬   — || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        y ©N)r@   r-   rA   rB   rC   rD   rE   rF   rG   rH   r?   rI   )Úselfr@   r-   rA   rB   rC   rD   rE   rF   rG   rH   rI   r?   s                r2   Ú__init__zRANSACRegressor.__init__   s_   € ð  #ˆŒØ&ˆÔØ"4ˆÔØ*ˆÔØ,ˆÔØ$ˆŒØ"ˆŒØ,ˆÔØ$ˆŒØ 0ˆÔØ(ˆÔØˆ�	r4   F)Úprefer_skip_nested_validationc           	      ó>  — t        || d«       t        dd¬«      }t        d¬«      }t        | ||||f¬«      \  }}t        ||«       | j                  �t        | j                  «      }n
t        «       }| j                  €.t        |t        «      st        d«      ‚|j                  d	   d	z   }ncd
| j                  cxk  rd	k  r3n n0t        j                  | j                  |j                  d
   z  «      }n| j                  d	k\  r| j                  }|j                  d
   kD  rt        d|j                  d
   z  «      ‚| j                  €?t        j                  t        j                  |t        j                  |«      z
  «      «      }	n| j                  }	| j                   dk(  r|j"                  d	k(  rd„ }
nKd„ }
nG| j                   dk(  r|j"                  d	k(  rd„ }
n%d„ }
n!t%        | j                   «      r| j                   }
t'        | j(                  «      }	 |j+                  |¬«       t-        |d«      }t/        |«      j0                  }|�|st        d|z  «      ‚|�||d<   t3        «       rt5        | dfi |¤Ž}n>t7        «       }t7        i i i ¬«      |_        |�t9        ||«      }d|i|j                  _        d	}t        j<                   }d}d}d}d}d
| _        d
| _         d
| _!        |j                  d
   }t        jD                  |«      }d
| _#        | jH                  }| jF                  |k  �r| xjF                  d	z  c_#        | j>                  | j@                  z   | jB                  z   | jJ                  kD  r�n·tM        |||¬«      }||   }||   }| jN                  �(| jO                  ||«      s| xj@                  d	z  c_         Œ¦tQ        ||j                  j:                  |¬«      } |j:                  ||fi |¤Ž | jR                  �*| jS                  |||«      s| xjB                  d	z  c_!        �Œ|jU                  |«      } 
||«      }||	k  }t        jV                  |«      }||k  r| xj>                  d	z  c_        �Œb||   } ||    }!||    }"tQ        ||j                  jX                  | ¬«      }# |jX                  |!|"fi |#¤Ž}$||k(  r|$|k  r�Œ³|}|$}|}|!}|"}| }t[        |t]        |||| j^                  «      «      }|| j`                  k\  s|| jb                  k\  rn| jF                  |k  r�Œ|€I| j>                  | j@                  z   | jB                  z   | jJ                  kD  rt        d«      ‚t        d«      ‚| j>                  | j@                  z   | jB                  z   | jJ                  kD  rte        jf                  dth        «       tQ        ||j                  j:                  |¬«      }% |j:                  ||fi |%¤Ž || _5        || _6        | S # t        $ r Y �Œòw xY w)a
  Fit estimator using RANSAC algorithm.

        Parameters
        ----------
        X : {array-like, sparse matrix} of shape (n_samples, n_features)
            Training data.

        y : array-like of shape (n_samples,) or (n_samples, n_targets)
            Target values.

        sample_weight : array-like of shape (n_samples,), default=None
            Individual weights for each sample
            raises error if sample_weight is passed and estimator
            fit method does not support it.

            .. versionadded:: 0.18

        **fit_params : dict
            Parameters routed to the `fit` method of the sub-estimator via the
            metadata routing API.

            .. versionadded:: 1.5

                Only available if
                `sklearn.set_config(enable_metadata_routing=True)` is set. See
                :ref:`Metadata Routing User Guide <metadata_routing>` for more
                details.

        Returns
        -------
        self : object
            Fitted `RANSACRegressor` estimator.

        Raises
        ------
        ValueError
            If no valid consensus set could be found. This occurs if
            `is_data_valid` and `is_model_valid` return False for all
            `max_trials` randomly chosen sub-samples.
        r7   ÚcsrF)Úaccept_sparseÚensure_all_finite)Ú	ensure_2d)Úvalidate_separatelyNzR`min_samples` needs to be explicitly set when estimator is not a LinearRegression.r!   r   zG`min_samples` may not be larger than number of samples: n_samples = %d.r=   c                 ó2   — t        j                  | |z
  «      S rM   )r(   r'   ©Úy_trueÚy_preds     r2   Ú<lambda>z%RANSACRegressor.fit.<locals>.<lambda>“  s   € ´r·v±v¸fÀv¹oÔ7Nr4   c                 ó\   — t        j                  t        j                  | |z
  «      d¬«      S )Nr!   ©Úaxis)r(   Úsumr'   rX   s     r2   r[   z%RANSACRegressor.fit.<locals>.<lambda>•  s   € ´r·v±vÜ—F‘F˜6 F™?Ó+°!õ8r4   r>   c                 ó   — | |z
  dz  S )Né   © rX   s     r2   r[   z%RANSACRegressor.fit.<locals>.<lambda>š  s   € ¸À¹ÈAÒ7Mr4   c                 ó<   — t        j                  | |z
  dz  d¬«      S )Nra   r!   r]   )r(   r_   rX   s     r2   r[   z%RANSACRegressor.fit.<locals>.<lambda>œ  s   € ´r·v±vØ˜f‘_¨Ñ*°õ8r4   )r?   Úsample_weightz[%s does not support sample_weight. Sample weights are only used for the calibration itself.)r7   r9   r8   )ÚparamsÚindiceszèRANSAC skipped more iterations than `max_skips` without finding a valid consensus set. Iterations were skipped because each randomly chosen sub-sample failed the passing criteria. See estimator attributes for diagnostics (n_skips*).zÏRANSAC could not find a valid consensus set. All `max_trials` iterations were skipped because each randomly chosen sub-sample failed the passing criteria. See estimator attributes for diagnostics (n_skips*).zšRANSAC found a valid consensus set but exited early due to skipping more iterations than `max_skips`. See estimator attributes for diagnostics (n_skips*).)7r   Údictr    r   r@   r
   r   r-   Ú
isinstanceÚ
ValueErrorÚshaper(   r)   rA   Úmedianr'   rI   ÚndimÚcallabler   r?   Ú
set_paramsr   ÚtypeÚ__name__r   r   r   r   r7   r#   Ún_skips_no_inliers_Ún_skips_invalid_data_Ún_skips_invalid_model_ÚarangeÚ	n_trials_rD   rE   r   rB   r   rC   r9   r_   r8   Úminr3   rH   rF   rG   ÚwarningsÚwarnr   Ú
estimator_Úinlier_mask_)&rN   ÚXÚyrd   Ú
fit_paramsÚcheck_X_paramsÚcheck_y_paramsr@   r-   rA   Úloss_functionr?   Úestimator_fit_has_sample_weightÚestimator_nameÚrouted_paramsÚn_inliers_bestÚ
score_bestÚinlier_mask_bestÚX_inlier_bestÚy_inlier_bestÚinlier_best_idxs_subsetr,   Úsample_idxsrD   Úsubset_idxsÚX_subsetÚy_subsetÚfit_params_subsetrZ   Úresiduals_subsetÚinlier_mask_subsetÚn_inliers_subsetÚinlier_idxs_subsetÚX_inlier_subsetÚy_inlier_subsetÚscore_params_inlier_subsetÚscore_subsetÚfit_params_best_idxs_subsets&                                         r2   r7   zRANSACRegressor.fit=  s  € ô` 	˜* d¨EÔ2Ü¨EÀUÔKˆÜ¨Ô.ˆÜØ�!�Q¨^¸^Ð,Lô
‰ˆˆ1ô 	   1Ô%à�>‰>Ð%Ü˜dŸn™nÓ-‰Iä(Ó*ˆIà×ÑÐ#Ü˜iÔ)9Ô:Ü ð1óð ð Ÿ'™' !™* q™.‰KØ�×!Ñ!Ô% AÕ%ÜŸ'™' $×"2Ñ"2°Q·W±W¸Q±ZÑ"?Ó@‰KØ×Ñ Ò"Ø×*Ñ*ˆKØ˜Ÿ™ ™Ò#Üð.Ø12·±¸±ñ=óð ð
 ×"Ñ"Ð*ä!#§¡¬2¯6©6°!´b·i±iÀ³lÑ2BÓ+CÓ!DÑà!%×!8Ñ!8Ðà�9‰9Ð(Ò(Ø�v‰v˜Š{Ù N‘ñ!‘ð �Y‰Y˜/Ò)Ø�v‰v˜Š{Ù M‘ñ!‘ô �d—i‘iÔ Ø ŸI™IˆMä)¨$×*;Ñ*;Ó<ˆð	Ø× Ñ ¨lÐ Ô;ô +<¸IÀÓ*WÐ'Ü˜i›×1Ñ1ˆØÐ$Ñ-LÜðà+ñ,óð ð Ð$Ø*7ˆJ�Ñ'äÔÜ+¨D°%ÑF¸:ÑF‰Mä!›GˆMÜ&+°¸BÀbÔ&IˆMÔ#ØÐ(Ü 4°]ÀAÓ F�Ø/>ÀÐ.N�×'Ñ'Ô+àˆÜ—f‘f�Wˆ
ØÐØˆØˆØ"&ÐØ#$ˆÔ Ø%&ˆÔ"Ø&'ˆÔ#ð —G‘G˜A‘Jˆ	Ü—i‘i 	Ó*ˆàˆŒØ—_‘_ˆ
Ø�n‰n˜zÓ)Ø�NŠN˜aÑ�Nð ×(Ñ(Ø×,Ñ,ñ-à×-Ñ-ñ.ð —‘ò	ñ
 ô 5Ø˜;°\ôˆKð ˜‘~ˆHØ˜‘~ˆHð ×!Ñ!Ð-°d×6HÑ6HØ˜(ô7ð ×*Ò*¨aÑ/Õ*Øô !5Ø˜-×1Ñ1×5Ñ5¸{ô!Ðð
 ˆI�M‰M˜( HÑBÐ0AÒBð ×"Ñ"Ð.°t×7JÑ7JØ˜8 Xô8ð ×+Ò+¨qÑ0Õ+Ùð ×&Ñ& qÓ)ˆFÙ,¨Q°Ó7Ðð "2Ð5GÑ!GÐÜ!Ÿv™vÐ&8Ó9Ðð   .Ò0Ø×(Ò(¨AÑ-Õ(Ùð "-Ð-?Ñ!@ÐØÐ 2Ñ3ˆOØÐ 2Ñ3ˆOô *>Ø˜-×1Ñ1×7Ñ7ÐASô*Ð&ð
 +˜9Ÿ?™?ØØñð -ñˆLð   >Ò1°lÀZÒ6OÙð .ˆNØ%ˆJØ1ÐØ+ˆMØ+ˆMØ&8Ð#äØÜ#Ø" I¨{¸D×<QÑ<QóóˆJð  ×!4Ñ!4Ò4¸
ÀdÇoÁoÒ8UØðw �n‰n˜zÔ)ð| Ð#à×(Ñ(Ø×,Ñ,ñ-à×-Ñ-ñ.ð —‘ò	ô
 !ð/óð ô !ðLóð ð ×(Ñ(Ø×,Ñ,ñ-à×-Ñ-ñ.ð —‘ò	ô
 —‘ð3ô
 'ôô ';Ø�m×-Ñ-×1Ñ1Ð;Rô'
Ð#ð 	ˆ	�‰�m ]ÑRÐ6QÒRà#ˆŒØ,ˆÔØˆøôg ò 	Úð	ús   ÈX Ø	XØXc                 óÚ   — t        | «       t        | |ddd¬«      }t        || d«       t        «       rt	        | dfi |¤Žj
                  d   }ni } | j                  j                  |fi |¤ŽS )a   Predict using the estimated model.

        This is a wrapper for `estimator_.predict(X)`.

        Parameters
        ----------
        X : {array-like or sparse matrix} of shape (n_samples, n_features)
            Input data.

        **params : dict
            Parameters routed to the `predict` method of the sub-estimator via
            the metadata routing API.

            .. versionadded:: 1.5

                Only available if
                `sklearn.set_config(enable_metadata_routing=True)` is set. See
                :ref:`Metadata Routing User Guide <metadata_routing>` for more
                details.

        Returns
        -------
        y : array, shape = [n_samples] or [n_samples, n_targets]
            Returns predicted values.
        FT©rT   rS   Úresetr9   )r   r    r   r   r   r@   ry   r9   )rN   r{   re   Úpredict_paramss       r2   r9   zRANSACRegressor.predict\  s{   € ô4 	˜ÔÜØØØ#ØØô
ˆô 	˜& $¨	Ô2äÔÜ,¨T°9ÑGÀÑG×QÑQØñ‰Nð  ˆNà&ˆt�‰×&Ñ& qÑ;¨NÑ;Ð;r4   c                 óÜ   — t        | «       t        | |ddd¬«      }t        || d«       t        «       rt	        | dfi |¤Žj
                  d   }ni } | j                  j                  ||fi |¤ŽS )a6  Return the score of the prediction.

        This is a wrapper for `estimator_.score(X, y)`.

        Parameters
        ----------
        X : (array-like or sparse matrix} of shape (n_samples, n_features)
            Training data.

        y : array-like of shape (n_samples,) or (n_samples, n_targets)
            Target values.

        **params : dict
            Parameters routed to the `score` method of the sub-estimator via
            the metadata routing API.

            .. versionadded:: 1.5

                Only available if
                `sklearn.set_config(enable_metadata_routing=True)` is set. See
                :ref:`Metadata Routing User Guide <metadata_routing>` for more
                details.

        Returns
        -------
        z : float
            Score of the prediction.
        FTr™   r8   )r   r    r   r   r   r@   ry   r8   )rN   r{   r|   re   Úscore_paramss        r2   r8   zRANSACRegressor.scoreŠ  sx   € ô: 	˜ÔÜØØØ#ØØô
ˆô 	˜& $¨Ô0ÜÔÜ*¨4°ÑC¸FÑC×MÑMÈgÑV‰LàˆLà$ˆt�‰×$Ñ$ Q¨Ñ:¨\Ñ:Ð:r4   c                 óì   — t        | ¬«      j                  | j                  t        «       j                  dd¬«      j                  dd¬«      j                  dd¬«      j                  dd¬«      ¬«      }|S )aj  Get metadata routing of this object.

        Please check :ref:`User Guide <metadata_routing>` on how the routing
        mechanism works.

        .. versionadded:: 1.5

        Returns
        -------
        routing : MetadataRouter
            A :class:`~sklearn.utils.metadata_routing.MetadataRouter` encapsulating
            routing information.
        )Úownerr7   )ÚcallerÚcalleer8   r9   )r@   Úmethod_mapping)r   Úaddr@   r   )rN   Úrouters     r2   Úget_metadata_routingz$RANSACRegressor.get_metadata_routing¸  si   € ô   dÔ+×/Ñ/Ø—n‘nÜ(›?ß‰S˜ eˆSÓ,ß‰S˜ gˆSÓ.ß‰S˜¨ˆSÓ0ß‰S˜	¨)ˆSÓ4ð 0ó 
ˆð ˆr4   c                 óÒ   •— t         ‰| �  «       }| j                  €d|j                  _        |S t        | j                  «      j                  j                  |j                  _        |S )NT)ÚsuperÚ__sklearn_tags__r@   Ú
input_tagsÚsparser   )rN   ÚtagsÚ	__class__s     €r2   r¨   z RANSACRegressor.__sklearn_tags__Ð  sU   ø€ Ü‰wÑ'Ó)ˆØ�>‰>Ð!Ø%)ˆD�O‰OÔ"ð ˆô &.¨d¯n©nÓ%=×%HÑ%H×%OÑ%OˆD�O‰OÔ"Øˆr4   rM   )rp   Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   rm   r   r(   r#   r   rJ   rg   Ú__annotations__rO   r	   r7   r9   r8   r¥   r¨   Ú__classcell__)r¬   s   @r2   r6   r6   Q   s”  ø… ñkñ\ !Ò!<Ó=¸tÐDá�X˜q $¨vÔ6Ù�Z  A¨fÔ5Øð
ñ
  (¨¨a°¸fÔEÀtÐLØ" DÐ)Ø# TÐ*á�X˜q $¨vÔ6Ù�D˜2Ÿ6™6˜(Ó#ð
ñ
 �X˜q $¨vÔ6Ù�D˜2Ÿ6™6˜(Ó#ð
ñ
 �X˜q $¨vÔ6Ù�D˜2Ÿ6™6˜(Ó#ð
ñ    d¨D¸Ô@ÐAÙ% d¨A¨q¸Ô@ÐAÙÐ-¨Ð?Ó@À(ÐKØ'Ð(ñ3$Ð˜Dó ð< ðð ØØØØØ—&‘&Ø—v‘vØ—6‘6ØØØôñ: à&+ôòYó	ðYòv,<ò\,;ò\÷0ð r4   r6   )/rw   Únumbersr   r   Únumpyr(   Úsklearn.baser   r   r   r   r	   r
   Úsklearn.exceptionsr   Úsklearn.linear_model._baser   Úsklearn.utilsr   r   r   Úsklearn.utils._bunchr   Úsklearn.utils._param_validationr   r   r   r   r   Úsklearn.utils.metadata_routingr   r   r   r   r   Úsklearn.utils.randomr   Úsklearn.utils.validationr   r   r   r   r    Úspacingr&   r3   r6   rb   r4   r2   Ú<module>r¾      s}   ðó ß "ã ÷÷ õ 2Ý 7ß OÑ OÝ &÷õ ÷õ õ <÷õ ð ˆ2�:‰:�a‹=€ò<ôDE
ØØØØõ	E
r4   