o
    M+ i                     @   s  d dl 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mZ d dlmZ dd Zdd	 Zejd
ejjde dd ddd Zejd
ejdejdd gejjde dd ddd Zejd
ejdejdgejjde dd dejdedd Zejd
ejjde dd dejdddgdd Zejjde d d dejdddgd!d" Zejd#ddgejjde d$d dd%d& Zejjde d'd dejd(ejd)gd*d+ ZdS ),    N)enable_iterative_imputerIterativeImputer
KNNImputerSimpleImputer)assert_allcloseassert_allclose_dense_sparseassert_array_equal)CSR_CONTAINERSc                   C   s   t ddt t gS )Ng?)Ztolr    r   r   l/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/sklearn/impute/tests/test_common.pyimputers   s   r   c                   C   s   t  gS N)r   r   r   r   r   sparse_imputers   s   r   z-ignore::sklearn.exceptions.ConvergenceWarningimputerc                 C      | j jS r   	__class____name__xr   r   r   <lambda>       r   )idsc                 C   s:   dgdgg}dgt jgg}| jdd | || d S )N         Tadd_indicator)npnan
set_paramsfit	transform)r   traintestr   r   r   +test_imputation_missing_value_in_test_array   s   r&   markerc                 C   r   r   r   r   r   r   r   r   %   r   c              
   C   s   t | dd| dgd| d| dgdd| | dgddd| dgg}t g dg d	g d
g dg}|j| dd ||}t|d d dd f | t|jjt g d |jdd ||}t|d d d df | d S Nr      r      r   	      )      ?        r/   r.   )r/   r.   r/   r.   )r/   r/   r.   r.   )r/   r/   r/   r.   T)missing_valuesr   )r   r   r   r   Fr   )r   arrayr!   fit_transformr   r	   
indicator_	features_)r'   r   XX_true_indicatorX_transX_trans_no_indicatorr   r   r   test_imputers_add_indicator#   s*   

r:   c                 C   r   r   r   r   r   r   r   r   F   r   csr_containerc              	   C   s   ||dd|dgd|d|dgdd||dgddd|dgg}|g dg d	g d
g dg}| j |dd | |}t|d d dd f | t| jjtg d | j dd | |}t|d d d df | d S r)   )r!   r3   r   r	   r4   r5   r   r2   )r   r'   r;   r6   r7   r8   r9   r   r   r   "test_imputers_add_indicator_sparseC   s*   

r<   c                 C   r   r   r   r   r   r   r   r   g   r   r   TFc              
   C   s   t d}tj}| j||d} t|dd|dgd|d|dgdd||dgddd|d	gg}| |}|j|d
g dd}| |}t|| d S )Npandasr   r0   r   r*   r   r+   r   r,   r-   ZInt16)abcde)Zdtypecolumns)	pytestimportorskipr   r    r!   r2   r3   	DataFramer   )r   r   pdr'   r6   ZX_trans_expectedX_dfr8   r   r   r   -test_imputers_pandas_na_integer_array_supportf   s   

	
rJ   c                 C   r   r   r   r   r   r   r   r      r   c                 C   s   t d}tj}| j||d} t|ddd|dgd|dd|dgddd	||dgddd
d|dgg}|j|g dd}| | |  }|rOg d}t	|| dS g d}t	|| dS )z%Check feature names out for imputers.r=   r>   r   r*   r   r   r-   r+      r,      )r?   r@   rA   rB   rC   f)rD   )	r?   r@   rA   rB   rM   Zmissingindicator_aZmissingindicator_bZmissingindicator_dZmissingindicator_e)r?   r@   rA   rB   rM   N)
rE   rF   r   r    r!   r2   rG   r"   Zget_feature_names_outr	   )r   r   rH   r'   r6   rI   namesZexpected_namesr   r   r   &test_imputers_feature_names_out_pandas   s$   

rO   keep_empty_featuresc                 C   r   r   r   r   r   r   r   r      r   c                 C   s   t t jdgt jdgt jdgg}| jd|d} dD ]%}t| ||}|r.|j|jks-J q|j|jd |jd d fks?J qdS )	z?Check that the imputer keeps features with only missing values.r   r   r   F)r   rP   )r3   r#   r   N)r   r2   r    r!   getattrshape)r   rP   r6   methodZ	X_imputedr   r   r   test_keep_empty_features   s   "$rT   c                 C   r   r   r   r   r   r   r   r      r   missing_value_testr   c                 C   s   t dt jgddgg}t d|gddgg}| jdd | | | |}|jdks.J | jdd | | | |}|jdksEJ t|d	d	d	d
f | t |r\ddg}nddg}t|d	d	d
f | d	S )zoCheck that missing indicator always exists when add_indicator=True.

    Non-regression test for gh-26590.
    r   r   r   Tr   )r   r   F)r   r   Nr(   )	r   r2   r    r!   r"   r#   rR   r   isnan)r   rU   ZX_trainZX_testZX_test_imputed_with_indicatorZ X_test_imputed_without_indicatorZexpected_missing_indicatorr   r   r   ?test_imputation_adds_missing_indicator_if_add_indicator_is_true   s"   	





rW   )numpyr   rE   Zsklearn.experimentalr   Zsklearn.imputer   r   r   Zsklearn.utils._testingr   r   r	   Zsklearn.utils.fixesr
   r   r   markfilterwarningsZparametrizer&   r    r:   r<   rJ   rO   rT   rW   r   r   r   r   <module>   sF    




%