o
    Ú­j¥  ã                   @   sž   d Z ddlmZmZmZ ddlZddlmZ ddl	m
Z
 ddlmZ dd	lmZ 		
ddededee deeef ddf
dd„Zdedededdfdd„ZdS )z"Tests for interaction constraints.é    )ÚOptionalÚSequenceÚUnionNé   )ÚFeatureNames)ÚDMatrix)Útrainé   )ÚDeviceú[[0, 1]]Útree_methodÚdeviceÚfeature_namesÚinteraction_constraintsÚreturnc                    sP  t jjdddd�‰t jjdddd�‰t jjg d¢ddd�}ˆˆ | ˆˆ |  t jjdddd� dt  ˆ¡  }t  ˆˆ|f¡}t||ˆd	�}dd
d|| |dœ}d}	t|||	|dfgd�‰ dtdt j	f‡ ‡‡‡fdd„‰‡fdd„dD ƒ}
|
d |
d  }t  
t  ||d  ¡dk ¡sŽJ ‚|
d |
d  }t  
t  ||d  ¡dk ¡s¦J ‚dS )z5Tests interaction constraints on a synthetic dataset.g      ð?éè  )ÚlocÚscaleÚsize)r	   r   é   T)r   Úreplacegü©ñÒMbP?r   )Úlabelr   çš™™™™™¹?r   )Ú	max_depthÚetaÚnthreadr   r   r   é   r   )ÚevalsÚxr   c              	      s*   t t ˆˆt | d¡f¡ˆd�}ˆ  |¡S )Nr   )r   )r   ÚnpÚcolumn_stackÚrepeatÚpredict)r   Útmat)Úbstr   Úx1Úx2© úd/var/www/html/CropPilot/venv/lib/python3.10/site-packages/xgboost/testing/interaction_constraints.pyÚf/   s   ÿ
z&run_interaction_constraints.<locals>.fc                    s   g | ]}ˆ |ƒ‘qS r'   r'   )Ú.0r   )r)   r'   r(   Ú
<listcomp>5   s    z/run_interaction_constraints.<locals>.<listcomp>r	   r   g-Cëâ6?N)r   ÚrandomÚnormalÚchoiceÚsinr    r   r   ÚintÚndarrayÚallÚabs)r   r   r   r   Úx3ÚyÚXÚdtrainÚparamsÚnum_boost_roundÚpredsÚdiff1Údiff2r'   )r$   r)   r   r%   r&   r(   Úrun_interaction_constraints   s@   ÿþ
ýüûÿú $r=   Údpathc           
      C   s®   ddl m} t|d ƒ}t|d ƒ}ddd| |dd	œ}d
}d|d< t|||ƒ}| |¡dk }	|| ¡ |	ƒdk s9J ‚d|d< t|||ƒ}| |¡dk }	|| ¡ |	ƒdk sUJ ‚dS )z#Test accuracy, reused by GPU tests.r   )Úaccuracy_scorez0agaricus.txt.train?indexing_mode=1&format=libsvmz/agaricus.txt.test?indexing_mode=1&format=libsvmr	   é   zbinary:logisticz[[1,2], [2,3,4]])r   r   Ú	objectiver   r   r   é   Ú	lossguideÚgrow_policyg      à?r   Ú	depthwiseN)Úsklearn.metricsr?   r   r   r"   Ú	get_label)
r   r>   r   r?   r7   Údtestr8   r9   r$   Ú
pred_dtestr'   r'   r(   Útraining_accuracy@   s&   úrJ   )Nr   )Ú__doc__Útypingr   r   r   Únumpyr   Ú_typingr   Úcorer   Útrainingr   Úutilsr
   Ústrr=   rJ   r'   r'   r'   r(   Ú<module>   s*    üÿþý
ü
û3