
    Tf'	                     P    d Z ddlZddlmc mZ ddlZddlm	Z	 ddl
mZ d Zd ZdS )z5
Created on Sat May 11 18:04:09 2024

@author: atdou
    N)*Categorical_Polynomial_Logistic_Regression)create_classy_datac                  D   d } t                      }|                    ddddd           |                    | ddgdd	           |j        }|j        }t          g d
dd          }|                    ||           t          j        |	                    |                    }||k    
                                t          |          z  }t          |           d}||z
  }d}	||	k    }
|
st          j        d|
fd||	f          t          j        |          dt!          j                    v st          j        |          rt          j        |          ndt          j        |	          dz  }dd|iz  }t'          t          j        |                    dx}x}x}
}	dS )aM  
    Description
    -----------
    testing that the Categorical_Polynomial_Logistic_Regression guy is finding the correct classes on 
    data with no outliers and no deviations from the fit, f.  I guess we can't demand a perfect fit, per se'.  
    Well, I can get 100% accuracy if I play with C hyperparameter, but whatever.
    c                 .    d } ||           dk    rdS dS )Nc                     d| d         dz  z  d| d         z  | d         z  z
  d| d         z  z   d| d         dz  z  z   d| d         z  z
  dz
  S N
   r                   xs    eC:\Users\atdou\OneDrive\Desktop\Files\Coding\Python\Programs\XtraMLTools\tests\test_Classification.pypolyz.test_classification_1.<locals>.f.<locals>.poly   Y    qtai<!AaD&1+-!A$61Q47BQqtVKbPP    r   r   r   r   r   s     r   fz test_classification_1.<locals>.f   s/    	Q 	Q 	Q477a<<11r   r
     r      x_minx_maxNn_outdimr   funcf_valuesp_normp_outx_0x_1x_2)poly_columnsdegreeC{Gzt?<=z(%(py1)s - %(py2)s) <= %(py6)spercent_correctpy1py2py6assert %(py8)spy8Nr   set_Xset_yXyr   fitpandasSeriespredictsumlenprint
@pytest_ar_call_reprcompare	_saferepr@py_builtinslocals_should_repr_global_nameAssertionError_format_explanationr   data_expr;   r<   CPLRy_predr1   @py_assert0@py_assert3@py_assert5@py_assert4@py_format7@py_format9s                r   test_classification_1rV      s      "##HNN1A1N===NNQqE!1N===
A
A5CXCXCXabfghhhDHHQqMMM]4<<??++FV((**CFF2O	/''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''r   c                  F   d } t                      }|                    ddddd           |                    | g dd	d	
           |j        }|j        }t          g dddd          }|                    ||           t          j        |	                    |                    }||k    
                                t          |          z  }t          |           d	}||z
  }d}	||	k    }
|
st          j        d|
fd||	f          t          j        |          dt!          j                    v st          j        |          rt          j        |          ndt          j        |	          dz  }dd|iz  }t'          t          j        |                    dx}x}x}
}	dS )zT
    Description
    -----------
    Now doing the same, but with three classes
    c                 P    d } ||           dk    rdS  ||           dk    rdS dS )Nc                     d| d         dz  z  d| d         z  | d         z  z
  d| d         z  z   d| d         dz  z  z   d| d         z  z
  dz
  S r   r   r   s    r   r   z.test_classification_2.<locals>.f.<locals>.poly1   r   r   r   r   r   r
   r   r   s     r   r   z test_classification_2.<locals>.f0   sE    	Q 	Q 	Q477a<<1T!WW\\11r   r   r
   r   r   r   r   )r   r   r
   r   r!   r&   r	   i  )r*   r+   r,   max_iterr-   r.   r0   r1   r2   r6   r7   Nr8   rL   s                r   test_classification_2r[   *   s      "##HNN1A1N===NNGGGAQN???
A
A5CXCXCXabfhswxxxDHHQqMMM]4<<??++FV((**CFF2O	/''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''r   )__doc__builtinsrG   _pytest.assertion.rewrite	assertionrewriterD   r>   XtraMLTools.Classificationr   auxiliary_classesr   rV   r[   r   r   r   <module>rc      s                  Q Q Q Q Q Q 0 0 0 0 0 0( ( (8( ( ( ( (r   