a
    )a                     @   st  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 d dlmZ d dlmZ d dlmZ d dlmZmZ d	d
 Zedde jde e jdejge jdejejgdd Zedde jde dd Zedde jde dd Zedde jde dd Zedde jde dd Zedde jde dd Z edde jde dd Z!dd Z"edde jde e jd d!d"ge jd#d$d%gd&d' Z#d(d) Z$edde jde e jd#d$d%gd*d+ Z%d,d- Z&edde jde e jd.d/d0d!d$d1d2d3d!d%d1gd4d5 Z'dS )6    N)assert_array_equalassert_array_almost_equal)NuSVC)datasets)
make_blobs)
rbf_kernel)train_test_split)
get_queuespass_if_not_implemented_for_gpuc                 C   s   |ddgddgddgddgddgddgg|d}|g d|d}t ddj||| d	}t|jg d
g t|jg d t|j||j  t|jdg t|j|| d	| d S )N      )dtyper   r   r   r   r   r   linearkernelqueue)g!K,ag!K,ag!K,a?g!K,a?)r   r                 )	r   fitr   
dual_coef_r   Zsupport_support_vectors_
intercept_predict)r   array_constrr   Xyclf r"   :lib/python3.9/site-packages/onedal/svm/tests/test_nusvc.py_test_libsvm_parameters!   s    r$   znusvc is not implemented)reasonr   r   r   c                 C   s   t | || d S N)r$   )r   r   r   r"   r"   r#   test_libsvm_parameters/   s    r'   c              	   C   sx   t ddgddgddgddgddgddgg}t g d}tddid}|j||| d t|j|| ddgd	  d S )
Nr   r   r   r   r   皙?)Zclass_weightr      )nparrayr   r   r   r   r   r   r    r!   r"   r"   r#   test_class_weight7   s
    .r-   c              	   C   sp   t ddgddgddgddgddgddgg}t g d}tdd}|j||dgd	 | d
 t|jdg d S )Nr   r   r   r   r   r   r   r   r)   )Zsample_weightr   r   )r*   r+   r   r   r   r   r,   r"   r"   r#   test_sample_weightB   s
    .
r.   c                 C   s   ddgddgddgddgddgddgg}g d}t dddd}|j||| d	 t||j|jd
}t||jj|j	 }t
| |j|| d	 d S )Nr   r   r   r   r   rbfovo)r   gammadecision_function_shaper   )r1   )r   r   r   r   r1   r*   dotr   Tr   r   Zraveldecision_function)r   r   Yr!   Zrbfsdecr"   r"   r#   test_decision_functionM   s    (r8   c                 C   sV   t  }tddj|j|j| d}|j|j|j| ddks>J t|jt	
|j d S )Nr   r   r   g?)r   	load_irisr   r   datatargetscorer   Zclasses_r*   sort)r   irisr!   r"   r"   r#   	test_iris[   s    r?   c           	      C   sh   t dddd\}}t||dd\}}}}tdddj||| d	}|j|| d	}|jt|d
fksdJ d S )NP      r   )Z	n_samplesZcentersrandom_state)rB   r   r0   )r   r2   r   
   )r   r   r   r   r5   shapelen)	r   r   r    ZX_trainZX_testZy_trainZy_testr!   r7   r"   r"   r#   test_decision_function_shaped   s    rF   c                 C   s~   t  }tddj|j|j| d}|j|j| d}dd l}||}|	|}t
||jks`J |j|j| d}t|| d S )Nr   r   r   r   )r   r9   r   r   r:   r;   r5   pickledumpsloadstype	__class__r   )r   r>   r!   expectedrG   dumpZclf2resultr"   r"   r#   test_picklet   s    

rO   c                 C   s   t  }td||d}|j|j|j| d |j|j|j| d}td||d}||j|j ||j|j}|dksxJ t|| dk sJ d S )Nr/   )r   r1   nur   g?-C6?	r   Zload_breast_cancerr   r   r:   r;   r<   SklearnNuSVCabs)r   rP   r1   cancerr!   rN   rL   r"   r"   r#   %_test_cancer_rbf_compare_with_sklearn   s    rV   r1   ZscaleautorP   g      ?      ?c                 C   s   t | || d S r&   )rV   )r   rP   r1   r"   r"   r#   $test_cancer_rbf_compare_with_sklearn   s    rY   c                 C   s   t  }td|d}|j|j|j| d |j|j|j| d}td|d}||j|j ||j|j}|dkstJ t|| dk sJ d S )Nr   )r   rP   r   rX   gMbP?rR   )r   rP   rU   r!   rN   rL   r"   r"   r#   (_test_cancer_linear_compare_with_sklearn   s    rZ   c                 C   s   t | | d S r&   )rZ   )r   rP   r"   r"   r#   'test_cancer_linear_compare_with_sklearn   s    r[   c                 C   s   t  }tf ddi|}|j|j|j| d |j|j|j| d}tf ddi|}||j|j ||j|j}|dksJ t|| dk sJ d S )Nr   Zpolyr   rX   rQ   rR   )r   paramsrU   r!   rN   rL   r"   r"   r#   &_test_cancer_poly_compare_with_sklearn   s    r]   r\   r   r(   )ZdegreeZcoef0r1   rP   r   r   c                 C   s   t | | d S r&   )r]   )r   r\   r"   r"   r#   %test_cancer_poly_compare_with_sklearn   s    r^   )(ZpytestZnumpyr*   Znumpy.testingr   r   Z
onedal.svmr   Zsklearn.svmrS   Zsklearnr   Zsklearn.datasetsr   Zsklearn.metrics.pairwiser   Zsklearn.model_selectionr   Z$onedal.tests.utils._device_selectionr	   r
   r$   ZmarkZparametrizer+   Zfloat32Zfloat64r'   r-   r.   r8   r?   rF   rO   rV   rY   rZ   r[   r]   r^   r"   r"   r"   r#   <module>   sh   		