o
    tBh                     @   sN  d dl mZ d dlZd dlmZ d dl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lmZ d d	lmZ d d
lmZ d dlmZ ed Ze ZeejjZeje e_eje e_dd Zdd Zdd Zd*ddZ dd Z!dd Z"dd Z#dd Z$dd Z%dd  Z&eej'd!d"gd#d$ Z(ej)*d%d&d'gd(d) Z+dS )+    )sqrtN)	neighbors)assert_array_equal)metrics)roc_auc_score)check_random_state)assert_array_almost_equal)check_outlier_corruption)parametrize_with_checks)	load_irisc               	   C   s   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d}|| j}t|j|  t|d d t|dd  ks@J t jd	dd
| }t|	 ddg ddg   t|
| ddg ddg   d S )N            n_neighborsg      ?)contaminationr      )r   LocalOutlierFactorfitnegative_outlier_factor_r   _fit_Xnpminmax_predictfit_predict)Xclfscore r#   w/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/sklearn/neighbors/tests/test_lof.pytest_lof!   s   4($r%   c                  C   s   t d} d| dd }|d d }| jdddd}tj|dd  |f }td	gd
 dgd
  }tjdd|}|	| }t
||dksJJ d S )Nr   g333333?x   d   r      )   r   )lowhighsizer   r)   r   TnoveltygGz?)r   randnuniformr   r_arrayr   r   r   decision_functionr   )rngr    X_train
X_outliersX_testy_testr!   y_predr#   r#   r$   test_lof_performance3   s   r:   c                  C   s  ddgddgddgg} t jdddd| }t jddd| }dtd dtd  }dtd dd	td  dddtd     }t|j |||g t|j |||g t|ddgg |g t|ddgg |g t|ddgg |g t|ddgg |g d S )
Nr   r   皙?Tr   r   r.   r   r.          @g      ?g      @)r   r   r   r   r   r   score_samples)r5   clf1clf2s_0s_1r#   r#   r$   test_lof_valuesH   s   0rD   *   c                 C   s   t j| }|d}|d}tj|dd}tj||dd}tjddd}|| |	 }|
|}tjddd	dd
}	|	| |		 }
|	
|}t||
 t|| dS )z!Tests LOF with a distance matrix.)
   r(   )r   r(   	euclidean)metricr   Tr=   bruteprecomputed)r   	algorithmrH   r.   N)r   randomRandomStaterandom_sampler   pairwise_distancesr   r   r   r   predictr   )random_stater4   r    YDXXDYXlof_Xpred_X_Xpred_X_Ylof_Dpred_D_Xpred_D_Yr#   r#   r$   test_lof_precomputed\   s"   






r[   c                  C   s   t j} tjdd| }|j| jd d ksJ tjdd}d}tjt	t
|d ||  W d    n1 s:w   Y  |j| jd d ksKJ d S )Ni  r   r   r   z*n_neighbors will be set to (n_samples - 1)match)irisdatar   r   r   n_neighbors_shapepytestwarnsUserWarningreescape)r    r!   msgr#   r#   r$   test_n_neighbors_attributev   s   rh   c                  C   s   ddgddgddgg} t jdddd| }t jddd| }t|ddgg|ddgg|j  t|ddgg|ddgg|j  t|ddgg|ddgg d S )Nr   r   r;   Tr<   r=   r>   )r   r   r   r   r?   r3   offset_)r5   r@   rA   r#   r#   r$   test_score_samples   s$   rj   c                  C   sV   ddgddgg} t jdd}tt ||  W d    d S 1 s$w   Y  d S )Nr   r   g333333?r   )r   r   rb   raises
ValueErrorr   r    r!   r#   r#   r$   test_contamination   s
   "ro   c               	   C   s   t j} t }||  dD ]#}d|}tjt|d t	|| W d    n1 s,w   Y  qtjdd}d}tjt|d t	|d W d    d S 1 sRw   Y  d S )N)rP   r3   r?   z&{} is not available when novelty=Falser\   Tr-   z.fit_predict is not available when novelty=Truer   )
r^   r_   r   r   r   formatrb   rl   AttributeErrorgetattr)r    r!   methodrg   r#   r#   r$   test_novelty_errors   s   

"rt   c                  C   sH   t j} t }||  |j}tjdd}||  |j}t|| d S )NTr-   )r^   r_   r   r   r   r   r   )r    clf_1scores_1clf_2scores_2r#   r#   r$   test_novelty_training_scores   s   

ry   c                  C   s   ddgddgddgg} t jdd}||  t|dsJ t|ds$J t|ds+J t|dr2J t jd	d}||  t|dsDJ t|drKJ t|drRJ t|drYJ d S )
Nr   r   Tr-   rP   r3   r?   r   F)r   r   r   hasattrrn   r#   r#   r$   test_hasattr_prediction   s   

r{   Tr-   c                 C   s   ||  d S )Nr#   )	estimatorcheckr#   r#   r$   test_novelty_true_common_tests   s   r~   expected_outliers   5   c                 C   sb   t j}|jd }t| | }tj|d}||}t|dk}|| kr/|j	}t
|| | d S d S )Nr   rk   r   )r^   r_   ra   floatr   r   r   r   sumr   r	   )r   r    	n_samplesr   r!   r9   num_outliersy_decr#   r#   r$   test_predicted_outlier_number   s   

r   )rE   ),mathr   numpyr   sklearnr   re   rb   numpy.testingr   r   sklearn.metricsr   sklearn.utilsr   sklearn.utils._testingr   sklearn.utils.estimator_checksr	   r
   sklearn.datasetsr   r4   r^   permutationtargetr,   permr_   r%   r:   rD   r[   rh   rj   ro   rt   ry   r{   r   r~   markparametrizer   r#   r#   r#   r$   <module>   s@   

