Ë
    ÜÍ:jõ¯  ã                   ó€  — d dl Z d dlmZmZ d dlmZmZ d dlZd dl	m
Z d dlmZmZmZ d dlmZmZ d dlmZ d dlmZ d dl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% d dl&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 g d¢Z8d„ Z9 G d„ dee¬«      Z: G d„ dee:e¬«      Z;d„ Z<	 	 	 	 	 dd„Z=y)é    N)ÚABCMetaÚabstractmethod)ÚIntegralÚReal)ÚBaseEstimatorÚClassifierMixinÚ_fit_context)ÚConvergenceWarningÚNotFittedError)ÚLabelEncoder)Ú
_liblinear)Ú_libsvm)Ú_libsvm_sparse)Úcheck_arrayÚcheck_random_stateÚcolumn_or_1dÚcompute_class_weightÚ
deprecated)ÚHiddenÚIntervalÚ
StrOptions)Ú_align_api_if_sparse)Úsafe_sparse_dot)ÚSCIPY_VERSION_BELOW_1_12)Úavailable_if)Ú_ovr_decision_functionÚcheck_classification_targets)Ú_check_large_sparseÚ_check_sample_weightÚ_num_samplesÚcheck_consistent_lengthÚcheck_is_fittedÚvalidate_data)Úc_svcÚnu_svcÚ	one_classÚepsilon_svrÚnu_svrc           	      ó  — | j                   d   dz   }g }t        j                  t        j                  dg|g«      «      }t	        |«      D ]½  }|||   ||dz      …dd…f   }t	        |dz   |«      D ]•  }|||   ||dz      …dd…f   }	t
        r*| |dz
  g||   ||dz      …f   }
| |g||   ||dz      …f   }n'| |dz
  ||   ||dz      …f   }
| |||   ||dz      …f   }|j                  t        |
|«      t        ||	«      z   «       Œ— Œ¿ |S )z�Generate primal coefficients from dual coefficients
    for the one-vs-one multi class LibSVM in the case
    of a linear kernel.r   é   N)ÚshapeÚnpÚcumsumÚhstackÚranger   Úappendr   )Ú	dual_coefÚ	n_supportÚsupport_vectorsÚn_classÚcoefÚsv_locsÚclass1Úsv1Úclass2Úsv2Úalpha1Úalpha2s               úf/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/sklearn/svm/_base.pyÚ_one_vs_one_coefr>   0   so  € ð �o‰o˜aÑ  1Ñ$€Gð €DÜ�i‰iœŸ	™	 A 3¨	Ð"2Ó3Ó4€GÜ˜“.ò Uˆà˜g f™o°¸À¹
Ñ0CÐCÂQÐFÑGˆÜ˜F Q™J¨Ó0ò 	UˆFà! '¨&¡/°G¸FÀQ¹JÑ4GÐ"GÊÐ"JÑKˆCå'à" F¨Q¡J <°¸±À7È6ÐTUÉ:ÑCVÐ1VÐ#VÑW�à" F 8¨W°V©_¸wÀvÐPQÁzÑ?RÐ-RÐ#RÑS‘ð # 6¨A¡:¨w°v©ÀÈÐRSÉÑATÐ/TÐ#TÑU�à" 6¨7°6©?¸WÀVÈaÁZÑ=PÐ+PÐ#PÑQ�ð �K‰Kœ¨°Ó4´ÀvÈsÓ7SÑSÕTñ!	UðUð( €Kó    c                   ó  ‡ — e Zd ZU dZ eh d£«      eg eeddd¬«      g eddh«       eed	dd¬«      g eeddd
¬«      g eed	dd
¬«      g eed	dd¬«      g eed	dd¬«      g eed	dd¬«      gdgd e	 edh«      «      g eeddd
¬«      g edh«      e
dgdg eeddd¬«      gdgdœZe
ed<   g d¢Zed„ «       Zˆ fd„Z ed¬«      d*d„«       Zd„ Zd„ Zd„ Zd„ Zd„ Zd „ Zd!„ Zd"„ Zd#„ Zd$„ Zd%„ Zd&„ Zed'„ «       Z d(„ Z!ed)„ «       Z"ˆ xZ#S )+Ú
BaseLibSVMzÉBase class for estimators that use libsvm as backing library.

    This implements support vector machine classification and regression.

    Parameter documentation is in the derived `SVC` class.
    >   ÚrbfÚpolyÚlinearÚsigmoidÚprecomputedr   NÚleft)ÚclosedÚscaleÚautoç        ÚneitherÚrightç      ð?Úbooleanr   ÚbalancedÚverboseéÿÿÿÿÚrandom_state©ÚkernelÚdegreeÚgammaÚcoef0ÚtolÚCÚnuÚepsilonÚ	shrinkingÚprobabilityÚ
cache_sizeÚclass_weightrQ   Úmax_iterrS   Ú_parameter_constraints)rD   rC   rB   rE   rF   c                 ó:  — | j                   t        vr t        dt        ›d| j                   ›d�«      ‚|| _        || _        || _        || _        || _        || _        || _	        || _
        |	| _        |
| _        || _        || _        || _        || _        || _        y )Nzimpl should be one of z, z
 was given)Ú_implÚLIBSVM_IMPLÚ
ValueErrorrU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   rQ   ra   rS   )ÚselfrU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   rQ   ra   rS   s                   r=   Ú__init__zBaseLibSVM.__init__{   s—   € ð& �:‰:œ[Ñ(ÝÞ<GÈÏËÐTóð ð ˆŒØˆŒØˆŒ
ØˆŒ
ØˆŒØˆŒØˆŒØˆŒØ"ˆŒØ&ˆÔØ$ˆŒØ(ˆÔØˆŒØ ˆŒØ(ˆÕr?   c                 óœ   •— t         ‰| �  «       }| j                  dk(  |j                  _        | j                  dk7  |j                  _        |S ©NrF   )ÚsuperÚ__sklearn_tags__rU   Ú
input_tagsÚpairwiseÚsparse©rg   ÚtagsÚ	__class__s     €r=   rl   zBaseLibSVM.__sklearn_tags__£   s?   ø€ Ü‰wÑ'Ó)ˆà#'§;¡;°-Ñ#?ˆ�‰Ô Ø!%§¡°Ñ!=ˆ�‰ÔØˆr?   T)Úprefer_skip_nested_validationc           	      ó”
  — t        | j                  «      }t        j                  |«      }|r| j                  dk(  rt        d«      ‚|xr t        | j                  «       | _        t        | j                  «      rt        ||«       n#t        | ||t        j                  ddd¬«      \  }}| j                  |«      }t        j                  |€g n|t        j                  ¬«      }t        j                  | j                   «      }| j"                  | _        | j                   dv rL| j                   d	k(  rd
}nd}| j"                  dk7  r"t'        j(                  d|› d|› d�t*        «       nd| _        t-        |«      }|dk7  r4||j.                  d   k7  r"t1        dd|›d|j.                  d   ›d�z   «      ‚| j                  dk(  rG||j.                  d   k7  r5t1        dj3                  |j.                  d   |j.                  d   «      «      ‚|j.                  d   dkD  r8|j.                  d   |k7  r&t1        d|j.                  ›d|j.                  ›d�«      ‚t        | j                  «      rdn| j                  }	|	dk(  rd| _        nât7        | j8                  t:        «      r�| j8                  dk(  rg|r3|j=                  |«      j?                  «       |j?                  «       dz  z
  n|jA                  «       }
|
dk7  rd|j.                  d   |
z  z  nd| _        nR| j8                  dk(  rCd|j.                  d   z  | _        n+t7        | j8                  tB        «      r| j8                  | _        | j                  r| jD                  n| jF                  }| jH                  rtK        dd ¬!«       |jM                  t        jN                  d"«      jP                  «      } ||||||	|¬#«       tS        |d$«      r|j.                  n|f| _*        | jV                  jY                  «       | _-        | j\                  | _/        | j                   dv r?ta        | jb                  «      dk(  r'| xjV                  d%z  c_+        | j\                   | _.        | j                  r| j^                  jd                  n| j^                  }t        jf                  | jZ                  «      ji                  «       }t        jf                  |«      ji                  «       }|r|st1        d&«      ‚| j                   dv r| jj                  | _6        | S | jj                  jo                  «       | _6        | S )'a�  Fit the SVM model according to the given training data.

        Parameters
        ----------
        X : {array-like, sparse matrix} of shape (n_samples, n_features)                 or (n_samples, n_samples)
            Training vectors, where `n_samples` is the number of samples
            and `n_features` is the number of features.
            For kernel="precomputed", the expected shape of X is
            (n_samples, n_samples).

        y : array-like of shape (n_samples,)
            Target values (class labels in classification, real numbers in
            regression).

        sample_weight : array-like of shape (n_samples,), default=None
            Per-sample weights. Rescale C per sample. Higher weights
            force the classifier to put more emphasis on these points.

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

        Notes
        -----
        If X and y are not C-ordered and contiguous arrays of np.float64 and
        X is not a sparse CSR format, X and/or y may be copied.

        If X is a dense array, then the other methods will not support sparse
        matrices as input.
        rF   z-Sparse precomputed kernels are not supported.rZ   ÚcsrF)ÚdtypeÚorderÚaccept_sparseÚaccept_large_sparse©rv   ©r$   r%   Únu_scvÚNuSVCÚSVCr   zsThe `probability` parameter was deprecated in 1.9 and will be removed in version 1.11. Use `CalibratedClassifierCV(z!(), ensemble=False)` instead of `z(probability=True)`é   r   z"X and y have incompatible shapes.
zX has z samples, but y has ú.r*   zDPrecomputed matrix must be a square matrix. Input is a {}x{} matrix.z.sample_weight and X have incompatible shapes: z vs zT
Note: Sparse matrices cannot be indexed w/boolean masks (use `indices=True` in CV).rK   rI   rN   rJ   z[LibSVM]Ú ©ÚendÚi)Úrandom_seedr+   rR   zxThe dual coefficients or intercepts are not finite. The input data may contain large values and need to be preprocessed.)8r   rS   ÚspÚissparserU   Ú	TypeErrorÚcallableÚ_sparser!   r#   r,   Úfloat64Ú_validate_targetsÚasarrayre   Úindexrd   r^   Ú_effective_probabilityÚwarningsÚwarnÚFutureWarningr    r+   rf   ÚformatÚ_gammaÚ
isinstancerW   ÚstrÚmultiplyÚmeanÚvarr   Ú_sparse_fitÚ
_dense_fitrQ   ÚprintÚrandintÚiinfoÚmaxÚhasattrÚ
shape_fit_Ú
intercept_ÚcopyÚ_intercept_Ú
dual_coef_Ú_dual_coef_ÚlenÚclasses_ÚdataÚisfiniteÚallÚ	_num_iterÚn_iter_Úitem)rg   ÚXÚyÚsample_weightÚrndro   Úsolver_typeÚest_depÚ	n_samplesrU   ÚX_varÚfitÚseedr1   Úintercept_finitenessÚdual_coef_finitenesss                   r=   r·   zBaseLibSVM.fitª   sr  € ôD ! ×!2Ñ!2Ó3ˆä—‘˜Q“ˆÙ�d—k‘k ]Ò2ÜÐKÓLÐLØÒ;¤h¨t¯{©{Ó&;Ð";ˆŒä�D—K‘KÔ Ü# A qÕ)ä ØØØÜ—j‘jØØ#Ø$)ô‰DˆAˆqð ×"Ñ" 1Ó%ˆäŸ
™
ØÐ'‰B¨]Ä"Ç*Á*ô
ˆô "×'Ñ'¨¯
©
Ó3ˆð '+×&6Ñ&6ˆÔ#Ø�:‰:Ð,Ñ,Ø�z‰z˜XÒ%Ø!‘à�Ø×Ñ <Ò/Ü—‘ð3à3:°)ð <#Ø#* )Ð+>ð@ô "õð /4�Ô+ô ! “Oˆ	Ø˜!Ò 	¨Q¯W©W°Q©ZÒ 7ÜÙ5Ú7@À!Ç'Á'È!Ã*ÐMñNóð ð
 �;‰;˜-Ò'¨I¸¿¹À¹Ò,CÜð,ß,2©F°1·7±7¸1±:¸q¿w¹wÀq¹zÓ,Jóð ð
 ×Ñ˜qÑ! AÒ%¨-×*=Ñ*=¸aÑ*@ÀIÒ*MÝð
 !×&Ó&¨¯«ð	1óð ô #+¨4¯;©;Ô"7‘¸T¿[¹[ˆà�]Ò"ð ˆD�KÜ˜Ÿ
™
¤CÔ(Ø�z‰z˜WÒ$áDJ˜Ÿ™ A›×,Ñ,Ó.°!·&±&³(¸q±Ò@ÐPQ×PUÑPUÓPW�Ø<AÀQºJ˜c Q§W¡W¨Q¡Z°%Ñ%7Ò8ÈC�•Ø—‘˜vÒ%Ø! A§G¡G¨A¡JÑ.�•Ü˜Ÿ
™
¤DÔ)ØŸ*™*ˆDŒKà"&§,¢,ˆd×Ò°D·O±OˆØ�<Š<Ü�* "Õ%à�{‰{œ2Ÿ8™8 C›=×,Ñ,Ó-ˆÙˆAˆq�- ¨fÀ$ÕGô &-¨Q°Ô%8˜!Ÿ'š'¸y¸lˆŒð
  Ÿ?™?×/Ñ/Ó1ˆÔØŸ?™?ˆÔØ�:‰:Ð,Ñ,´°T·]±]Ó1CÀqÒ1HØ�OŠO˜rÑ!�OØ#Ÿ™Ð.ˆDŒOà-1¯\ª\�D×$Ñ$×)Ò)¸t×?OÑ?Oˆ	Ü!Ÿ{™{¨4×+;Ñ+;Ó<×@Ñ@ÓBÐÜ!Ÿ{™{¨9Ó5×9Ñ9Ó;ÐÙ$Ñ)=Üð!óð ð �:‰:Ð,Ñ,ØŸ>™>ˆDŒLð ˆð  Ÿ>™>×.Ñ.Ó0ˆDŒLàˆr?   c                 óZ   — t        |d¬«      j                  t        j                  d¬«      S )zxValidation of y and class_weight.

        Default implementation for SVR and one-class; overridden in BaseSVC.
        T©r‘   F)r£   )r   Úastyper,   r‹   )rg   r°   s     r=   rŒ   zBaseLibSVM._validate_targetsJ  s%   € ô
 ˜A DÔ)×0Ñ0´·±À%Ð0ÓHÐHr?   c                 ó’   — | j                   dv sJ ‚| j                   dk(  r(t        j                  d| j                  z  t        «       y y )N©r   r*   r*   znSolver terminated early (max_iter=%i).  Consider pre-processing your data with StandardScaler or MinMaxScaler.)Úfit_status_r�   r‘   ra   r
   ©rg   s    r=   Ú_warn_from_fit_statusz BaseLibSVM._warn_from_fit_statusQ  sL   € Ø×Ñ 6Ñ)Ð)Ð)Ø×Ñ˜qÒ Ü�M‰Mð3à59·]±]ñCô #õ	ð !r?   c                 ó   — t        | j                  «      rB|| _        | j                  |«      }|j                  d   |j                  d   k7  rt        d«      ‚t        j                  | j                  «       t        j                  ||fi d|“d|“dt        | dt        j                  d«      «      “d|“d	| j                  “d
| j                  “d| j                  “d| j                   “d| j"                  “d| j$                  “d| j&                  “d| j(                  “d| j*                  “d| j,                  “d| j.                  “d|“Ž\	  | _        | _        | _        | _        | _        | _        | _        | _        | _         | jC                  «        y )Nr   r*   z(X.shape[0] should be equal to X.shape[1]Úsvm_typer±   r`   Úclass_weight_rU   rZ   r[   r^   rV   r]   rY   r_   rX   rW   r\   ra   r…   )"r‰   rU   Ú_BaseLibSVM__XfitÚ_compute_kernelr+   rf   ÚlibsvmÚset_verbosity_wraprQ   r·   Úgetattrr,   ÚemptyrZ   r[   r�   rV   r]   rY   r_   rX   r”   r\   ra   Úsupport_Úsupport_vectors_Ú
_n_supportr¥   r¢   Ú_probAÚ_probBrÀ   r¬   rÂ   )rg   r¯   r°   r±   r³   rU   r…   s          r=   r›   zBaseLibSVM._dense_fit[  s’  € Ü�D—K‘KÔ ð ˆDŒKØ×$Ñ$ QÓ'ˆAà�w‰w�q‰z˜QŸW™W Q™ZÒ'Ü Ð!KÓLÐLä×!Ñ! $§,¡,Ô/ô �J‰JØØò
ñ !ð
ñ (ð	
ô
 !  ¼¿¹À»ÔDð
ñ ð
ð �fŠfð
ð �wŠwð
ð ×3Ò3ð
ð —;’;ð
ð —n’nð
ð —’ð
ð —’ð
ð —*’*ð
ð —+’+ð
ð  —L’Lð!
ð" —]’]ð#
ñ$ $ð%
ñ
	
ØŒMØÔ!ØŒOØŒOØŒOØŒKØŒKØÔØŒNð, 	×"Ñ"Õ$r?   c                 ó>  — t        j                  |j                  t         j                  d¬«      |_        |j	                  «        | j
                  j                  |«      }t        j                  | j                  «       t        j                  |j                  d   |j                  |j                  |j                  |||| j                  | j                  | j                   | j"                  | j$                  t'        | dt        j(                  d«      «      || j*                  | j,                  | j.                  t1        | j2                  «      t1        | j4                  «      | j6                  |«      \	  | _        | _        }| _        | _        | _         | _!        | _"        | _#        | jI                  «        tK        | d«      rtM        | jN                  «      dz
  }	nd}	| j:                  j                  d   }
t        jP                  t        jR                  |
«      |	«      }|
s%tU        tW        jX                  g g«      «      | _-        y t        jR                  d|j\                  dz   |j\                  |	z  «      }tU        tW        jX                  |||f|	|
f«      «      | _-        y )NrZ   ©rv   rw   r*   rÅ   r   r¨   )/r,   r�   r©   r‹   Úsort_indicesÚ_sparse_kernelsrŽ   Úlibsvm_sparserÉ   rQ   Úlibsvm_sparse_trainr+   ÚindicesÚindptrrV   r”   rX   rY   rZ   rÊ   rË   r[   r_   r\   Úintr]   r�   ra   rÌ   rÍ   r¢   rÎ   rÏ   rÐ   rÀ   r¬   rÂ   r    r§   r¨   ÚtileÚaranger   r†   Ú	csr_arrayr¥   Úsize)rg   r¯   r°   r±   r³   rU   r…   Úkernel_typeÚdual_coef_datar4   Ún_SVÚdual_coef_indicesÚdual_coef_indptrs                r=   rš   zBaseLibSVM._sparse_fitŠ  s  € Ü—‘˜AŸF™F¬"¯*©*¸CÔ@ˆŒØ	�‰Ôà×*Ñ*×0Ñ0°Ó8ˆä×(Ñ(¨¯©Ô6ô ×-Ñ-Ø�G‰G�A‰JØ�F‰FØ�I‰IØ�H‰HØØØØ�K‰KØ�K‰KØ�J‰JØ�H‰HØ�F‰FÜ�D˜/¬2¯8©8°A«;Ó7ØØ�G‰GØ�O‰OØ�L‰LÜ�—‘ÓÜ�×+Ñ+Ó,Ø�M‰MØó+
ñ
	
ØŒMØÔ!ØØŒOØŒOØŒKØŒKØÔØŒNð2 	×"Ñ"Ô$ä�4˜Ô$Ü˜$Ÿ-™-Ó(¨1Ñ,‰GàˆGØ×$Ñ$×*Ñ*¨1Ñ-ˆäŸG™G¤B§I¡I¨d£O°WÓ=ÐÙÜ2´2·<±<ÀÀÓ3EÓFˆD�Oä!Ÿy™yØÐ$×)Ñ)¨AÑ-Ð/@×/EÑ/EÈÑ/Oó Ðô 3Ü—‘Ø#Ð%6Ð8HÐIØ˜d�OóóˆD�Or?   c                 ó|   — | j                  |«      }| j                  r| j                  n| j                  } ||«      S )aÇ  Perform regression on samples in X.

        For a one-class model, +1 (inlier) or -1 (outlier) is returned.

        Parameters
        ----------
        X : {array-like, sparse matrix} of shape (n_samples, n_features)
            For kernel="precomputed", the expected shape of X is
            (n_samples_test, n_samples_train).

        Returns
        -------
        y_pred : ndarray of shape (n_samples,)
            The predicted values.
        )Ú_validate_for_predictrŠ   Ú_sparse_predictÚ_dense_predict)rg   r¯   Úpredicts      r=   rç   zBaseLibSVM.predictÊ  s7   € ð  ×&Ñ& qÓ)ˆØ*.¯,ª,�$×&Ò&¸D×<OÑ<OˆÙ�q‹zÐr?   c                 ó–  — | j                  |«      }|j                  dk(  rt        |dd¬«      }| j                  }t	        | j                  «      rKd}|j
                  d   | j                  d   k7  r*t        d|j
                  d   | j                  d   fz  «      ‚t        j                  | j                  «      }t        j                  || j                  | j                  | j                  | j                   | j"                  | j$                  | j&                  ||| j(                  | j*                  | j,                  | j.                  ¬«      S )	Nr*   rZ   F)rw   ry   rF   r   úMX.shape[1] = %d should be equal to %d, the number of samples at training time)rÄ   rU   rV   rX   rW   r_   )rÇ   Úndimr   rU   r‰   r+   r¡   rf   re   rŽ   rd   rÈ   rç   rÌ   rÍ   rÎ   r¦   r¤   rÏ   rÐ   rV   rX   r”   r_   )rg   r¯   rU   rÄ   s       r=   ræ   zBaseLibSVM._dense_predictÞ  s  € Ø× Ñ  Ó#ˆØ�6‰6�QŠ;Ü˜A S¸eÔDˆAà—‘ˆÜ�D—K‘KÔ Ø"ˆFØ�w‰w�q‰z˜TŸ_™_¨QÑ/Ò/Ü ð=à—w‘w˜q‘z 4§?¡?°1Ñ#5Ð6ñ7óð ô ×$Ñ$ T§Z¡ZÓ0ˆä�~‰~ØØ�M‰MØ×!Ñ!Ø�O‰OØ×ÑØ×ÑØ�K‰KØ�K‰KØØØ—;‘;Ø—*‘*Ø—+‘+Ø—‘ô
ð 	
r?   c                 ó  — | j                   }t        |«      rd}| j                  j                  |«      }d}t	        j
                  |j                  |j                  |j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  t        j                  | j                  «      || j                  | j                  | j                   | j"                  |t%        | dt'        j(                  d«      «      | j*                  | j,                  | j.                  | j0                  | j2                  | j4                  | j6                  «      S )NrF   rK   rÅ   r   )rU   r‰   rÔ   rŽ   rÕ   Úlibsvm_sparse_predictr©   r×   rØ   rÍ   r¦   r¤   re   rd   rV   r”   rX   rY   rÊ   r,   rË   r[   r\   r]   r�   rÎ   rÏ   rÐ   )rg   r¯   rU   rÞ   rZ   s        r=   rå   zBaseLibSVM._sparse_predict   s  € à—‘ˆÜ�FÔØ"ˆFà×*Ñ*×0Ñ0°Ó8ˆàˆä×2Ñ2Ø�F‰FØ�I‰IØ�H‰HØ×!Ñ!×&Ñ&Ø×!Ñ!×)Ñ)Ø×!Ñ!×(Ñ(Ø×Ñ×!Ñ!Ø×ÑÜ×Ñ˜dŸj™jÓ)ØØ�K‰KØ�K‰KØ�J‰JØ�H‰HØÜ�D˜/¬2¯8©8°A«;Ó7Ø�G‰GØ�L‰LØ�N‰NØ×'Ñ'Ø�O‰OØ�K‰KØ�K‰Kó/
ð 	
r?   c                 óþ   — t        | j                  «      rg| j                  || j                  «      }t        j                  |«      r|j                  «       }t        j                  |t        j                  d¬«      }|S )z0Return the data transformed by a callable kernelrZ   rÒ   )	r‰   rU   rÆ   r†   r‡   Útoarrayr,   r�   r‹   ©rg   r¯   rU   s      r=   rÇ   zBaseLibSVM._compute_kernel$  sW   € ä�D—K‘KÔ ð —[‘[  D§K¡KÓ0ˆFÜ�{‰{˜6Ô"ØŸ™Ó)�Ü—
‘
˜6¬¯©¸3Ô?ˆAØˆr?   c                 ó  — | j                  |«      }| j                  |«      }| j                  r| j                  |«      }n| j	                  |«      }| j
                  dv r)t        | j                  «      dk(  r|j                  «        S |S )af  Evaluates the decision function for the samples in X.

        Parameters
        ----------
        X : array-like of shape (n_samples, n_features)

        Returns
        -------
        X : array-like of shape (n_samples, n_class * (n_class-1) / 2)
            Returns the decision function of the sample for each class
            in the model.
        r{   r   )	rä   rÇ   rŠ   Ú_sparse_decision_functionÚ_dense_decision_functionrd   r§   r¨   Úravel)rg   r¯   Údec_funcs      r=   Ú_decision_functionzBaseLibSVM._decision_function/  s   € ð ×&Ñ& qÓ)ˆØ× Ñ  Ó#ˆà�<Š<Ø×5Ñ5°aÓ8‰Hà×4Ñ4°QÓ7ˆHð �:‰:Ð,Ñ,´°T·]±]Ó1CÀqÒ1HØ—N‘NÓ$Ð$Ð$àˆr?   c                 óÊ  — t        |t        j                  dd¬«      }| j                  }t	        |«      rd}t        j                  || j                  | j                  | j                  | j                  | j                  | j                  | j                  t        j                  | j                   «      || j"                  | j$                  | j&                  | j(                  ¬«      S )NrZ   F)rv   rw   ry   rF   ©rÄ   rU   rV   r_   rX   rW   )r   r,   r‹   rU   r‰   rÈ   Údecision_functionrÌ   rÍ   rÎ   r¦   r¤   rÏ   rÐ   re   rŽ   rd   rV   r_   rX   r”   rï   s      r=   rò   z#BaseLibSVM._dense_decision_functionM  sª   € Ü˜¤§¡°3ÈEÔRˆà—‘ˆÜ�FÔØ"ˆFä×'Ñ'ØØ�M‰MØ×!Ñ!Ø�O‰OØ×ÑØ×ÑØ�K‰KØ�K‰KÜ ×&Ñ& t§z¡zÓ2ØØ—;‘;Ø—‘Ø—*‘*Ø—+‘+ô
ð 	
r?   c                 ó‚  — t        j                  |j                  t         j                  d¬«      |_        | j                  }t        |d«      rd}| j                  j                  |«      }t        j                  |j                  |j                  |j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  t        j                  | j                   «      || j"                  | j$                  | j&                  | j(                  | j*                  t-        | dt        j.                  d«      «      | j0                  | j2                  | j4                  | j6                  | j8                  | j:                  | j<                  «      S )NrZ   rÒ   Ú__call__rF   rÅ   r   )r,   r�   r©   r‹   rU   r    rÔ   rŽ   rÕ   Úlibsvm_sparse_decision_functionr×   rØ   rÍ   r¦   r¤   re   rd   rV   r”   rX   rY   rZ   rÊ   rË   r[   r\   r]   r�   rÎ   rÏ   rÐ   ©rg   r¯   rU   rÞ   s       r=   rñ   z$BaseLibSVM._sparse_decision_functione  s8  € Ü—‘˜AŸF™F¬"¯*©*¸CÔ@ˆŒà—‘ˆÜ�6˜:Ô&Ø"ˆFà×*Ñ*×0Ñ0°Ó8ˆä×<Ñ<Ø�F‰FØ�I‰IØ�H‰HØ×!Ñ!×&Ñ&Ø×!Ñ!×)Ñ)Ø×!Ñ!×(Ñ(Ø×Ñ×!Ñ!Ø×ÑÜ×Ñ˜dŸj™jÓ)ØØ�K‰KØ�K‰KØ�J‰JØ�H‰HØ�F‰FÜ�D˜/¬2¯8©8°A«;Ó7Ø�G‰GØ�L‰LØ�N‰NØ×'Ñ'Ø�O‰OØ�K‰KØ�K‰Kó/
ð 	
r?   c           	      ój  — t        | «       t        | j                  «      s t        | |dt        j
                  ddd¬«      }| j                  rCt        j                  |«      st        t        j                  |«      «      }|j                  «        t        j                  |«      rB| j                  s6t        | j                  «      s!t        dt        | «      j                  z  «      ‚| j                  dk(  rI|j                  d   | j                   d   k7  r*t        d	|j                  d   | j                   d   fz  «      ‚| j"                  }| j                  s\|j$                  dkD  rM| j&                  j)                  «       |j                  d   k7  r#t        d
| j*                  j                  › d�«      ‚|S )Nru   rZ   F)rx   rv   rw   ry   Úresetz3cannot use sparse input in %r trained on dense datarF   r*   r   ré   zThe internal representation of z was altered)r"   r‰   rU   r#   r,   r‹   rŠ   r†   r‡   r   rÜ   rÓ   rf   ÚtypeÚ__name__r+   r¡   rÍ   rÝ   Ú
n_support_Úsumrr   )rg   r¯   Úsvs      r=   rä   z BaseLibSVM._validate_for_predictˆ  sd  € Ü˜Ôä˜Ÿ™Ô$ÜØØØ#Ü—j‘jØØ$)ØôˆAð �<Š<Ü—;‘;˜q”>Ü(¬¯©°a«Ó9�Ø�N‰NÔä�;‰;�qŒ> $§,¢,´xÀÇÁÔ7LÜØEÜ�t“*×%Ñ%ñ&óð ð
 �;‰;˜-Ò'Ø�w‰w�q‰z˜TŸ_™_¨QÑ/Ò/Ü ð=à—w‘w˜q‘z 4§?¡?°1Ñ#5Ð6ñ7óð ð ×"Ñ"ˆØ�|Š| §¡¨!¢°·±×0CÑ0CÓ0EÈÏÉÐRSÉÒ0TÜØ1°$·.±.×2IÑ2IÐ1JÈ,ÐWóð ð ˆr?   c                 óà   — | j                   dk7  rt        d«      ‚| j                  «       }t        j                  |«      rd|j
                  j                  _        |S d|j                  _        |S )z“Weights assigned to the features when `kernel="linear"`.

        Returns
        -------
        ndarray of shape (n_features, n_classes)
        rD   z2coef_ is only available when using a linear kernelF)rU   ÚAttributeErrorÚ	_get_coefr†   r‡   r©   ÚflagsÚ	writeable©rg   r5   s     r=   Úcoef_zBaseLibSVM.coef_±  s`   € ð �;‰;˜(Ò"Ü Ð!UÓVÐVà�~‰~Óˆô �;‰;�tÔà(-ˆD�I‰I�O‰OÔ%ð ˆð $)ˆD�J‰JÔ Øˆr?   c                 óB   — t        | j                  | j                  «      S ©N)r   r¦   rÍ   rÁ   s    r=   r  zBaseLibSVM._get_coefÈ  s   € Ü˜t×/Ñ/°×1FÑ1FÓGÐGr?   c                 óä   — 	 t        | «       t        j	                  | j
                  «      }|dv r| j                  S t        j                  | j                  d   g«      S # t        $ r t        ‚w xY w)z)Number of support vectors for each class.r¿   r   )	r"   r   r  re   rŽ   rd   rÎ   r,   Úarray)rg   rÄ   s     r=   r  zBaseLibSVM.n_support_Ë  sk   € ð	!Ü˜DÔ!ô ×$Ñ$ T§Z¡ZÓ0ˆØ�vÑØ—?‘?Ð"ô —8‘8˜TŸ_™_¨QÑ/Ð0Ó1Ð1øô ò 	!Ü Ð ð	!ús   ‚A ÁA/r  )$r   Ú
__module__Ú__qualname__Ú__doc__r   r‰   r   r   r   r   Údictrb   Ú__annotations__rÔ   r   rh   rl   r	   r·   rŒ   rÂ   r›   rš   rç   ræ   rå   rÇ   rõ   rò   rñ   rä   Úpropertyr
  r  r  Ú__classcell__©rr   s   @r=   rA   rA   V   s¸  ø… ññ ÒJÓKØð
ñ ˜H a¨°fÔ=Ð>á˜ Ð(Ó)Ù�T˜3 ¨VÔ4ð
ñ ˜4  t°IÔ>Ð?Ù˜˜s D°Ô;Ð<Ù�t˜S $¨wÔ7Ð8Ù˜˜c 3¨wÔ7Ð8Ù˜T 3¨°VÔ<Ð=Ø�[Ø!¡6©*°l°^Ó*DÓ#EÐFÙ  a¨°iÔ@ÐAÙ# Z LÓ1°4¸Ð>Ø�;Ù˜h¨¨D¸Ô@ÐAØ'Ð(ñ+$Ð˜Dó ò6 J€Oàñ%)ó ð%)ôNñ °Ô5ò]ó 6ð]ò~Iòò-%ò^>ò@ò( 
òD"
òH	òò<
ò0!
òF'ðR ñó ðò,Hð ñ2ó ô2r?   rA   )Ú	metaclassc                   ó^  ‡ — e Zd ZU dZi ej
                  ¥ eddh«      gdgdœ¥Zeed<   dD ]  Z	ej                  e	«       Œ eˆ fd„«       Zd	„ Zd
„ Zˆ fd„Zd„ Z ee«      d„ «       Z ee«      d„ «       Zd„ Zd„ Zd„ Z ed«      ed„ «       «       Z ed«      ed„ «       «       Zˆ fd„Zˆ xZS )ÚBaseSVCz!ABC for LibSVM-based classifiers.ÚovrÚovorO   )Údecision_function_shapeÚ
break_tiesrb   )r\   r[   c                 ó^   •— || _         || _        t        ‰| �  |||||||d||	|
||||¬«       y )NrK   rT   )r  r  rk   rh   )rg   rU   rV   rW   rX   rY   rZ   r[   r]   r^   r_   r`   rQ   ra   r  rS   r  rr   s                    €r=   rh   zBaseSVC.__init__ç  sS   ø€ ð( (?ˆÔ$Ø$ˆŒÜ‰ÑØØØØØØØØØØ#Ø!Ø%ØØØ%ð 	õ 	
r?   c                 óD  — t        |d¬«      }t        |«       t        j                  |d¬«      \  }}t	        | j
                  ||¬«      | _        t        |«      dk  rt        dt        |«      z  «      ‚|| _	        t        j                  |t        j                  d¬«      S )	NTr¼   )Úreturn_inverse)Úclassesr°   r   z>The number of classes has to be greater than one; got %d classrZ   rÒ   )r   r   r,   Úuniquer   r`   rÅ   r§   rf   r¨   r�   r‹   )rg   r°   Úy_Úclss       r=   rŒ   zBaseSVC._validate_targets  s‰   € Ü˜! $Ô'ˆÜ$ QÔ'Ü—‘˜2¨dÔ3‰ˆˆQÜ1°$×2CÑ2CÈSÐTVÔWˆÔÜˆs‹8�aŠ<ÜØPÜ�c“(ñóð ð
 ˆŒä�z‰z˜!¤2§:¡:°SÔ9Ð9r?   c                 ó¾   — | j                  |«      }| j                  dk(  r<t        | j                  «      dkD  r$t	        |dk  | t        | j                  «      «      S |S )a4  Evaluate the decision function for the samples in X.

        Parameters
        ----------
        X : array-like of shape (n_samples, n_features)
            The input samples.

        Returns
        -------
        X : ndarray of shape (n_samples, n_classes * (n_classes-1) / 2)
            Returns the decision function of the sample for each class
            in the model.
            If decision_function_shape='ovr', the shape is (n_samples,
            n_classes).

        Notes
        -----
        If decision_function_shape='ovo', the function values are proportional
        to the distance of the samples X to the separating hyperplane. If the
        exact distances are required, divide the function values by the norm of
        the weight vector (``coef_``). See also `this question
        <https://stats.stackexchange.com/questions/14876/
        interpreting-distance-from-hyperplane-in-svm>`_ for further details.
        If decision_function_shape='ovr', the decision function is a monotonic
        transformation of ovo decision function.
        r  r   r   )rõ   r  r§   r¨   r   )rg   r¯   Údecs      r=   rø   zBaseSVC.decision_function  sU   € ð6 ×%Ñ% aÓ(ˆØ×'Ñ'¨5Ò0´S¸¿¹Ó5GÈ!Ò5KÜ)¨#°©'°C°4¼¸T¿]¹]Ó9KÓLÐLØˆ
r?   c                 ó´  •— t        | «       | j                  r| j                  dk(  rt        d«      ‚| j                  rN| j                  dk(  r?t	        | j
                  «      dkD  r't        j                  | j                  |«      d¬«      }nt        ‰| �)  |«      }| j
                  j                  t        j                  |t        j                  ¬«      «      S )aö  Perform classification on samples in X.

        For a one-class model, +1 or -1 is returned.

        Parameters
        ----------
        X : {array-like, sparse matrix} of shape (n_samples, n_features) or                 (n_samples_test, n_samples_train)
            For kernel="precomputed", the expected shape of X is
            (n_samples_test, n_samples_train).

        Returns
        -------
        y_pred : ndarray of shape (n_samples,)
            Class labels for samples in X.
        r  z>break_ties must be False when decision_function_shape is 'ovo'r  r   r*   )Úaxisrz   )r"   r  r  rf   r§   r¨   r,   Úargmaxrø   rk   rç   Útaker�   Úintp)rg   r¯   r°   rr   s      €r=   rç   zBaseSVC.predict>  s¦   ø€ ô" 	˜ÔØ�?Š?˜t×;Ñ;¸uÒDÜØPóð ð
 �OŠOØ×,Ñ,°Ò5Ü�D—M‘MÓ" QÒ&ä—	‘	˜$×0Ñ0°Ó3¸!Ô<‰Aä‘‘ Ó"ˆAØ�}‰}×!Ñ!¤"§*¡*¨Q´b·g±gÔ">Ó?Ð?r?   c                 ó‚   — | j                   dk(  s| j                   st        d«      ‚| j                  dvrt        d«      ‚y)Nr   z5predict_proba is not available when probability=Falser{   z0predict_proba only implemented for SVC and NuSVCT)r^   r  rd   rÁ   s    r=   Ú_check_probazBaseSVC._check_probac  sF   € Ø×Ñ˜|Ò+°4×3CÒ3CÜ ØGóð ð �:‰:Ð0Ñ0Ü Ð!SÓTÐTØr?   c                 óö   — | j                  |«      }| j                  j                  dk(  s| j                  j                  dk(  rt	        d«      ‚| j
                  r| j                  n| j                  } ||«      S )aÄ  Compute probabilities of possible outcomes for samples in X.

        The model needs to have probability information computed at training
        time: fit with attribute `probability` set to True.

        Parameters
        ----------
        X : array-like of shape (n_samples, n_features)
            For kernel="precomputed", the expected shape of X is
            (n_samples_test, n_samples_train).

        Returns
        -------
        T : ndarray of shape (n_samples, n_classes)
            Returns the probability of the sample for each class in
            the model. The columns correspond to the classes in sorted
            order, as they appear in the attribute :term:`classes_`.

        Notes
        -----
        The probability model is created using cross validation, so
        the results can be slightly different than those obtained by
        predict. Also, it will produce meaningless results on very small
        datasets.
        r   zApredict_proba is not available when fitted with probability=False)rä   rÏ   rÝ   rÐ   r   rŠ   Ú_sparse_predict_probaÚ_dense_predict_proba)rg   r¯   Ú
pred_probas      r=   Úpredict_probazBaseSVC.predict_probal  sq   € ð6 ×&Ñ& qÓ)ˆØ�;‰;×Ñ˜qÒ  D§K¡K×$4Ñ$4¸Ò$9Ü ØSóð ð +/¯,ª,ˆD×&Ò&¸D×<UÑ<Uð 	ñ ˜!‹}Ðr?   c                 óJ   — t        j                  | j                  |«      «      S )a  Compute log probabilities of possible outcomes for samples in X.

        The model need to have probability information computed at training
        time: fit with attribute `probability` set to True.

        Parameters
        ----------
        X : array-like of shape (n_samples, n_features) or                 (n_samples_test, n_samples_train)
            For kernel="precomputed", the expected shape of X is
            (n_samples_test, n_samples_train).

        Returns
        -------
        T : ndarray of shape (n_samples, n_classes)
            Returns the log-probabilities of the sample for each class in
            the model. The columns correspond to the classes in sorted
            order, as they appear in the attribute :term:`classes_`.

        Notes
        -----
        The probability model is created using cross validation, so
        the results can be slightly different than those obtained by
        predict. Also, it will produce meaningless results on very small
        datasets.
        )r,   Úlogr2  )rg   r¯   s     r=   Úpredict_log_probazBaseSVC.predict_log_proba‘  s   € ô8 �v‰v�d×(Ñ(¨Ó+Ó,Ð,r?   c                 óº  — | j                  |«      }| j                  }t        |«      rd}t        j	                  | j
                  «      }t        j                  || j                  | j                  | j                  | j                  | j                  | j                  | j                  ||| j                  | j                   | j"                  | j$                  ¬«      }|S )NrF   r÷   )rÇ   rU   r‰   re   rŽ   rd   rÈ   r2  rÌ   rÍ   rÎ   r¦   r¤   rÏ   rÐ   rV   r_   rX   r”   )rg   r¯   rU   rÄ   Úpprobs        r=   r0  zBaseSVC._dense_predict_proba¯  s¯   € Ø× Ñ  Ó#ˆà—‘ˆÜ�FÔØ"ˆFä×$Ñ$ T§Z¡ZÓ0ˆÜ×$Ñ$ØØ�M‰MØ×!Ñ!Ø�O‰OØ×ÑØ×ÑØ�K‰KØ�K‰KØØØ—;‘;Ø—‘Ø—*‘*Ø—+‘+ô
ˆð" ˆr?   c                 ó€  — t        j                  |j                  t         j                  d¬«      |_        | j                  }t        |«      rd}| j                  j                  |«      }t        j                  |j                  |j                  |j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  t        j                  | j                   «      || j"                  | j$                  | j&                  | j(                  | j*                  t-        | dt        j.                  d«      «      | j0                  | j2                  | j4                  | j6                  | j8                  | j:                  | j<                  «      S )NrZ   rÒ   rF   rÅ   r   )r,   r�   r©   r‹   rU   r‰   rÔ   rŽ   rÕ   Úlibsvm_sparse_predict_probar×   rØ   rÍ   r¦   r¤   re   rd   rV   r”   rX   rY   rZ   rÊ   rË   r[   r\   r]   r�   rÎ   rÏ   rÐ   rü   s       r=   r/  zBaseSVC._sparse_predict_probaÊ  s6  € Ü—‘˜AŸF™F¬"¯*©*¸CÔ@ˆŒà—‘ˆÜ�FÔØ"ˆFà×*Ñ*×0Ñ0°Ó8ˆä×8Ñ8Ø�F‰FØ�I‰IØ�H‰HØ×!Ñ!×&Ñ&Ø×!Ñ!×)Ñ)Ø×!Ñ!×(Ñ(Ø×Ñ×!Ñ!Ø×ÑÜ×Ñ˜dŸj™jÓ)ØØ�K‰KØ�K‰KØ�J‰JØ�H‰HØ�F‰FÜ�D˜/¬2¯8©8°A«;Ó7Ø�G‰GØ�L‰LØ�N‰NØ×'Ñ'Ø�O‰OØ�K‰KØ�K‰Kó/
ð 	
r?   c                 ó|  — | j                   j                  d   dk(  r"t        | j                   | j                  «      }|S t	        | j                   | j
                  | j                  «      }t        j                  |d   «      r%t        j                  |«      j                  «       }|S t        j                  |«      }|S )Nr   r*   )r¥   r+   r   rÍ   r>   rÎ   r†   r‡   ÚvstackÚtocsrr,   r	  s     r=   r  zBaseSVC._get_coefí  sš   € Ø�?‰?× Ñ  Ñ# qÒ(ä" 4§?¡?°D×4IÑ4IÓJˆDð ˆô $Ø—‘ §¡°$×2GÑ2GóˆDô �{‰{˜4 ™7Ô#Ü—y‘y “×,Ñ,Ó.�ð ˆô —y‘y “�àˆr?   z«Attribute `probA_` was deprecated in version 1.9 and will be removed in 1.11 as the `probability=True` option for SVC and NuSVC was deprecated and will be removed in 1.11.c                 ó   — | j                   S ©z¡Parameter learned in Platt scaling when `probability=True`.

        Returns
        -------
        ndarray of shape  (n_classes * (n_classes - 1) / 2)
        )rÏ   rÁ   s    r=   ÚprobA_zBaseSVC.probA_ý  ó   € ð �{‰{Ðr?   z«Attribute `probB_` was deprecated in version 1.9 and will be removed in 1.11 as the `probability=True` option for SVC and NuSVC was deprecated and will be removed in 1.11.c                 ó   — | j                   S r>  )rÐ   rÁ   s    r=   ÚprobB_zBaseSVC.probB_  r@  r?   c                 ó`   •— t         ‰| �  «       }| j                  dk7  |j                  _        |S rj   )rk   rl   rU   rm   ro   rp   s     €r=   rl   zBaseSVC.__sklearn_tags__  s*   ø€ Ü‰wÑ'Ó)ˆØ!%§¡°Ñ!=ˆ�‰ÔØˆr?   )r   r  r  r  rA   rb   r   r  r  Úunused_paramÚpopr   rh   rŒ   rø   rç   r-  r   r2  r5  r0  r/  r  r   r  r?  rB  rl   r  r  s   @r=   r  r  Ü  s$  ø… Ù+ð$Ø
×
+Ñ
+ð$á$.°°u¨~Ó$>Ð#?Ø �kò$Ð˜Dó ð
 *ò 1ˆØ×"Ñ" <Õ0ð1ð ó%
ó ð%
òN:òô@@òJñ �,Óñ"ó  ð"ñH �,Óñ-ó  ð-ò:ò6!
òFñ  ð	'óð
 ñó óðñ ð	'óð
 ñó óð÷ð r?   r  c           
      ój  — ddidddœdœddd	iidd
idddœdœdddiiddddœiddœ}| dk(  r||    S | dk7  rt        d| z  «      ‚|j                  |d«      }|€d|z  }n@|j                  |d«      }|€
d|›d|›d�}n"|j                  |d«      }|€d|›d|›d|›�}n|S t        d|›d|›d|›d|›�«      ‚)a  Find the liblinear magic number for the solver.

    This number depends on the values of the following attributes:
      - multi_class
      - penalty
      - loss
      - dual

    The same number is also internally used by LibLinear to determine
    which solver to use.
    Fé   r   é   )FT)Úl1Úl2rJ  Té   é   r   r*   é   é   é   é   )Úlogistic_regressionÚhingeÚsquared_hingeÚepsilon_insensitiveÚsquared_epsilon_insensitiveÚcrammer_singerrV  r  z<`multi_class` must be one of `ovr`, `crammer_singer`, got %rNzloss='%s' is not supportedzThe combination of penalty='z' and loss='z' is not supportedz' are not supported when dual=zUnsupported set of arguments: z, Parameters: penalty=z, loss=z, dual=)rf   Úget)	Úmulti_classÚpenaltyÚlossÚdualÚ_solver_type_dictÚ_solver_penÚerror_stringÚ_solver_dualÚ
solver_nums	            r=   Ú_get_liblinear_solver_typera  !  s(  € ð" (-¨a jÀÈÑ8KÑLØ˜˜q˜	Ð"Ø!&¨ 
¸!À1Ñ2EÑFØ $ t¨R jÐ1Ø(,°bÀÑ.CÐ'DØñÐð Ð&Ò&Ø  Ñ-Ð-Ø	˜Ò	ÜØJÈ[ÑXó
ð 	
ð $×'Ñ'¨¨dÓ3€KØÐØ3°dÑ:‰à"—‘ w°Ó5ˆØÑò šDð"ñ ð
 &×)Ñ)¨$°Ó5ˆJØÑ!ò CJÊ4ÑQUðWñ ð
 "Ð!Ý
âš¢$©ð	.óð r?   c                 ó˜  — |dvrVt        «       }|j                  |«      }|j                  }t        |«      dk  rt	        d|d   z  «      ‚t        ||||¬«      }n't        j                  dt        j                  ¬«      }|}t        j                  |«       t        |«      }|rt        dd¬	«       d
}|r|dk  rt	        d|z  «      ‚|}t        j                  |«       t        j                  |«       t        j                  |«       t        j                   | «      rt#        | «       t        j$                  |t        j                  ¬«      j'                  «       }t        j(                  |d¬«      }t+        || t        j                  ¬«      }t-        ||||«      }t        j.                  | |t        j                   | «      ||
||||	|j1                  t        j2                  d«      j4                  «      ||«      \  }}t5        |«      }||	k\  rt7        j8                  dt:        «       |r|dd…dd…f   }||dd…df   z  }n|}d}|||fS )a  Used by Logistic Regression (and CV) and LinearSVC/LinearSVR.

    Preprocessing is done in this function before supplying it to liblinear.

    Parameters
    ----------
    X : {array-like, sparse matrix} of shape (n_samples, n_features)
        Training vector, where `n_samples` is the number of samples and
        `n_features` is the number of features.

    y : array-like of shape (n_samples,)
        Target vector relative to X

    C : float
        Inverse of cross-validation parameter. The lower the C, the higher
        the penalization.

    fit_intercept : bool
        Whether or not to fit an intercept. If set to True, the feature vector
        is extended to include an intercept term: ``[x_1, ..., x_n, 1]``, where
        1 corresponds to the intercept. If set to False, no intercept will be
        used in calculations (i.e. data is expected to be already centered).

    intercept_scaling : float
        Liblinear internally penalizes the intercept, treating it like any
        other term in the feature vector. To reduce the impact of the
        regularization on the intercept, the `intercept_scaling` parameter can
        be set to a value greater than 1; the higher the value of
        `intercept_scaling`, the lower the impact of regularization on it.
        Then, the weights become `[w_x_1, ..., w_x_n,
        w_intercept*intercept_scaling]`, where `w_x_1, ..., w_x_n` represent
        the feature weights and the intercept weight is scaled by
        `intercept_scaling`. This scaling allows the intercept term to have a
        different regularization behavior compared to the other features.

    class_weight : dict or 'balanced', default=None
        Weights associated with classes in the form ``{class_label: weight}``.
        If not given, all classes are supposed to have weight one. For
        multi-output problems, a list of dicts can be provided in the same
        order as the columns of y.

        The "balanced" mode uses the values of y to automatically adjust
        weights inversely proportional to class frequencies in the input data
        as ``n_samples / (n_classes * np.bincount(y))``

    penalty : {'l1', 'l2'}
        The norm of the penalty used in regularization.

    dual : bool
        Dual or primal formulation,

    verbose : int
        Set verbose to any positive number for verbosity.

    max_iter : int
        Number of iterations.

    tol : float
        Stopping condition.

    random_state : int, RandomState instance or None, default=None
        Controls the pseudo random number generation for shuffling the data.
        Pass an int for reproducible output across multiple function calls.
        See :term:`Glossary <random_state>`.

    multi_class : {'ovr', 'crammer_singer'}, default='ovr'
        `ovr` trains n_classes one-vs-rest classifiers, while `crammer_singer`
        optimizes a joint objective over all classes.
        While `crammer_singer` is interesting from a theoretical perspective
        as it is consistent it is seldom used in practice and rarely leads to
        better accuracy and is more expensive to compute.
        If `crammer_singer` is chosen, the options loss, penalty and dual will
        be ignored.

    loss : {'logistic_regression', 'hinge', 'squared_hinge',             'epsilon_insensitive', 'squared_epsilon_insensitive},             default='logistic_regression'
        The loss function used to fit the model.

    epsilon : float, default=0.1
        Epsilon parameter in the epsilon-insensitive loss function. Note
        that the value of this parameter depends on the scale of the target
        variable y. If unsure, set epsilon=0.

    sample_weight : array-like of shape (n_samples,), default=None
        Weights assigned to each sample.

    Returns
    -------
    coef_ : ndarray of shape (n_features, n_features + 1)
        The coefficient vector got by minimizing the objective function.

    intercept_ : float
        The intercept term added to the vector.

    n_iter_ : array of int
        Number of iterations run across for each class.
    )rT  rU  r   zeThis solver needs samples of at least 2 classes in the data, but the data contains only one class: %rr   )r!  r°   r±   rz   z[LibLinear]r�   r‚   g      ð¿zqIntercept scaling is %r but needs to be greater than 0. To disable fitting an intercept, set fit_intercept=False.ÚW)Úrequirementsr„   z@Liblinear failed to converge, increase the number of iterations.NrR   rK   )r   Úfit_transformr¨   r§   rf   r   r,   rË   r‹   Ú	liblinearrÉ   r   rœ   rÈ   rÕ   r†   r‡   r   r�   ró   Úrequirer   ra  Ú
train_wrapr�   rž   rŸ   r�   r‘   r
   )r¯   r°   rZ   Úfit_interceptÚintercept_scalingr`   rY  r[  rQ   ra   rY   rS   rX  rZ  r\   r±   ÚencÚy_indr¨   rÅ   r²   Úbiasr³   Ú	raw_coef_r­   Ú
n_iter_maxr
  r¢   s                               r=   Ú_fit_liblinearrp  Z  s/  € ðh ÐIÑIÜ‹nˆØ×!Ñ! !Ó$ˆØ—<‘<ˆÜˆx‹=˜1ÒÜðà'¨™{ñ+óð ô
 -Ø (¨a¸}ô
‰ô Ÿ™ ¬"¯*©*Ô5ˆØˆÜ× Ñ  Ô)Ü
˜\Ó
*€CÙÜˆm Õ$ð €DÙØ Ò!Üð,à.?ñ@óð ð %ˆDä
×Ñ˜gÔ&Ü×$Ñ$ WÔ-Ü× Ñ  Ô)ô 
‡{�{�1„~Ü˜AÔô �J‰J�u¤B§J¡JÔ/×5Ñ5Ó7€EÜ�J‰J�u¨3Ô/€Eä(¨¸ÄÇÁÔL€Mä,¨[¸'À4ÈÓN€KÜ"×-Ñ-Ø	ØÜ
�‰�A‹ØØØØ	ØØØ�‰”B—H‘H˜S“M×%Ñ%Ó&ØØóÑ€Iˆwô$ �W“€JØ�XÒÜ�‰ØNÜô	
ñ
 Øš!˜S˜b˜S˜&Ñ!ˆØ&¨²1°b°5Ñ)9Ñ9‰
àˆØˆ
à�*˜gÐ%Ð%r?   )Nr  rQ  gš™™™™™¹?N)>r�   Úabcr   r   Únumbersr   r   Únumpyr,   Úscipy.sparsero   r†   Úsklearn.baser   r   r	   Úsklearn.exceptionsr
   r   Úsklearn.preprocessingr   Úsklearn.svmr   rf  r   rÈ   r   rÕ   Úsklearn.utilsr   r   r   r   r   Úsklearn.utils._param_validationr   r   r   Úsklearn.utils._sparser   Úsklearn.utils.extmathr   Úsklearn.utils.fixesr   Úsklearn.utils.metaestimatorsr   Úsklearn.utils.multiclassr   r   Úsklearn.utils.validationr   r   r    r!   r"   r#   re   r>   rA   r  ra  rp  © r?   r=   ú<module>r‚     sª   ðó ß 'ß "ã Ý ç EÑ Eß AÝ .Ý /õ *Ý 7÷õ ÷ IÑ HÝ 6Ý 1Ý 8Ý 5÷÷÷ ò H€ò#ôLC
2�¨'õ C
2ôLBˆo˜z°Wõ BòJ
6ðJ ØØ	ØØô!D&r?   