
    h$,f                        d Z ddlZddlZddlZddl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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 m!Z!m"Z"m#Z#m$Z$m%Z% ddl&m'Z' ddl(m)Z)m*Z* ddl+m,Z, ddl-m.Z.m/Z/ ddl0m1Z1 ddgddgddgddgddgddggZ2g dZ3ddgddgddggZ4g dZ5 ejl                         Z7 e)d      Z8e8js                  e7jt                  jv                        Z<e7jz                  e<   e7_=        e7jt                  e<   e7_:        d Z>d Z?d Z@d ZAd ZBd ZCd ZDd  ZEd! ZFd" ZGd# ZHd$ ZId% ZJej                  j                  d&ej                  ej                  f      d'        ZOd( ZPd) ZQej                  j                  d* ej                  d+,       ej                         g      d-        ZRej                  j                  d* ej@                  d+,       ejF                  d+,      g      d.        ZSd/ ZTej                  j                  d0ej                  d1fej                  d2fej@                  d1fejF                  d1fejH                  d1fgg d34      ej                  j                  d5dg eUe3      z  d6g eUe3      z  gd7d8g4      d9               ZVej                  j                  d:ej                  d;fej                  d<fgd=d>g4      ej                  j                  d5g d?g d@gdAdBg4      dC               ZWej                  j                  dDej                  dEdFgdFdGgdHfej                  dIdIgdIdIgdHfgd=d>g4      ej                  j                  dJg dKdLfg dMdNfgdOdPg4      dQ               ZXej                  j                  dRej                  ej                  ejF                  gg dS4      ej                  j                  d5g dKg dMgdOdPg4      dT               ZY e,eU      dV        ZZej                  j                  dWe/      dX        Z[dY Z\dZ Z]ej                  j                  d[e.      d\        Z^ej                  j                  d[e.      d]        Z_ej                  j                  d^d_d`g      ej                  j                  dadbdcg      ej                  j                  dddedfg      dg                      Z`dh Zadi Zbdj Zcdk Zddl ZeejB                  fdmZfdn Zgdo Zhdp Zidq Zjdr Zkds Zldt Zme,du        Zndv Zodw Zpdx Zqdy Zrdz Zsd{ Ztej                  j                  d|ej                  ej                  g      d}        Zuej                  j                  d|ej                  ej                  g      d~        Zvd Zwej                  j                  de!dbd`dfdfe!dcd`dedfe!dcd`dfdfe!dcd_dedfe"ddedfe"ddedfe"ddedfg      d        Zxej                  j                  de$e e#f      d        Zyej                  j                  dRej                  ej@                  g      d        Zzd Z{ej                  j                  dej                  ej                  fej                  ej                  fej@                  e}fejF                  e}fejH                  e}fg      ej                  j                  d eddd       eddd       eddd      g      d               Z~ej                  j                  dRe"e!g      d        Zej                  j                  d^d`dg      d        Zd Zy)zr
Testing for Support Vector Machine module (sklearn.svm)

TODO: remove hard coded numerical results when possible
    N)assert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equal)basedatasetslinear_modelmetricssvm)
make_blobsmake_classification)ConvergenceWarningNotFittedErrorUndefinedMetricWarning)f1_score)
rbf_kernel)train_test_split)OneVsRestClassifier)SVR	LinearSVC	LinearSVRNuSVROneClassSVM_libsvm)_validate_dual_parameter)check_random_stateshuffle)ignore_warnings)CSR_CONTAINERSLIL_CONTAINERS)_num_samples      )r$   r$   r$   r%   r%   r%      )r$   r%   r%   *   c                     t        j                  d      j                  t        t              } t        | j                  ddgg       t        | j                  ddg       t        | j                  t        d   t        d   f       t        | j                  dg       t        | j                  t              t               y )Nlinearkernel      п      ?r$   r&           )r   SVCfitXYr   
dual_coef_support_support_vectors_
intercept_predictclfs    :lib/python3.12/site-packages/sklearn/svm/tests/test_svm.pytest_libsvm_parametersr;   :   s    
''
"
&
&q!
,Cs~~7s||aV,s++adAaD\:s~~u-s{{1~q)    c            	      B   dD ]  } t        j                  |       j                  t        j                  t        j
                        }t        j                  |j                  t        j                        t        j
                  k(        dkD  sJ t        |d      | dk(  k(  rJ  t        j                  t        j                  |j                               t        j                  t        j                  t        j
                  j                  t        j                              \	  }}}}}}}}	}
|||||||d}t        j                  t        j                  fi |}t        j                  |t        j
                  k(        dkD  sJ t        j                  t        j                  t        j
                  j                  t        j                        d      \	  }}}}}}}}	}
|||||||d}t        j                  t        j                  fi |ddi}t        j                  |t        j
                  k(        dkD  sJ t        j                   t        j                  t        j
                  j                  t        j                        d	dd
      }t        j                  |t        j
                  k(        dkD  sJ t        j                   t        j                  t        j
                  j                  t        j                        d	dd
      }t        ||       y )N)r)   rbfr*   ?coef_r)   )supportSVnSVsv_coef	interceptprobAprobBgffffff?r+      r   r+   random_seed)r   r/   r0   irisdatatargetnpmeanr7   hasattrr   classes_sortr   astypefloat64cross_validation)kr9   libsvm_supportlibsvm_support_vectorslibsvm_n_class_SVlibsvm_sv_coeflibsvm_interceptlibsvm_probAlibsvm_probBlibsvm_fit_statuslibsvm_n_itermodel_paramspredpred2s                 r:   test_libsvm_irisrc   D   sr     8ggQ##DIIt{{;wws{{499-<=CCCsG$h7778
 s||RWWS\\%:;  	DIIt{{11"**=> "$ !%L ??49955D7744;;&'$... 	DIIt{{11"**=hO "$ !%L ??499FFXFD7744;;&'$...##		4;;%%bjj11XSTD 7744;;&'$...
 $$		4;;%%bjj11XSTE tU#r<   c                  
   t        j                  d      } t        j                  t        t        j
                  t              j                        }| j                  |t               t        j                  t        t        j
                  t              j                        }| j                  |      }t        j                  t              5  | j                  |j                         d d d        t        | j                  ddgg       t        | j                  ddg       t        | j                   dg       t#        | j                  ddg       t        |t$               t        j&                  |      }t)        t+        t                    D ]<  }| j                  D ]+  }t        j                  t        |   t        |         |||f<   - > | j                  |      }t        |t$               d }t        j                  |      } | j                  t        j
                  t              t               | j                  t              }t        | j                  ddgg       t        | j                   dg       t#        | j                  ddg       t        |t$               t        j                  d      } t        j                  d	      }t        j                  t,        j.                  t,        j.                  j                        }| j                  |t,        j0                         |j                  t,        j.                  t,        j0                         | j                  |      }t#        | j                  |j                         t#        | j                  |j                         t#        | j                   |j                          t3        t        j4                  |t,        j0                  k(        d
d       t        j&                  |      }t)        t+        t,        j.                              D ]P  }| j                  D ]?  }t        j                  t,        j.                  |   t,        j.                  |         |||f<   A R | j                  |      }t3        t        j4                  |t,        j0                  k(        d
d       t        j                  |      } | j                  t,        j.                  t,        j0                         t3        t        j4                  |t,        j0                  k(        d
d       y # 1 sw Y   WxY w)Nprecomputedr*   r,   r-   r$   r&   r   c                 B    t        j                  | |j                        S NrN   dotTxys     r:   kfuncztest_precomputed.<locals>.kfunc   s    vva~r<   r)   gGz?r%   decimal)r   r/   rN   ri   r1   arrayrj   r0   r2   r7   pytestraises
ValueErrorr   r3   r4   r6   r   true_result
zeros_likerangelenrK   rL   rM   r   rO   )r9   KKTra   ijrn   clf2s           r:   test_precomputedr~      sp    ''
'C 	q"((1+-- AGGAqM	288A;==	!B;;r?D	z	" BDD s~~7s||aV,s~~s+cllQF3t[) 
r	B3q6] * 	*AvvadAaD)Bq!tH	** ;;r?Dt[)
 ''
CGGBHHQK;;q>Ds~~7s~~s+cllQF3t[) ''
'C77(#D
tyy$))++&AGGAt{{HHTYY$;;q>DcllDMM:cnndoo>cnndoo> 34dAF 	aA3tyy>" 9 	9AffTYYq\499Q<8AadG	99 ;;q>D 34dAF
''
CGGDIIt{{# 34dAFw s   T>>Uc                     t        j                         } t        j                  ddd      t        j                  ddd      t        j                  dd      t        j
                  dd      t        j
                  dd      fD ]S  }|j                  | j                  | j                         |j                  | j                  | j                        d	kD  rSJ  t        j                         j                  | j                  t        j                  t        | j                                     t        j
                  d
      j                  | j                  t        j                  t        | j                                     y )Nr)   皙?      ?)r+   nuC      $@r+   r   auto)dualr   g{Gz?r   )r   load_diabetesr   r   r   r   r0   rL   rM   scorerN   onesrx   )diabetesr9   s     r:   test_svrr      s    %%'H		cS1		cT2x4(6T*6T* @ 	x/yy84???@ GGIMM(--X]]);!<=MMv""8=="''#hmm:L2MNr<   c                     t        j                         } t        j                  dd      j	                  | j
                  | j                        }|j                  | j
                  | j                        }t        j                  dd      j	                  | j
                  | j                        }|j                  | j
                  | j                        }t        t        j                  j                  |j                        t        j                  j                  |j                        dd       t        ||d       y )	N     @@r   )r   r   r)   r   r$   -C6?r%   )r   r   r   r   r0   rL   rM   r   r   r   rN   linalgnormr@   r   )r   lsvrscore1svrscore2s        r:   test_linearsvrr      s     %%'H==3V,00PDZZx7F
''S
)
-
-hmmX__
MCYYx}}hoo6FBIINN4::.		syy0I1fU*r<   c                     t        j                         } t        | j                        }t	        j
                  |      }t        j                  dddd      j                  | j                  | j                  |      }|j                  | j                  | j                        }t        j                  dddd      j                  | j                  | j                        }|j                  | j                  | j                        }t        t        j                  j                  |j                        t        j                  j                  |j                        dd       t        ||d	       t!        d
      }|j#                  d
d|      }t        j                  dddd      j                  | j                  | j                  |      }	|	j                  | j                  | j                  |      }
t	        j$                  | j                  |d
      }t	        j$                  | j                  |d
      }t        j                  dddd      j                  ||      }|j                  ||      }t        |
|d	       y )Nr   r   -q=i'  )r   r   tolmax_itersample_weightr$   r   r%   r   
   axis)r   r   rx   rM   rN   r   r   r   r0   rL   r   r   r   r   r@   r   r   randintrepeat)r   	n_samplesunit_weightr   r   lsvr_no_weightr   random_staterandom_weightlsvr_unflatscore3X_flaty_flat	lsvr_flatscore4s                  r:   test_linearsvr_fit_sampleweightr      s    %%'HHOO$I'')$K==fGKKxk L D ZZx7F]]#55QUUxN !!(--AF
		tzz"BIINN>3G3G$H!V * &a(L ((B	:M--VsNRRxm S K xm  F YYx}}m!<FYYxA>F6SeeLPPI __VV,F*r<   c                      dgdgg} ddg}t        j                  d       }|j                  | |       t        j                  t
              5  |j                  |        d d d        y # 1 sw Y   y xY w)Nr.   r   g      ?c                 0    t        j                  dgg      S )Nr   )rN   rq   rk   s     r:   <lambda>z!test_svr_errors.<locals>.<lambda>/  s    bhhw&7 r<   r*   )r   r   r0   rr   rs   rt   r7   r1   rm   r9   s      r:   test_svr_errorsr   *  sb    
A	c
A ''7
8CGGAqM	z	" A  s   A((A1c                     t        j                         j                  t               j	                  t
              } t        | g d       | j                  t        j                  d      k(  sJ t        j                  dgd       t        j                  g dgd       t        j                  t              5   fd        d d d        y # 1 sw Y   y xY w)N)r$   r#   r#   intpgrh|r&   ro   )      ?r   r   r   c                       j                   S rg   )r@   r8   s   r:   r   ztest_oneclass.<locals>.<lambda>@  s     r<   )r   r   r0   r1   r7   rj   r   dtyperN   r   r6   r3   rr   rs   AttributeError)ra   r9   s    @r:   test_oneclassr   5  s    
//
CGGAJ;;q>Dt[)::&))))cnnvhBcnn/K.LVWX	~	& 	  s   ?CCc                     t        j                         } t        d      }d|j                  dd      z  }t        j
                  |dz   |dz
  f   }d|j                  dd      z  }t        j
                  |dz   |dz
  f   }|j                  ddd      }t        j                  d	d
d	      } | j                  |       | j                  |      }t	        j                  |dk(        dkD  sJ | j                  |      }t	        j                  |dk(        dkD  sJ | j                  |      }t        |dkD  j                         |dk(         | j                  |      }	t        |	dkD  j                         |dk(         y )Nr%   333333?d         )r   r%   )lowhighsize皙?r>   )r   r+   gammar$   r?   r#   r   )r   r   r   randnrN   r_uniformr0   r7   rO   decision_functionr   ravel)
r9   rndr1   X_trainX_test
X_outliersy_pred_testy_pred_outliersdec_func_testdec_func_outlierss
             r:   test_oneclass_decision_functionr   C  s`   
//
C
Q
C 	ciiQAeeAE1q5L!G 	ciiAAUU1q5!a%< F!':J //Sc
:CGGG ++f%K77;!#$s***kk*-O77?b()C///))&1M)002K14DE--j9)A-44618LMr<   c                      ddgddgddgg} t        j                  d      j                  |       }t        |j	                  ddgg      |j                  ddgg      |j                  z          y )Nr$   r%   r   g       @)r   r   r0   r   score_samplesr   offset_)r   r9   s     r:   test_oneclass_score_samplesr   a  sl    1v1v1v&G
//
"
&
&w
/CC:,'Szl+ckk9r<   c                  N   t        j                  dd      } | j                  t        t               t        | j                  ddgg       t        | j                  ddgg      dg       t        j                  ddgg      | _
        t        | j                  ddgg      d	g       y )
Nr)   r   r   r,   r-   皙r$   r.   r%   )r   r/   r0   r1   r2   r   r3   r7   rN   rq   _dual_coef_r8   s    r:   test_tweak_paramsr   j  s     ''S
)CGGAqMs~~7s{{T4L>2QC8hhc
|,COs{{T4L>2QC8r<   c            	         t        j                  ddd      t        j                  dd      fD ]F  } | j                  t        j
                  t        j                         | j                  t        j
                        }t        t        j                  |d      t        j                  t        j
                  j                  d                t        j                  t        j                  |d      | j                  t        j
                        k(        dkD  sJ t!        | j                  t        j
                        t        j"                  | j%                  t        j
                              d       I y )	NTr   r   )probabilityr   r   )r   r   r$   r?      )r   r/   NuSVCr0   rK   rL   rM   predict_probar   rN   sumr   shaperO   argmaxr7   r   exppredict_log_proba)r9   prob_predicts     r:   test_probabilityr   y  s    
 	DqC8		d3 
 			4;;'((3!"&&q"9277499??STCU;VWwwryyq1S[[5KKLsRRRdii("&&1F1Ftyy1Q*RTU	

r<   c                      t        j                  ddd      j                  t        j                  t        j
                        } t        j                  t        j                  | j                  j                        | j                  z   }t        || j                  t        j                               | j                  t        t               t        j                  t        | j                  j                        | j                  z   }| j                  t              }t        |j!                         | j                  t                     t        || j"                  | j                  t              dkD  j%                  t&                        t        j(                  g d      }t        | j                  t              |d       t        j                  dd	d
      } | j                  t        t               t+        t        | j,                  | j.                        }t        j                  || j0                  j                        | j                  z   }t        |j!                         | j                  t                     y )Nr)   r   ovo)r+   r   decision_function_shaper   )      gQr   gQ?r   r   r%   r>   r$   )r+   r   r   r   )r   r/   r0   rK   rL   rM   rN   ri   r@   rj   r6   r   r   r1   r2   r7   r   rQ   rS   intrq   r   r5   r   r3   )r9   dec
predictionexpectedrbfss        r:   test_decision_functionr     s   
 ''S%
H
L
L		4;;C &&CIIKK
(3>>
9Cc3#8#8#CD GGAqM
&&CIIKK
 3>>
1CQJciik3+@+@+CDCLL#"7"7":Q">!F!Fs!KL xx;<Hc33A6!D ''a
GCGGAqMa--SYY?D
&&s~~''
(3>>
9Cciik3+@+@+CDr<   SVMc                 B    | dd      j                  t        j                  t        j                        }|j	                  t        j                        }|j
                  t        t        j                        dfk(  sJ t        |j                  t        j                        t        j                  |d             t        ddd	
      \  }}t        ||d	      \  }}}} | dd      j                  ||      }|j	                  |      }|j
                  t        |      dfk(  sJ t        |j                  |      t        j                  |d              | dd      j                  ||      }|j	                  |      }|j
                  t        |      dfk(  sJ y )Nr)   ovrr+   r   r&   r$   r   P   rH   r   )r   centersr   r   r   r   )r0   rK   rL   rM   r   r   rx   r   r7   rN   r   r   r   )	r   r9   r   r1   rm   r   r   y_trainy_tests	            r:   test_decision_function_shaper     sR   
 Xu
=
A
A		4;;C 

		
*C99TYY++++s{{499-ryy1/EF AA>DAq'711'M$GVWf
Xu
=
A
A'7
SC



'C99Va((((s{{6*BIIc,BC Xu
=
A
A'7
SC



(C99Wr****r<   c                     t         j                  } t         j                  }t        j                  dd      j                  | |      }t        j                  | |j                  j                        |j                  z   }t        |j                         |j                  |       j                                t        j                  dd      j                  | |      }t        | |j                  |j                         }t        j                  ||j"                  j                        |j                  z   }t        |j                         |j                  |       j                                y )Nr)   r   r   r>   r$   )r+   r   r   )rK   rL   rM   r   r   r0   rN   ri   r@   rj   r6   r   r   r7   r   r5   r   r3   )r1   rm   regr   r   s        r:   test_svr_predictr     s    
 			AA ''S
)
-
-a
3C
&&CIIKK
 3>>
1Cciik3;;q>+?+?+AB ''a
(
,
,Q
2Ca--SYY?D
&&s~~''
(3>>
9Cciik3;;q>+?+?+ABr<   c                     t        j                  ddi      } | j                  t        t               t        | j                  t              dgdz         t        dddd	gd
      \  }}t        j                         t        j                  dd      t        j                         fD ]W  } | j                  ddd       | j                  |d d |d d        | j                  |dd        }t        |dd  |      dkD  rWJ  y )Nr$   r   class_weightr%         r   g-?gK7A`?)r   
n_featuresweightsr   r   r   r   r   )r   r$   r   r   )r   r/   r0   r1   r2   r   r7   r   r	   LogisticRegressionr   
set_paramsr   )r9   X_y_y_preds       r:   test_weightr    s    
''3x
(CGGAqMckk!nqcAg6 "uen1FB
 	'')62	 0
 	O44C"Tc(#RX&34&)C///0r<   	estimator{Gz?r   c                    ddgddgddgddgddgddgg}| j                  d       dgdz  }| j                  |t        |	       | j                  d
dgg      }|t	        j
                  d      k(  sJ g d}| j                  |t        |	       | j                  d
dgg      }|dk  sJ g d}| j                  |t        |	       | j                  d
dgg      }|dkD  sJ y )Nr"   r   r#   r%   r$   r)   r*   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r	  r0   r2   r   rr   approxr  r1   r   r  s       r:   'test_svm_classifier_sided_sample_weightr    s     a2r(QGaVaVaV<A) C!GMMM!QmM4((4+7FV]]1%%%% 3MMM!QmM4((4+7FA::4MMM!QmM4((4+7FA::r<   c                    ddgddgddgddgddgddgg}| j                  d       dgdz  }| j                  |t        |	       | j                  d
dgg      }|t	        j
                  d      k(  sJ g d}| j                  |t        |	       | j                  d
dgg      }|dk  sJ g d}| j                  |t        |	       | j                  d
dgg      }|dkD  sJ y )Nr"   r   r#   r%   r$   r)   r*   r  r   r   r   g      ?r  r  )r	  r0   r2   r7   rr   r  r  s       r:   &test_svm_regressor_sided_sample_weightr    s     a2r(QGaVaVaV<A) C!GMMM!QmM4s}-FV]]3'''' 3MMM!QmM4s}-FC<<4MMM!QmM4s}-FC<<r<   c            
      B   t        j                         } | j                  t        t               | j
                  }| j                  d       | j                  t        t        t        j                  dt        t                           t        || j
                         y )Nr   r  r  r   )r   r/   r0   r1   r2   r3   r	  rN   r   rx   r   )r9   dual_coef_no_weights     r:   $test_svm_equivalence_sample_weight_Cr  )  sb    
'')CGGAqM..NNSNGGAq		$A 7G8'8r<   zEstimator, err_msgz:Invalid input - all samples have zero or negative weights.z6(negative dimensions are not allowed|nu is infeasible))r/   r   r   r   r   )idsr   333333ӿzweights-are-zerozweights-are-negativec                      | d      }t        j                  t        |      5  |j                  t        t
        |       d d d        y # 1 sw Y   y xY wNr)   r*   matchr   rr   rs   rt   r0   r1   r2   )	Estimatorerr_msgr   ests       r:   -test_negative_sample_weights_mask_all_samplesr&  3  sC    " 8
$C	z	1 31M23 3 3   AAzClassifier, err_msgzJInvalid input - all samples with positive weights belong to the same classzspecified nu is infeasibler/   r   )r         r   r$   r$   r$   )r$   r$   r$   r   r   r  zmask-label-1zmask-label-2c                      | d      }t        j                  t        |      5  |j                  t        t
        |       d d d        y # 1 sw Y   y xY wr  r"  )
Classifierr$  r   r9   s       r:   .test_negative_weights_svc_leave_just_one_labelr+  I  sC    ( H
%C	z	1 31M23 3 3r'  zClassifier, modelg6<R?r   gj+?)	when-left
when-rightgioT?zsample_weight, mask_side)r$   r(  r$   r$   r$   r$   r,  )r$   r$   r$   r   r$   r$   r-  zpartial-mask-label-1zpartial-mask-label-2c                      | d      }|j                  t        t        |       t        |j                  ||   gd       y )Nr)   r*   r   MbP?)rtol)r0   r1   r2   r   r@   )r*  modelr   	mask_sider9   s        r:   *test_negative_weights_svc_leave_two_labelsr3  b  s8      H
%CGGAqG.CIIi 01=r<   r#  )r/   r   r   c                      | d      }|j                  t        t        |       t        j                  |j
                        j                         }|d   t        j                  |d   d      k(  sJ y )Nr)   r*   r   r   r$   r/  )rel)	r0   r1   r2   rN   absr@   r   rr   r  )r#  r   r%  coefs       r:   !test_negative_weight_equal_coeffsr8  w  s\     8
$CGGAqG.66#))""$D7fmmDG6666r<   )categoryc                  .   ddl m}  ddlm} t        j
                  d d d df   t        j                  dz   }}t        j                  t        j                  |j                        t        j                  |dkD        d   d d d         }t        j                  ||         } |d|||         }t        j                  |      dk(  sJ t        j                  d	      t        j                   d
d       |        fD ]  }|j#                  ||   ||         j%                  |      }|j'                  d       |j#                  ||   ||         j%                  |      }	t)        j*                  ||d      t)        j*                  ||	d      k  rJ  y )Nr   )r  )compute_class_weightr%   r$   balanced)classesrm   r)   r*   r   r  r  macro)average)sklearn.linear_modelr  sklearn.utilsr;  rK   rL   rM   rN   deletearanger   whereuniquer   r   r/   r   r0   r7   r	  r
   r   )
r  r;  r1   rm   
unbalancedr=  class_weightsr9   r  y_pred_balanceds
             r:   test_auto_weightrI    sh    8 399QUT[[1_qA299QVV,bhhq1uoa.@1.EFJii*&G(W*VM99]#q((( 	x 62 
 :*6>>qAJ/''jMjM
 '!* 	 67;w?O?O@
 
 	
 

r<   lil_containerc                 R   t         d d }t        j                  t              5  t	        j
                         j                  t        |       d d d        t	        j
                         t	        j                  dd      fD ]  }t        j                  t              }|j                  d   rJ t        j                  t        j                  t         d      j                        }|d d df   }|j                  d   rJ |j                  d   rJ |j                  ||       t        |j!                  t              t"                t	        j
                  d	      }t        j                  t              5  |j                  t        t                d d d        t	        j
                         j                  t        t               }t        j                  t              5  |j!                   | t                     d d d        t        j$                  t              j                  }|j                  t        j&                  t        |      t                t        j                  t              5  |j!                  t               d d d        t	        j
                         }|j                  t        t                t        j                  t              5  |j!                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   jxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)
Nr#   r   r   r  C_CONTIGUOUS)r%   r$   F_CONTIGUOUSre   r*   )r2   rr   rs   rt   r   r/   r0   r1   r   rN   asfortranarrayflagsascontiguousarraytilerj   r   r7   ru   rq   ri   )rJ  Y2r9   XfyfXts         r:   test_bad_inputrV    s(    
3BB	z	" 	a 	3==f1EF 8q!88N+++!!"''!V"4"6"672Y88N+++88N+++B3;;q>;78 ''
'C	z	" 1 '')--1
C	z	" &M!$%& 
!BGGBFF1bM1	z	" A '')CGGAqM	z	" B ?   
& &
 
 s;   )K*4K7L*LL*K47LLLL&c                     t         j                  j                  d      } d}t        j                  t         j                        j
                  }|| j                  |df      z  }| j                  dd|      }t        j                         }d}t        j                  t        |      5  |j                  ||       d d d        y # 1 sw Y   y xY w)Nr   r   r%   )r   z2The dual coefficients or intercepts are not finiter   )rN   randomRandomStatefinforT   maxr   r   r   r/   rr   rs   rt   r0   )rngr   fmaxr1   rm   r9   msgs          r:   test_svc_nonfinite_paramsr_    s    
))


"CI88BJJ##Ds{{A{//AAqy)A
'')C
>C	z	- 1  s   +CCc                  6   t        j                  dd      } | j                  t        t               | j                  t               t        j                  t        j                  t        j                  j                  t        j                        ddd       y )Nr)   T)r+   r   rH   r   rI   )r   r/   r0   r1   r2   r   rj   r   rU   rK   rL   rM   rS   rN   rT   r8   s    r:   test_unicode_kernelra    s^    
''t
4CGGAqMa		4;;%%bjj11XSTr<   csr_containerc                     t        j                  d      } | ddgddgg      }t        j                  t        d      5  |j                  |ddg       d d d        y # 1 sw Y   y xY w)Nre   r*   r$   r   zSparse precomputedr   )r   r/   rr   rs   	TypeErrorr0   )rb  r9   sparse_grams      r:   test_sparse_precomputedrf    s]    
''
'C!Q!Q 01K	y(<	= %aV$% % %s    AA'c                 2    | g dg dg dg dg      }t        j                  g d      }t        j                  d      }|j	                  ||       |j
                  j                  j                  rJ |j                  j                  j                  rJ y )N)r   r$   r   r   )r   r   r   r$   )r   r   r$   r   ){Gz?rh  r   g{Gz?r)   r*   )	rN   rq   r   r   r0   r5   rL   r   r3   )rb  r   r   r1  s       r:   %test_sparse_fit_support_vectors_emptyri    s{     \<|TUGhh/0GGG8$E	IIgw%%**////$$)))))r<   losshingesquared_hingepenaltyl1l2r   TFc           	      @   t        ddd      \  }}t        j                  || |d      }| |fdk(  s| ||fdk(  s||fdk(  r@t        j                  t
        d|d	| d
|      5  |j                  ||       d d d        y |j                  ||       y # 1 sw Y   y xY w)NrH   r   )r   r  r   rm  rj  r   r   )rk  rn  )rk  ro  F)rn  Tz'Unsupported set of arguments.*penalty='z.*loss='z.*dual=r   )r   r   r   rr   rs   rt   r0   )rj  rm  r   r1   rm   r9   s         r:   test_linearsvc_parametersrr    s     qqIDAq
--dA
NC	w?*'4 $::T?l*]]d$
 	
 GGAqM	 	 	1	 	s   %BBc                  p   t        j                  dd      j                  t        t              } | j
                  sJ t        | j                  t              t               t        | j                  dgd       t        j                  dddd	      j                  t        t              } t        | j                  t              t               t        j                  d
dd      j                  t        t              } t        | j                  t              t               t        j                  d
ddd	      } | j                  t        t               t        | j                  t              t               | j                  t              }|dkD  j                  t              dz   }t        |t               y )Nr   r   r  r&   ro   rn  rl  Frq  ro  T)rm  r   r   rk  r$   )r   r   r0   r1   r2   fit_interceptr   r7   rj   ru   r   r6   r   rS   r   )r9   r   ress      r:   test_linearsvcrv    s,   
--V!
4
8
8A
>C s{{1~{3cnnqc1= --?Q	c!Qi  s{{1~{3 --4a
@
D
DQ
JCs{{1~{3 --7A
NCGGAqMs{{1~{3 


"C7

3
!
#CsK(r<   c                     t        j                  dd      j                  t        j                  t        j
                        } t        j                  ddd      }|j                  t        j                  t        j
                         | j                  t        j                        |j                  t        j                        k(  j                         dkD  sJ | j                  |j                  k7  j                         sJ t        |j                  t        j                        t        j                  |j                  t        j                        d             t        j                  t        j                  |j                  j                        |j                   z   }t#        ||j                  t        j                               y )	Nr   r   r  crammer_singer)r   multi_classr   r?   r$   r   )r   r   r0   rK   rL   rM   r7   rO   r@   allr   rN   r   r   ri   rj   r6   r   )ovr_clfcs_clfdec_funcs      r:   test_linearsvc_crammer_singerr~  5  s#   mma8<<TYYTG]]4DSTUF
JJtyy$++& OODII&&..*CCIIKcQQQ MMV\\)..000 tyy!
		&**4995A> vvdii063D3DDHh(@(@(KLr<   c                     t        t              } t        j                  |       }t	        j
                  dd      j                  t        t              }t	        j
                  dddd      j                  t        t        |      }t        |j                  t              |j                  t                     t        |j                  |j                  dd	       t        d      }|j                  dd
|       }t	        j
                  dddd      j                  t        t        |      }|j                  t              }t        j                  t        |d      }t        j                  t        |d      }	t	        j
                  dddd      j                  ||	      }
|
j                  t              }t        ||       t        |j                  |
j                  dd	       y )Nr   r   r  r     )r   r   r   r   r   r$   r   r   r   )rx   r1   rN   r   r   r   r0   r2   r   r7   rj   r   r@   r   r   r   )r   r   r9   clf_unitweightr   r   lsvc_unflatpred1r   r   	lsvc_flatrb   s               r:   test_linearsvc_fit_sampleweightr  J  sq   AI'')$K
--V!
4
8
8A
>C]]!	c!Qkc* 
 ~--a0#++a.ACII~33Q?
 &a(L ((B	:M--!	c!Qmc,  "EYYq-a0FYYq-a0F!	c&&  a Eue$K%%y6Br<   c                      t        dd      \  } }dD ]B  }t        j                  d|dd      j                  | |      j	                  | |      }|dkD  rBJ  y )	Nr%   r   )	n_classesr   )TFr   rx  )r   rt  ry  r   r?   )r   r   r   r0   r   )r1   rm   rt  accs       r:   test_crammer_singer_binaryr  m  sd    ;DAq& MM+,	 SAYU1a[ 	 Syyr<   c                  d   t         j                  t         j                     } t        j                  dd      j                  t         j                  |       }t        |j                        t        t         j                        k(  sJ t        j                  |j                  t         j                        | k(        dkD  sJ |j                  t         j                        }t         j                  t        j                  |d         }t        ||j                  t         j                               y )Nr   r   r  g?r$   )rK   target_namesrM   r   r   r0   rL   setrQ   rN   rO   r7   r   r   r   )rM   r9   r   ra   s       r:   test_linearsvc_irisr    s     t{{+F
--V!
4
8
8F
KCs||D$5$5 6666773;;tyy)V34s:::


		
*CRYYsA./DtS[[34r<   c           	         ddgddgddgddgg}g d} | ddddd	d
d      }|j                   dk(  sJ |j                          |j                  sJ d|_         |j                  ||       t        |j                  dd       d|_         |j                  ||       |j                  }|dk  sJ d|_         |j                  ||       |j                  }t        ||d       y )Nr%   r$   r&   r   r   r$   r$   Trn  rl  Fr   gHz>r   )rt  rm  rj  r   r   r   r   rH   ro   r   r#   r  )intercept_scalingrt  r0   r   r6   r   )
classifierr1   rm   r9   
intercept1
intercept2s         r:   'test_dense_liblinear_intercept_handlingr    s    
Q!Q!Q!Q(AA

C   A%<s'<'<<% CGGAqM15  CGGAqMJ?? !CGGAqMJj*a@r<   c                     t        j                  d      j                  t        j                  t        j
                        } | j                  t        j                        }| j                  j                         | _        | j                  j                         | _	        | j                  t        j                        }t        ||       ddgddgddgddgg}g d}t        j                  d      j                  ||      } | j                  |      }| j                  j                         | _        | j                  j                         | _	        | j                  |      }t        ||       y )Nr   r   r%   r$   r&   r  )r   r   r0   rK   rL   rM   r   r@   copyr6   r   r   )r9   valuesvalues2r1   rm   s        r:   test_liblinear_set_coefr    s   
--V
$
(
(DKK
@C""499-F		 CI^^((*CN##DII.Gfg. Q!Q!Q!Q(AA
--V
$
(
(A
.C""1%F		 CI^^((*CN##A&Gvw'r<   c                     t        j                  d      j                  t        j                  t        j
                        t        j                  d      j                  t        j                  t        j
                        t        j                  d      j                  t        j                  t        j
                        t        j                  d      j                  t        j                  t        j
                        t        j                  d      j                  t        j                        g} | D ]  }t        j                  t              5  |j                  dt        j                  d             d d d        t        j                  t         t"        f      5  |j$                  j'                  dd       d d d         y # 1 sw Y   PxY w# 1 sw Y   xY w)Nr)   r*   r@   r&   )r   r   r   )r   r/   r0   rK   rL   rM   r   r   r   r   rr   rs   r   __setattr__rN   rC  RuntimeErrorrt   r@   __setitem__)svmsr9   s     r:   test_immutable_coef_propertyr    s1    	x $$TYY<		"&&tyy$++>x $$TYY<		"&&tyy$++>x(,,TYY7D  -]]>* 	3OOGRYYq\2	3]]L*56 	-II!!&!,	- 	--	3 	3	- 	-s   &G$GG	G!	c                      dd l } | j                  d      }| j                  | j                         d   d       t	        j
                  dd      }|j                  t        t               | j                  |d       y )Nr   r$   r   )r   verbose)	osdupdup2piper   r   r0   r1   r2   )r  stdoutr9   s      r:   test_linearsvc_verboser    sY    VVAYFGGBGGIaL! --VQ
/CGGAqM GGFAr<   c                  t   t        j                  d ddd      } t        j                  |       }|j	                  t
        j                  t
        j                         t        j                  dddd      }|j	                  t
        j                  t
        j                         t        |j                  |j                         t        |j                  |j                         t        |j                  t
        j                        |j                  t
        j                               t        |j                  t
        j                        |j                  t
        j                        d       t        |j                  t
        j                        |j                  t
        j                               y )	Nc                 B    t        j                  | |j                        S rg   rh   rk   s     r:   r   z5test_svc_clone_with_callable_kernel.<locals>.<lambda>      BFF1accN r<   Tr   r   )r+   r   r   r   r)   r   ro   )r   r/   r   cloner0   rK   rL   rM   r   r3   r6   r   r7   r   r   )svm_callable
svm_clonedsvm_builtins      r:   #test_svc_clone_with_callable_kernelr    s%    77* %	L L)JNN499dkk*''TSXK OODIIt{{+j33[5K5KLj33[5K5KLz))$))4k6I6I$))6TU  +!!$)),
 $$TYY/%%dii0r<   c                      t        j                  d       } t        j                  t              5  | j                  t        t               d d d        y # 1 sw Y   y xY w)Nc                     | S rg    rk   s     r:   r   z%test_svc_bad_kernel.<locals>.<lambda>  s    a r<   r*   )r   r/   rr   rs   rt   r0   r1   r2   )svcs    r:   test_svc_bad_kernelr    s>    
''
(C	z	" 1  s   AAc                  >   t        j                  d ddd      } d}t        j                  t        |      5  | j                  t        j                  t              t               d d d        t        j                  | j                  dk(        sJ y # 1 sw Y   .xY w)Nc                 B    t        j                  | |j                        S rg   rh   rk   s     r:   r   z2test_libsvm_convergence_warnings.<locals>.<lambda>  r  r<   Tr   r%   )r+   r   r   r   zoSolver terminated early \(max_iter=2\).  Consider pre-processing your data with StandardScaler or MinMaxScaler.r   )r   r/   rr   warnsr   r0   rN   rq   r1   r2   rz  n_iter_)awarning_msgs     r:    test_libsvm_convergence_warningsr    sz    *1WX	A	:  
(	< 	bhhqk166!))q.!!! s   .BBc                  \   d} t        j                         }t        j                  t        d      5  |j                  |        d d d        t        j                         }t        j                  t        d      5  |j                  |        d d d        y # 1 sw Y   SxY w# 1 sw Y   y xY w)Nzfoo!z.*\bSVC\b.*\bnot\b.*\bfitted\br   z .*\bNuSVR\b.*\bnot\b.*\bfitted\b)r   r/   rr   rs   	Exceptionr7   r   )r1   r9   s     r:   test_unfittedr    s    A
'')C	y(I	J A ))+C	y(K	L A 	  s   B;B"B"B+c                  0   t        j                  ddd      } | j                  t        t              j                  t              }t        j                  ddd      } | j                  t        t              j                  t              }t        ||       y )NTr$   r   )r   r   r   )r   r/   r0   r1   r2   r   r   )r  proba_1proba_2s      r:   test_consistent_probar  &  sd    D11=AeeAqk''*GD11=AeeAqk''*Ggw/r<   c                  l   t        j                  ddd      } d}t        j                  t        |      5  | j                  t        t               d d d        t        | j                  t              sJ | j                  dk(  sJ t        j                  ddd      }t        j                  t        |      5  |j                  t        j                  t        j                         d d d        t        |j                  t              sJ |j                  dk(  sJ y # 1 sw Y   xY w# 1 sw Y   CxY w)Nr   r   r%   )r   r   r   z@Liblinear failed to converge, increase the number of iterations.r   )r   r   rr   r  r   r0   r1   r2   
isinstancer  r   r   rK   rL   rM   )lsvcr  r   s      r:   $test_linear_svm_convergence_warningsr  /  s     ==f1qADTK	(	< A dllC(((<<1==f1qAD	(	< )DKK()dllC(((<<1 ) )s   D9/D*D'*D3c            	         t         j                  j                  d      j                  dd      } t         j                  j                  d      j                  d      }t	        j
                  d      t	        j                  d      t	        j                  d      fD ]h  }|j                  | |       t        |j                  |       t        j                  | |j                  j                               |j                  z          j y )	N   r   r&      r)   r*   r   r   )rN   rX  rY  r   r   r   r   r   r0   r   r7   ri   r@   r   r6   )r1   rm   r   s      r:   test_svr_coef_signr  B  s     			b!''A.A
		b!''+A 	x 		"6" 

 	1!KKNBFF1ciioo&783>>I	

r<   c                      t        j                  dd      } | j                  t        t               | j
                  dk(  sJ y )Nr   F)r   rt  r.   )r   r   r0   r1   r2   r6   )r  s    r:    test_lsvc_intercept_scaling_zeror  S  s3     ==fE:DHHQN??c!!!r<   c                  P   t        j                  d      } t        | d      sJ | j                  t        j
                  t        j                         t        | d      sJ t        j                  d      } t        | d      rJ | j                  t        j
                  t        j                         t        | d      rJ d| _        t        | d      sJ d}t        j                  t        |      5  | j                  t        j
                         d d d        y # 1 sw Y   y xY w)NT)r   r   FzApredict_proba is not available when fitted with probability=Falser   )r   r/   rP   r0   rK   rL   rM   r   rr   rs   r   r   )Gr^  s     r:   test_hasattr_predict_probar  [  s     	D!A1o&&&EE$))T[[!1o&&&E"Aq/***EE$))T[[!q/*** AM1o&&&
MC	~S	1 #			"# # #s   3 DD%c                     dD ]  } t        | d      \  }}t        j                  t        j                  fD ]L  }t	         |d            j                  ||      }t        |j                  |            t        |      k(  rLJ   y )N)r%   r&   r   )r   r   r   )r   )r   r   r/   r   r   r0   rx   r7   )r  r1   rm   r  r9   s        r:   &test_decision_function_shape_two_classr  s  s}     1	)!<1''399- 	1I%i&NOSS1C s{{1~&#a&000		11r<   c                     t        j                  ddgddgddgddgg      } g d}t        j                  ddgddgg      }t        j                  |ddgz  |ddgz  |ddgz  |ddgz  f      }dgdz  dgdz  z   dgdz  z   dgdz  z   }t        j                  d	d
      }|j                  | |       |j                  |      }t        ||       |j                  |      }t        t        j                  |d      |       |t        d      |f   j                  d      }t        j                  |      dkD  sJ t        j                  |d d df   |d d df   k        sJ y )Nr$   r#   )r   r$   r%   r&   rH   r   r   r%   r&   r)   r   r   r   r   )r   r%   r.   )rN   rq   vstackr   r/   r0   r7   r   r   r   rw   reshapeminrz  )	r   r   base_pointsr   r   r9   r  deci_valpred_class_deci_vals	            r:   test_ovr_decision_functionr  }  s   hhAQ"bAr7;<GG ((QFRH-.K YY1a& 2q'!2r("1b'!		
F S1WsQw!q(A372F
''5
ACGGGW[[ F vv&$$V,H ryy2F; #58V#34<<VD 66%&,,, 66%ad+.A!Q$.GGHHHr<   SVCClassc                     t        d      \  }} | dddd      j                  ||      }t        j                  t        d      5   |j
                  |       d d d        y # 1 sw Y   y xY w)	Nr'   r   r)   r   T)r+   r   
break_tiesr   zbreak_ties must be Falser   )r   r0   rr   rs   rt   r7   )r  r1   rm   r   s       r:   !test_svc_invalid_break_ties_paramr    se    2&DAq
4VX	c!Qi  
z)C	D A  s   A##A,c                    t        ddd      \  }}t        j                  |dddf   j                         |dddf   j	                         d      }t        j                  |dddf   j                         |dddf   j	                         d      }t        j
                  ||      \  }}t        dd	d
d      } | dddi|j                  ||      } |j                  t        j                  |j                         |j                         f         }	 |j                  t        j                  |j                         |j                         f         }
t        j                  |	t        j                  |
d      k(        rJ  | dddi|j                  ||      } |j                  t        j                  |j                         |j                         f         }	 |j                  t        j                  |j                         |j                         f         }
t        j                  |	t        j                  |
d      k(        sJ y)zyTest if predict breaks ties in OVR mode.
    Related issue: https://github.com/scikit-learn/scikit-learn/issues/8277
    r   r   r%   )r   r   r  Nr   r$   r>   g    .Ar'   r   )r+   r   r   r   r  Fr   Tr  )r   rN   linspacer  r[  meshgriddictr0   r7   c_r   r   rz  r   )r  r1   rm   xsysxxyycommon_paramsr   ra   dvs              r:   test_svc_ovr_tie_breakingr    s   
 1qADAq	Qq!tW[[]AadGKKM3	7B	Qq!tW[[]AadGKKM3	7B[[R FBCb%M  
 
c!Qi  3;;ruuRXXZ345D			ruuRXXZ%;<	=Bvvdbii33444
 
 
c!Qi  3;;ruuRXXZ345D			ruuRXXZ%;<	=B66$"))BQ//000r<   c                      dgdggddg}} t        j                         }|j                  | |       t        |j                  d       y )Nr.   r   r   r$   r   )r   r/   r0   r   _gammar   s      r:   test_gamma_scaler    s=    EC5>Aq6qA
'')CGGAqM

A&r<   zSVM, params)rm  rj  r   epsilon_insensitiverj  r   squared_epsilon_insensitivec                 t   t        j                  ddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddggt        j                  d            }t        j                  g dt        j                  d            }t        j                  ||g      }t        j                  |d|z
  g      }t        j
                  t        |      dz  	      }d
|t        |      d  t        |||d
      \  }}} | d      } |j                  di | |j                  dd       t        j                  |      j                  ||      }t        j                  |      j                  |||      }	dD ]?  }
t        ||
      s t        ||
      |      } t        |	|
      |      }t        ||       A y )Nr$   r&   r%   r   float)r   )r$   r$   r$   r$   r%   r%   r%   r%   r$   r$   r$   r$   r%   r%   r%   r%   r   )r   r   r   r'   r   r  )r   r   r   )r7   r   r  )rN   rq   r   r  hstackr   rx   r   r	  r   r  r0   rP   getattrr   )r   paramsr1   rm   X2y2r   base_estimatorest_no_weightest_with_weightmethodX_est_no_weightX_est_with_weights                r:   &test_linearsvm_liblinear_sample_weightr    s    	FFFFFFFFFFFFFFFF!	
$ hhw'	A* 	8	A 
Aq6	B	Aq1u:	BGG#a&1*-MM#a&(#BMJBMb)NN''%$7JJ~.221a8Mjj044
Bm 5 O 3 @>6*<gmV<Q?O @ @ CO->?	@r<   Klassc                 `   t        j                  dgdgdgdgdgg      }t        j                  |j                  d         } |        }t	        |d      rJ |j                  ||       |j                  d   |j                  j                  d   k(  sJ |j                  j                  dk(  sJ y )Nr   g)\(?g?gq=
ףp?r$   
n_support_)	rN   rq   rC  r   rP   r0   r   r5   r   )r  r1   rm   r%  s       r:   test_n_supportr    s    
 	1#vvvs34A
		!''!*A
'CsL)))GGAqM>>! 4 4 : :1 ====>>!###r<   c                 2   g d}t        j                  ddgddgddgddgddgg      }t        j                  g d      }d } |||      }t        t        j                  ||j                        |        | |      j                  ||      } | d      j                  ||      } | d	      j                  ||      }|j                  ||      |j                  ||      k(  sJ |j                  ||      |j                  ||      k(  sJ t        |d
      rt        |j                  |      |j                  |             t        |j                  |      |j                  |             t        |j                  |      |j                  |             t        |j                  |      |j                  |             yt        |j                  |      |j                  |             t        |j                  |      |j                  |             y)zETest using a custom kernel that is not fed with array-like for floats)zA AABzB BzA Br%   r   r$   )r$   r$   r%   r%   r$   c           	         t        | d   t              sJ t        |       }t        |      }t        j                  ||f      }t        |      D ]  }t        ||      D ]r  }| |   j                  d      ||   j                  d      z  |||f<   |||fxx   | |   j                  d      ||   j                  d      z  z  cc<   |||f   |||f<   t  |S )Nr   r  r  )r  strr!   rN   zerosrw   count)X1r  
n_samples1
n_samples2ry   iijjs          r:   string_kernelz9test_custom_kernel_not_array_input.<locals>.string_kernel,  s    "Q%%%%!"%
!"%
HHj*-.
# 	&BB
+ &rFLL-2S0AA"b&	"b&	RV\\#.Bc1BBB	b"fI"b&	&	&
 r<   r*   r)   re   r   N)rN   rq   r   ri   rj   r0   r   rP   r   r   r7   )	r#  rL   r1   rm   r  ry   svc1svc2svc3s	            r:   "test_custom_kernel_not_array_inputr  %  s    +D
1a&1a&1a&1a&1a&9:A
!A
 	dD!Arvva~q)M*..tQ7DH%))!Q/DM*..q!4D::dA$**Q"2222::dA$**Q"2222t()..t4d6L6LQ6OP..t4d6L6LQ6OP4<<-t||A?4<<-t||A?T*DLLO<T*DLLO<r<   c                     t        j                  d      j                  t        t              } d| j
                  d<   d}t        j                  t        |      5  | j                  t               ddd       y# 1 sw Y   yxY w)zCheck that SVC raises error when internal representation is altered.

    Non-regression test for #18891 and https://nvd.nist.gov/vuln/detail/CVE-2020-28975
    r)   r*   i@B r   z.The internal representation of SVC was alteredr   N)
r   r/   r0   r1   r2   
_n_supportrr   rs   rt   r7   )r9   r^  s     r:   -test_svc_raises_error_internal_representationr  K  s`    
 ''
"
&
&q!
,CCNN1
:C	z	- A  s   A::Bzestimator, expected_n_iter_typedataset)r  n_informativer   r   c                 ,   |\  }} | d      j                  ||      j                  }t        |      |k(  sJ | t        j                  t        j
                  fv r:t        t        j                  |            }|j                  ||dz
  z  dz  fk(  sJ y y )Nr)   r*   r$   r%   )
r0   r  typer   r/   r   rx   rN   rE  r   )r  expected_n_iter_typer  r1   rm   n_iterr  s          r:   test_n_iter_libsvmr  X  s    0 DAqh'++Aq199F<////SWWcii((		!%	||	Y] ;q @BBBB )r<   c                      |        }d}t        j                  t        t        j                  |            5   |j
                  t        t               d d d        y # 1 sw Y   y xY w)NzThe default value of `dual` will change from `True` to `'auto'` in 1.5. Set the value of `dual` explicitly to suppress the warning.r   )rr   r  FutureWarningreescaper0   r1   r2   )r#  r   r^  s      r:   "test_dual_auto_deprecation_warningr!  y  sP    
+C	L  
m299S>	: 1  s   AA&c           	          t        d| ddt        j                  t                    }|du sJ t        d| ddt        j                  t              j                        }|du sJ y )Nr   ro  r   FTr   rN   asarrayr1   rj   r  s     r:   test_dual_autor%    sT     $FD$rzz!}MD5==#FD$rzz!}OD4<<r<   c            	          t        ddddt        j                  t                    } | du sJ t        ddddt        j                  t                    } | du sJ t        ddddt        j                  t              j                        } | d	u sJ y )
Nr   rk  ro  r   Tr  rl  rn  Fr#  r   s    r:   test_dual_auto_edge_casesr'    s    #FGT5"**Q-PD4<<#%tUBJJqMD 4<<#ubjjmooD 5==r<   )__doc__r  numpyrN   rr   numpy.testingr   r   r   r   sklearnr   r   r	   r
   r   sklearn.datasetsr   r   sklearn.exceptionsr   r   r   sklearn.metricsr   sklearn.metrics.pairwiser   sklearn.model_selectionr   sklearn.multiclassr   sklearn.svmr   r   r   r   r   r   sklearn.svm._classesr   rA  r   r   sklearn.utils._testingr   sklearn.utils.fixesr   r    sklearn.utils.validationr!   r1   r2   rj   ru   	load_irisrK   r\  permutationrM   r   permrL   r;   rc   r~   r   r   r   r   r   r   r   r   r   r   markparametrizer/   r   r   r   r  r  r  r  rx   r&  r+  r3  r8  rI  rV  r_  ra  rf  ri  rr  rv  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ndarrayr   r  r!  r%  r'  r  r<   r:   <module>r=     sa  
 
    ? > < 
 % / 4 2  : 5 2 > 1 	"XBx"bAq6Aq6Aq6:"X1v1v x
t{{''(IIdO	kk$*M$`FGRO(+(+VN<9
&EB #)) 45+ 6+4C,0. wsww			&DE F2 wsww			D8I&JK L29 	NO	LM	NO	PQ	VW 	8  
 S3q6\D6CF?#	34  
3
 3  GG	
 
01	 
   45	(  
3&3 	c6]KL	66"266BRST 
   [),>+MN	!78  
>> #''399cii06O   ./	!78  
77 01!
 2!
H .9# :#L .9% :% .9* :* '?!;<T4L1$/ 0 2 =*)>M* CF$
5 8;}} "AJ(*- B
"	 0 0&
""#01)IX cggsyy%9: ; cggsyy%9:1 ;1<' 	ouMN	otLM	ouMN	gtDE	2DAB	:DIJ	:DIJ,@,@^ ;U";<
$ =
$ sww&89"= :"=J
 %	"**	BJJ	#	C	#	 aqqIaqqIaqqIC	$C y)&<= > /3P!QR Sr<   