a
    <>e                     @   sv   d dl Zd dlmZ d dlmZ d dlmZ d dl	Z	dd Z
ddd	Zd
d Zdd Zdd ZdddZdddZdS )    N)r2_score)tc                 C   s.   t ddd}t | |}t ||}||fS )N      )nplinspaceappendpolyval)coeffs	intercept	x_perfectZfull_coeffs	y_perfect r   */var/www/html/polynomial_data_generator.pygenerate_target_polynomial   s    r   normal   c                 C   s   t |}t||d  }tt jj||dd}	t|D ]}
|dkrTt jd|}n:|dkrnt j| |}n |dkrt j	d|}nt
d|
|	v r||9 }|d u st||kr<|||
< q8q<q8| | }|S )	Nd   F)replacer   r   uniformlaplacez=Invalid noise type. Choose 'normal', 'uniform', or 'laplace'.)r   zerosintsetrandomchoiceranger   r   r   
ValueErrorabs)r   std_devn
noise_typeoutlier_percentageoutlier_multiplierrejection_thresholdnoisenum_outliersoutlier_indicesinoise_sampley_noisyr   r   r   generate_noisy_data   s$    
r,   c                 C   s,   t | ||}t || }t||}||fS N)r   polyfitr
   r   )xr+   poly_degreer   y_pred	r_squaredr   r   r   fit_noisy_data-   s    
r3   c                 C   s0   t | | }| d d | }|d d | }||fS r-   )len)r/   r+   r!   stepx_subsety_subsetr   r   r   subset_noisy_data3   s    r8   c                 C   s"   t dd|}t | |}||fS )Nr   r   )r   r   r
   )final_coeffsr!   x_refy_refr   r   r   generate_reference_line9   s    r<   ffffff?c                 C   s   t | }t|| }t|| d || d  }t| }t| | d }	t|d| | | d |	   }
td| d || d }|||
  }|||
  }||fS )N   r   )r4   r   r
   summeansqrtr   ppf)r/   r+   r   r0   confidence_levelr!   r1   ZMSEx_meanZSxxset_valueci_lowerci_upperr   r   r   calculate_confidence_intervals@   s    
"rI   2   c
              
   C   s   t | |\}
}t||d||||}t|
||\}}t|||\} }t| d\}}t||| ||	\}}|
 | | | | | || | d	}t| | |fS )Nr   )	r   r   x_noisyr+   x_referencey_referencer2   rG   rH   )r   r,   r8   r3   r<   rI   tolistprint)r   r   r    Zsubset_nr"   r0   	thresholdr#   r$   rC   r   r   r+   x_noisy_subsety_noisy_subsetr2   rL   rM   rG   rH   datar   r   r   poly_fit_and_store_resultsW   s$    rT   )r   r   r   N)r=   )r   rJ   r=   )numpyr   matplotlib.pyplotpyplotpltsklearn.metricsr   scipy.statsr   timer   r,   r3   r8   r<   rI   rT   r   r   r   r   <module>   s   

