o
    \iA                     @   s  d dl Zd dlZd dlmZmZ d dlmZ d dlm	Z	 d dl
mZ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mZmZ ed
dZde d ZeeegZejdZ e!e j"e#eddZ$ee$ddf  de %e#e$dd  7  < eddd f ddej&f Zedddf Zdd Z'dd Z(dd Z)dd Z*dd Z+dd Z,d d! Z-d"d# Z.d$d% Z/d&d' Z0d(d) Z1d*d+ Z2ej34d,ee e d-d. Z5d/d0 Z6d1d2 Z7d3d4 Z8d5d6 Z9d7d8 Z:d9d: Z;d;d< Z<d=d> Z=d?d@ Z>dS )A    N)assert_array_almost_equalassert_array_equal)make_regression)ConvergenceWarning)LinearRegressionOrthogonalMatchingPursuitRANSACRegressorRidge)_dynamic_max_trials)check_random_state)assert_allclose)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSi8   皙?     size2      
      c                  C   sN   t  } t| dddd}|tt t|jtj	}d|t
< t|j| d S Nr      r   min_samplesresidual_thresholdrandom_stateFr   r   fitXynp	ones_likeinlier_mask_astypebool_outliersr   	estimatorransac_estimatorref_inlier_mask r.   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/linear_model/tests/test_ransac.pytest_ransac_inliers_outliers    s   r0   c                  C   s   dd } t jd}|dd}|dd}t }t|dd| dd}tt |	|| W d    d S 1 s9w   Y  d S )	Nc                 S   s(   | j d dks	J |j d dksJ dS Nr   r   Fshaper"   r#   r.   r.   r/   is_data_valid1      z0test_ransac_is_data_valid.<locals>.is_data_validr   r   r   r   r   )r   r   r5   r   )
r$   randomRandomStaterandr   r   pytestraises
ValueErrorr!   )r5   rngr"   r#   r+   r,   r.   r.   r/   test_ransac_is_data_valid0   s   "r>   c                  C   s\   dd } t  }t|dd| dd}tt |tt W d    d S 1 s'w   Y  d S )Nc                 S   s(   |j d dks	J |j d dksJ dS r1   r2   r+   r"   r#   r.   r.   r/   is_model_validG   r6   z2test_ransac_is_model_valid.<locals>.is_model_validr   r   r   )r   r   r@   r   )r   r   r:   r;   r<   r!   r"   r#   )r@   r+   r,   r.   r.   r/   test_ransac_is_model_validF   s   "rA   c                  C   s   t  } t| ddddd}tt |tt W d    n1 s"w   Y  tt	tt	t
 tjd dd}t| dd}tdD ]}|jd|d |tt |j|d	 k sYJ qAd S )
Nr   r   r   )r   r   
max_trialsr   gv?r   r   r   r   r   )r   r   r:   r;   r<   r!   r"   r#   r
   lenr)   r3   range
set_params	n_trials_)r+   r,   rB   ir.   r.   r/   test_ransac_max_trialsX   s$    rJ   c                  C   s6   t  } t| ddddd}|tt |jdksJ d S )Nr   r   r   )r   r   stop_n_inliersr   r   r   r   r!   r"   r#   rH   r+   r,   r.   r.   r/   test_ransac_stop_n_inliersp      rN   c                  C   s6   t  } t| ddddd}|tt |jdksJ d S )Nr   r   r   )r   r   
stop_scorer   r   rL   rM   r.   r.   r/   test_ransac_stop_score~   rO   rQ   c                  C   s   t dd d d f } t d}d|d< d|d< t }t|dddd}|| | || dd  |dd  dks;J || d d |d d dk sMJ d S Nd   rS   r   r   r   g      ?r   )r$   arangezerosr   r   r!   scorer"   r#   r+   r,   r.   r.   r/   test_ransac_score   s   
$(rY   c                  C   sl   t dd d d f } t d}d|d< d|d< t }t|dddd}|| | t|| t d d S rR   )r$   rU   rV   r   r   r!   r   predictrX   r.   r.   r/   test_ransac_predict   s   
r[   c                  C   s   dd } t  }t|| dd}d}tjt|d |tt W d    n1 s(w   Y  |jdks4J |j	dks;J |j
dksBJ d S )Nc                 S      dS NFr.   r4   r.   r.   r/   r5         z0test_ransac_no_valid_data.<locals>.is_data_validr   )r5   rB   +RANSAC could not find a valid consensus setmatchr   r   r   r:   r;   r<   r!   r"   r#   n_skips_no_inliers_n_skips_invalid_data_n_skips_invalid_model_r5   r+   r,   msgr.   r.   r/   test_ransac_no_valid_data      rh   c                  C   s   dd } t  }t|| dd}d}tjt|d |tt W d    n1 s(w   Y  |jdks4J |j	dks;J |j
dksBJ d S )Nc                 S   r\   r]   r.   r?   r.   r.   r/   r@      r^   z2test_ransac_no_valid_model.<locals>.is_model_validr   )r@   rB   r_   r`   r   rb   )r@   r+   r,   rg   r.   r.   r/   test_ransac_no_valid_model   ri   rj   c                  C   s   dd } t  }t|| ddd}d}tjt|d |tt W d    n1 s)w   Y  |jdks5J |j	d	ks<J |j
dksCJ d S )
Nc                 S   r\   r]   r.   r4   r.   r.   r/   r5      r^   z3test_ransac_exceed_max_skips.<locals>.is_data_validr      )r5   rB   	max_skipsz/RANSAC skipped more iterations than `max_skips`r`   r      rb   rf   r.   r.   r/   test_ransac_exceed_max_skips   s   rn   c                  C   s   da dd } t }t|| ddd}d}tjt|d |tt W d    n1 s+w   Y  |j	d	ks7J |j
d
ks>J |jd	ksEJ d S )NFc                 S   s   t sda dS dS )NTF)
cause_skipr4   r.   r.   r/   r5      s   z8test_ransac_warn_exceed_max_skips.<locals>.is_data_validrk   r   )r5   rl   rB   zRANSAC found a valid consensus set but exited early due to skipping more iterations than `max_skips`. See estimator attributes for diagnostics.r`   r   rm   )ro   r   r   r:   warnsr   r!   r"   r#   rc   rd   re   )r5   r+   r,   warning_messager.   r.   r/   !test_ransac_warn_exceed_max_skips   s   rr   sparse_containerc                 C   sV   | t }t }t|dddd}||t t|jtj	}d|t
< t|j| d S r   )r"   r   r   r!   r#   r$   r%   r&   r'   r(   r)   r   )rs   X_sparser+   r,   r-   r.   r.   r/   test_ransac_sparse   s   ru   c                  C   sX   t  } t| dddd}td dddd}|tt |tt t|t|t d S )Nr   r   r   r   )r   r   r!   r"   r#   r   rZ   )r+   r,   ransac_none_estimatorr.   r.   r/   test_ransac_none_estimator  s   rw   c                  C   sf  t  } t| dddd}t| dtjd  ddd}t| dddd}t| ddd}t| tjd d ddd}tt d ddd}|tt |tt |tt |tt t|t|t t|t|t t|t|t t	
t |tt W d    n1 sw   Y  d}t	j
t|d	 |tt W d    d S 1 sw   Y  d S )
Nr   r   r   r   g       @)r   r   r   z(`min_samples` needs to be explicitly setr`   )r   r   r"   r3   r	   r!   r#   r   rZ   r:   r;   r<   )r+   ransac_estimator1ransac_estimator2ransac_estimator5ransac_estimator6ransac_estimator7ransac_estimator8err_msgr.   r.   r/   test_ransac_min_n_samples  sP   
"r   c                  C   s^   t  } t| dddd}ttttg}|t| t|j	tj
}d|t< t|j| d S r   )r   r   r$   column_stackr#   r!   r"   r%   r&   r'   r(   r)   r   )r+   r,   yyyr-   r.   r.   r/   %test_ransac_multi_dimensional_targetsM  s   r   c            	      C   s  dd } dd }dd }t tttg}t }t|ddd	d
}t|ddd	| d}t|ddd	|d}|t| |t| |t| t|t|t t|t|t |tt ||_	|tt t|t|t t|ddd	dd}|tt t|t|t d S )Nc                 S   s   t jt | | ddS )Nr   axis)r$   sumabsy_truey_predr.   r.   r/   loss_multi1a  s   z.test_ransac_residual_loss.<locals>.loss_multi1c                 S   s   t j| | d ddS )Nr   r   r   )r$   r   r   r.   r.   r/   loss_multi2d  s   z.test_ransac_residual_loss.<locals>.loss_multi2c                 S   s   t | | S )N)r$   r   r   r.   r.   r/   	loss_monog  s   z,test_ransac_residual_loss.<locals>.loss_monor   r   r   r   )r   r   r   losssquared_error)
r$   r   r#   r   r   r!   r"   r   rZ   r   )	r   r   r   r   r+   ransac_estimator0rx   ry   ransac_estimator3r.   r.   r/   test_ransac_residual_loss`  s`   	r   c                  C   sL   t  } t| ddd}|tt t|jtj	}d|t
< t|j| d S )Nr   r   rD   Fr    r*   r.   r.   r/   &test_ransac_default_residual_threshold  s   r   c                   C   s   t dddddksJ t dddddksJ t dddddks!J t ddddd	ks,J t d
ddddks7J t dddddksBJ t dddddksMJ t dddddksXJ t d
ddddkscJ t dddddksnJ t ddddtdks{J d S )NrS   r   gGz?r   _   Z   rk   F      r         r   	   N   i  r   r   inf)r
   floatr.   r.   r.   r/   test_ransac_dynamic_max_trials  s   r   c               	   C   s  t dd} tjd }t|}| jtt|d | jjd |ks!J t| j	tj
}d|t< t| j| td}|ddddg}tjd| d	 }|ddd}|dd
ddg}|ddd}	|ddd}
tjtj||ddtj||	dddd}tjtjtj||ddtj|
|	dddd}| || | jj}t||	}tj||dd}t||
}| j|||d t| jj| t }t |dd} |jj d}tjt|d | jtt|d W d    d S 1 sw   Y  d S )Nr   r   sample_weightFr   r   r   r   r   r   ir   rC   z  does not support sample_weight.r`   )r   r#   r3   r$   onesr!   r"   r&   r%   r'   r(   r)   r   r   randintndarrayflattenappendrepeat
estimator_coef_r   r   	__class____name__r:   r;   r<   )r,   	n_samplesweightsr-   r   X_y_r   	outlier_Xoutlier_weight	outlier_yX_flaty_flat	ref_coef_r+   r~   r.   r.   r/   test_ransac_fit_sample_weight  sP   


"r   c                  C   s   t ddd\} }td}|jdd|jd d}||  }tdd	}|j| ||d
 t }|j}|j| | || || d
 t	|j
j|jdd d S )Nr   r   )r   r   *   r   rm   r   r   r   r   g-q=)atol)r   r   r   r3   r   r   r!   r   r&   r   r   r   )r"   r#   r=   r   ransacfinal_modelmask_samplesr.   r.   r/   )test_ransac_final_model_fit_sample_weight  s   
r   c                  C   s^   t ddddf } t d}t }t|dd}|| | t|jjd t|jj	d dS )zCheck that we can fit a line where all samples are inliers.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/19497
    rS   NrT   r   r   g        )
r$   rU   rV   r   r   r!   r   r   r   
intercept_rX   r.   r.   r/   test_perfect_horizontal_line  s   
r   )?numpyr$   r:   numpy.testingr   r   sklearn.datasetsr   sklearn.exceptionsr   sklearn.linear_modelr   r   r   r	   sklearn.linear_model._ransacr
   sklearn.utilsr   sklearn.utils._testingr   sklearn.utils.fixesr   r   r   rU   r"   r#   r   datar7   r8   r=   uniquer   rE   r)   r9   newaxisr0   r>   rA   rJ   rN   rQ   rY   r[   rh   rj   rn   rr   markparametrizeru   rw   r   r   r   r   r   r   r   r   r.   r.   r.   r/   <module>   sV    ,
.> 7