a
    �ù»j�×  ã                   @   sŒ  d Z ddlZddl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ZddlZddlZddl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!m"Z"m#Z# dZ$dZ%G dd„ dƒZ&eedd�Zdd„ Z'ej( )ddddidddfddddœdddfdddidddfddddœdddfd dd id!d"dfd d#ddœd!d"dfd$dd$id%d&d'fd(dd(id)d*dfd(d+d,id)d*dfd-dd-id"d.dfd-d+d/id"d.dfd0dd0id1d%dfg¡ej( )d2d3d4g¡ej( )d5dd6g¡d7d8„ ƒƒƒZ*ej( )ddddidddfddddœdddfdddidddfddddœdddfd dd id!d"dfd d#ddœd!d"dfd$dd$id%d&d'fd(dd(id)d*dfd(d+d,id)d*dfd-dd-id"d.dfd-d+d/id"d.dfg¡ej( )d2d3d4g¡d9d:„ ƒƒZ+ej( )dg d;¢¡d<d=„ ƒZ,ej( )d2d3d4g¡d>d?„ ƒZ-ej( )d2d3d4g¡d@dA„ ƒZ.ej( )d2d3d4g¡ej( )dBdCdCdDgg¡dEdF„ ƒƒZ/ej( )dg dG¢¡ej( )d2d3d4g¡dHdI„ ƒƒZ0ej( )dg dJ¢¡ej( )d2d3d4g¡dKdL„ ƒƒZ1dMdN„ Z2ej3dOdP�dQdR„ ƒZ4ej3dOdP�dSdT„ ƒZ5ej( )dUg dV¢¡ej( )d5dd6g¡dWdX„ ƒƒZ6ej( )dYd2dZid[fd\dZid]fg¡d^d_„ ƒZ7ej( )d`ddadbœdadadbœd6d4dbœd6dadbœg¡dcdd„ ƒZ8ej( 9de¡ej( )dYd2d4idffd\didgfd4ddhœdgfg¡didj„ ƒƒZ:ej( 9de¡ej( )dkdldmg¡dndo„ ƒƒZ;dpdq„ Z<ej( )d5dd6g¡drds„ ƒZ=ej( )d5dd6g¡dtdu„ ƒZ>ej( )d5dd6g¡ej( )d2d3d4g¡dvdw„ ƒƒZ?ej( )d5dd6g¡ej( )dxddyiddzdd{œg¡d|d}„ ƒƒZ@ej( )d5dd6g¡ej( )d~dyd+dzieAdfddd€d�gd‚œeAdƒfd0d0d6d„œeAd…fddd†dd‡œeAdˆfddd†d6d‡œeAdˆfddd‰d‚œeBdŠfddd‰d�gd‚œeBdŠfg¡ej( )d2d3d4g¡d‹dŒ„ ƒƒƒZCej( )d�dŽdd�d{œeAd�fdŽd‘d’œeAd“fdŽd‘d�d{œeAd”fi eAd•fg¡d–d—„ ƒZDej( )d5dd6g¡d˜d™„ ƒZEej( )d5dd6g¡dšd›„ ƒZFej( )d5dd6g¡dœd�„ ƒZGdždŸ„ ZHej( )d5dd6g¡d d¡„ ƒZIej( )d¢dd6g¡d£d¤„ ƒZJd¥d¦„ ZKd§d¨„ ZLej( )d5dd6g¡d©dª„ ƒZMej( )d«g d¬¢¡d­d®„ ƒZNd¯d°„ ZOej( )d5dd6g¡ej( )d2d±¡d²d³„ ƒƒZPd´dµ„ ZQd¶d·„ ZRd¸d¹„ ZSdS )ºzTest the openml loader.é    N)Úpartial)Ú	resources)ÚBytesIO)Ú	HTTPError)Úconfig_context)Úfetch_openml)Ú_OPENML_PREFIXÚ_get_local_pathÚ_open_openml_urlÚ_retry_with_clean_cache)ÚBunch)Úcheck_pandas_support)ÚSkipTestÚassert_allcloseÚassert_array_equalz"sklearn.datasets.tests.data.openmlTc                   @   sF   e Z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S )Ú_MockHTTPResponsec                 C   s   || _ || _d S ©N)ÚdataÚis_gzip)Úselfr   r   © r   úHE:\soccer\ml_env\Lib\site-packages\sklearn/datasets/tests/test_openml.pyÚ__init__'   s    z_MockHTTPResponse.__init__éÿÿÿÿc                 C   s   | j  |¡S r   )r   Úread)r   Úamtr   r   r   r   +   s    z_MockHTTPResponse.readc                 C   s   | j  ¡  d S r   )r   Úclose©r   r   r   r   r   .   s    z_MockHTTPResponse.closec                 C   s   | j rddiS i S )NzContent-EncodingÚgzip©r   r   r   r   r   Úinfo1   s    z_MockHTTPResponse.infoc                 C   s
   t | jƒS r   )Úiterr   r   r   r   r   Ú__iter__6   s    z_MockHTTPResponse.__iter__c                 C   s   | S r   r   r   r   r   r   Ú	__enter__9   s    z_MockHTTPResponse.__enter__c                 C   s   dS )NFr   )r   Úexc_typeÚexc_valÚexc_tbr   r   r   Ú__exit__<   s    z_MockHTTPResponse.__exit__N)r   )
Ú__name__Ú
__module__Ú__qualname__r   r   r   r    r"   r#   r'   r   r   r   r   r   &   s   
r   )Ú	data_homec                    sº   d‰
d‰d‰d‰d‰t j‰	td d|› � ‰‡fdd	„‰ ‡ ‡‡‡	fd
d„‰‡‡
fdd„‰‡‡fdd„‰‡‡fdd„‰‡ ‡‡	‡fdd„‰‡‡‡‡‡
‡‡‡fdd„}tr¶|  tjjd|¡ d S )Nz(https://api.openml.org/api/v1/json/data/z1https://api.openml.org/api/v1/json/data/features/zhttps://api.openml.org/data/v1/z-https://api.openml.org/api/v1/json/data/list/z.gzÚ.Úid_c                    s~   t  dd| tdƒd … ¡| ˆ  }| dd¡ dd¡ dd	¡ d
d¡ dd¡ dd¡ dd¡ dd¡ dd¡ dd¡ dd¡S )Nz\Wú-zhttps://api.openml.org/z-json-data-listz-jdlz-json-data-featuresz-jdfz-json-data-qualitiesz-jdqz
-json-dataz-jdz
-data_namez-dnz	-downloadz-dlz-limitz-lz-data_versionz-dvz-statusz-sz-deactivatedz-dactz-activez-act)ÚreÚsubÚlenÚreplace)ÚurlÚsuffixÚoutput)Úpath_suffixr   r   Ú
_file_nameU   s8    ÿþÿÿþýüûúùø	÷
öÿz4_monkey_patch_webbased_functions.<locals>._file_namec           	         s®   |   |¡sJ ‚ˆ | |ƒ}t ˆ¡| }| d¡�j}|r^ˆr^t| ¡ ƒ}t|dƒW  d   ƒ S ˆ|dƒ}t| ¡ ƒ}t|dƒW  d   ƒ S W d   ƒ n1 s 0    Y  d S )NÚrbTF)Ú
startswithr   ÚfilesÚopenr   r   r   )	r3   Úhas_gzip_headerÚexpected_prefixr4   Údata_file_nameÚdata_file_pathÚfÚfpÚdecompressed_f)r7   Údata_moduleÚgzip_responseÚread_fnr   r   Ú_mock_urlopen_sharedk   s    

z>_monkey_patch_webbased_functions.<locals>._mock_urlopen_sharedc                    s   ˆ | |ˆdd�S ©Nú.json©r3   r<   r=   r4   r   ©r3   r<   )rF   Úurl_prefix_data_descriptionr   r   Ú_mock_urlopen_data_descriptionz   s    üzH_monkey_patch_webbased_functions.<locals>._mock_urlopen_data_descriptionc                    s   ˆ | |ˆdd�S rG   r   rJ   )rF   Úurl_prefix_data_featuresr   r   Ú_mock_urlopen_data_features‚   s    üzE_monkey_patch_webbased_functions.<locals>._mock_urlopen_data_featuresc                    s   ˆ | |ˆdd�S )Nz.arffrI   r   rJ   )rF   Úurl_prefix_download_datar   r   Ú_mock_urlopen_download_dataŠ   s    üzE_monkey_patch_webbased_functions.<locals>._mock_urlopen_download_datac           	         s  |   ˆ¡sJ ‚ˆ | dƒ}t ˆ¡| }| d¡�2}ˆ|dƒ}| ¡  d¡}t |¡}W d   ƒ n1 sh0    Y  d|v rŽtd ddd t	ƒ d�‚| d¡�f}|rÂt	| ¡ ƒ}t
|dƒW  d   ƒ S ˆ|dƒ}t	| ¡ ƒ}t
|d	ƒW  d   ƒ S W d   ƒ n1 �s0    Y  d S )
NrH   r8   zutf-8Úerroréœ  úSimulated mock error©r3   ÚcodeÚmsgÚhdrsrA   TF)r9   r   r:   r;   r   ÚdecodeÚjsonÚloadsr   r   r   )	r3   r<   r>   r?   r@   rB   Z	decoded_sZ	json_datarA   )r7   rC   rE   Úurl_prefix_data_listr   r   Ú_mock_urlopen_data_list’   s$    

(ÿ
zA_monkey_patch_webbased_functions.<locals>._mock_urlopen_data_listc                    sv   |   ¡ }|  d¡dk}| ˆ¡r*ˆ||ƒS | ˆ¡r>ˆ||ƒS | ˆ¡rRˆ||ƒS | ˆ¡rfˆ ||ƒS td| ƒ‚d S )NzAccept-encodingr   zUnknown mocking URL pattern: %s)Úget_full_urlÚ
get_headerr9   Ú
ValueError)ÚrequestÚargsÚkwargsr3   r<   )rL   rN   r\   rP   rK   rM   r[   rO   r   r   Ú_mock_urlopen«   s    







z7_monkey_patch_webbased_functions.<locals>._mock_urlopenÚurlopen)r   r;   ÚOPENML_TEST_DATA_MODULEÚtest_offlineÚsetattrÚsklearnÚdatasetsÚ_openml)ÚcontextÚdata_idrD   rc   r   )r7   rL   rN   r\   rP   rF   rC   rD   r6   rE   rK   rM   r[   rO   r   Ú _monkey_patch_webbased_functionsG   s     rm   z9data_id, dataset_params, n_samples, n_features, n_targetsé=   rl   é–   é   é   Úiris)ÚnameÚversioné   é   é&   Zannealé1  éÑ   é   Úcpué�ž  é   éH   é   é_  é
   é   rs   zadult-censusé   éM   ZMiceProteinéñŸ  i  Úparserú	liac-arffÚpandasrD   Fc           
      C   s
  t  d¡}t| ||d� tf dd|dœ|¤Ž}	t|	jd ƒ|ksDJ ‚t|	tƒsRJ ‚t|	j|j	ƒsdJ ‚|	jj
||| fks|J ‚t|	j|j	ƒsŽJ ‚|	jj
||fks¢J ‚|dkrÐt|	j|jƒs¼J ‚|	jj
|fksöJ ‚n&t|	j|j	ƒsâJ ‚|	jj
||fksöJ ‚|	jdu �sJ ‚dS )	zŒCheck the behaviour of `fetch_openml` with `as_frame=True`.

    Fetch by ID and/or name (depending if the file was previously cached).
    rˆ   ©rD   TF©Úas_frameÚcacher†   Úidrq   N)ÚpytestÚimportorskiprm   r   ÚintÚdetailsÚ
isinstancer   ÚframeÚ	DataFrameÚshaper   ÚtargetÚSeriesÚ
categories)
Úmonkeypatchrl   Údataset_paramsÚ	n_samplesÚ
n_featuresÚ	n_targetsr†   rD   ÚpdÚbunchr   r   r   Útest_fetch_openml_as_frame_trueÂ   s*    (
ýür    c                 C   sÜ   t  d¡ t| |dd� tf dd|dœ|¤Ž}t|jd ƒ|ksDJ ‚t|tƒsRJ ‚|jdu s`J ‚t|j	t
jƒsrJ ‚|j	j||fks†J ‚t|jt
jƒs˜J ‚|dkr´|jj|fksÈJ ‚n|jj||fksÈJ ‚t|jtƒsØJ ‚dS )	znCheck the behaviour of `fetch_openml` with `as_frame=False`.

    Fetch both by ID and/or name + version.
    rˆ   Tr‰   FrŠ   r�   Nrq   )rŽ   r�   rm   r   r�   r‘   r’   r   r“   r   ÚnpZndarrayr•   r–   r˜   Údict)r™   rl   rš   r›   rœ   r�   r†   rŸ   r   r   r   Ú test_fetch_openml_as_frame_false  s&    $
ýür£   )rn   r€   r…   c           
         s¸   t  d¡‰t| |dd� t|dddd�}t|dddd�}|j|j }‰ ‡ ‡fdd„}| |¡}ˆj |ˆ ¡ |j|j }‰ˆj ˆ|j	 ˆ ¡ ‡‡fd	d
„}| |¡}	ˆj |	ˆ¡ dS )z:Check the consistency of the LIAC-ARFF and pandas parsers.rˆ   Tr‰   Fr‡   ©rl   r‹   rŒ   r†   c                    s,   ˆ | j  }ˆjj |¡r$|  |j¡S | S d S r   )rs   ÚapiÚtypesÚis_numeric_dtypeÚastypeÚdtype©ZseriesZpandas_series)Údata_pandasrž   r   r   Úconvert_numerical_dtypes]  s    
zFtest_fetch_openml_consistency_parser.<locals>.convert_numerical_dtypesc                    sJ   ˆ | j  }ˆjj |¡r$|  |j¡S t|jˆjƒrB| j 	|jj
¡S | S d S r   )rs   r¥   r¦   r§   r¨   r©   r’   ÚCategoricalDtypeÚcatZrename_categoriesr˜   rª   )Úframe_pandasrž   r   r   Ú(convert_numerical_and_categorical_dtypesq  s    
zVtest_fetch_openml_consistency_parser.<locals>.convert_numerical_and_categorical_dtypesN)
rŽ   r�   rm   r   r   ÚapplyÚtestingÚassert_frame_equalr“   Úfeature_names)
r™   rl   Z
bunch_liacÚbunch_pandasZ	data_liacr¬   Zdata_liac_with_fixed_dtypesZ
frame_liacr°   Zframe_liac_with_fixed_dtypesr   )r«   r¯   rž   r   Ú$test_fetch_openml_consistency_parserE  s2    
üü

ÿr¶   c                 C   s\   t  d¡ d}t| |dd� t|dd|d�}t|dd|d�}t|j|jƒ t|j|jƒ dS )z^Check the equivalence of the dataset when using `as_frame=False` and
    `as_frame=True`.
    rˆ   rn   Tr‰   Fr¤   N)rŽ   r�   rm   r   r   r   r   r–   )r™   r†   rl   Zbunch_as_frame_trueZbunch_as_frame_falser   r   r   Ú-test_fetch_openml_equivalence_array_dataframe…  s"    
üür·   c                 C   s|  t  d¡}|jjj}d}d}d}d}|g d¢ƒ}tjgd }	g d¢}
d	}t| |d
ƒ t|d
d|d�}|j	}|j
}|j}t||jƒs†J ‚t |j|	k¡sšJ ‚|j|ks¨J ‚t |j|
k¡s¼J ‚t |j|
k¡sÐJ ‚|j|gksàJ ‚t||jƒsðJ ‚|j|ksþJ ‚|j|k�sJ ‚|j|k�sJ ‚|jj�s,J ‚t||jƒ�s>J ‚|j|k�sNJ ‚t |j|	|g k¡�sjJ ‚|jj�sxJ ‚dS )z>Check fetching on a numerical only dataset with string labels.rˆ   rn   ©ro   rp   )ro   )ro   é   )zIris-setosazIris-versicolorzIris-virginicarp   )ÚsepallengthÚ
sepalwidthÚpetallengthÚ
petalwidthÚclassTFr¤   N)rŽ   r�   r¥   r¦   r­   r¡   Zfloat64rm   r   r   r–   r“   r’   r”   ÚallÚdtypesr•   Úcolumnsr´   Ztarget_namesr—   r©   rs   ÚindexZ	is_unique)r™   r†   rž   r­   rl   Z
data_shapeZtarget_shapeZframe_shapeZtarget_dtypeZdata_dtypesZ
data_namesZtarget_namerŸ   r   r–   r“   r   r   r   Útest_fetch_openml_iris_pandas   sJ    

ÿürÃ   Útarget_columnr½   r¼   c                 C   s¦   t  d¡}d}t| |dƒ t|dd||d�}t|dd|d�}|j |j|j¡ t|tƒr‚|j 	|j
j| |¡¡ |jjdks¢J ‚n |j
j|ks’J ‚|jjdks¢J ‚d	S )
z@Check that we can force the target to not be the default target.rˆ   rn   TF)rl   r‹   rŒ   rÄ   r†   r¤   )ro   é   r¸   N)rŽ   r�   rm   r   r²   r³   r“   r’   ÚlistZassert_index_equalr–   rÁ   ÚIndexr   r•   rs   )r™   r†   rÄ   rž   rl   Zbunch_forcing_targetZbunch_defaultr   r   r   Ú!test_fetch_openml_forcing_targetsÐ  s0    
ûü
ÿrÈ   )rn   ru   rx   r|   r€   c                 C   s‚   t  d¡}t| |dd� t|ddd|d�}t|ddd|d�\}}|j |j|¡ t||jƒrn|j 	|j
|¡ n|j |j
|¡ dS )z>Check the behaviour of `return_X_y=True` when `as_frame=True`.rˆ   Tr‰   F©rl   r‹   rŒ   Ú
return_X_yr†   N)rŽ   r�   rm   r   r²   r³   r   r’   r—   Úassert_series_equalr–   )r™   rl   r†   rž   rŸ   ÚXÚyr   r   r   Ú.test_fetch_openml_equivalence_frame_return_X_yñ  s(    
ûû
rÎ   )rn   rx   r|   r€   c                 C   s\   t  d¡ t| |dd� t|ddd|d�}t|ddd|d�\}}t|j|ƒ t|j|ƒ dS )z?Check the behaviour of `return_X_y=True` when `as_frame=False`.rˆ   Tr‰   FrÉ   N)rŽ   r�   rm   r   r   r   r–   )r™   rl   r†   rŸ   rÌ   rÍ   r   r   r   Ú.test_fetch_openml_equivalence_array_return_X_y  s$    
ûû
rÏ   c                 C   sf   t  d¡ d}t| |dd� d}t||ddd�}t||ddd�}|jjjdksRJ ‚|jjd	ksbJ ‚d
S )z9Check the difference between liac-arff and pandas parser.rˆ   r€   Tr‰   Fr‡   r¤   r@   ÚON)rŽ   r�   rm   r   r   r©   Úkind)r™   rl   r‹   Zbunch_liac_arffrµ   r   r   r   Ú$test_fetch_openml_difference_parsers(  s$    
üürÒ   Úmodule)Úscopec                   C   s0   g d¢g d¢g d¢g d¢g d¢g d¢g d¢dœS )	z+Returns the columns names for each dataset.)rº   r»   r¼   r½   r¾   )'Úfamilyzproduct-typeZsteelÚcarbonZhardnessÚtemper_rollingÚ	conditionÚformabilityZstrengthú
non-ageingúsurface-finishzsurface-qualityÚenamelabilityÚbcÚbfÚbtúbw%2FmeÚblÚmÚchromÚphosÚcbondÚmarviÚexptlÚferroÚcorrúblue%2Fbright%2Fvarn%2FcleanÚlustreÚjurofmÚsÚpr•   ZthickÚwidthr1   ÚoilZboreÚpackingr¾   )ÚvendorZMYCTZMMINZMMAXZCACHZCHMINZCHMAXr¾   )NZ Mean_Acc1298_Mean_Mem40_CentroidZMean_Acc1298_Mean_Mem40_RolloffZMean_Acc1298_Mean_Mem40_FluxZMean_Acc1298_Mean_Mem40_MFCC_0ZMean_Acc1298_Mean_Mem40_MFCC_1ZMean_Acc1298_Mean_Mem40_MFCC_2ZMean_Acc1298_Mean_Mem40_MFCC_3ZMean_Acc1298_Mean_Mem40_MFCC_4ZMean_Acc1298_Mean_Mem40_MFCC_5ZMean_Acc1298_Mean_Mem40_MFCC_6ZMean_Acc1298_Mean_Mem40_MFCC_7ZMean_Acc1298_Mean_Mem40_MFCC_8ZMean_Acc1298_Mean_Mem40_MFCC_9ZMean_Acc1298_Mean_Mem40_MFCC_10ZMean_Acc1298_Mean_Mem40_MFCC_11ZMean_Acc1298_Mean_Mem40_MFCC_12ZMean_Acc1298_Std_Mem40_CentroidZMean_Acc1298_Std_Mem40_RolloffZMean_Acc1298_Std_Mem40_FluxZMean_Acc1298_Std_Mem40_MFCC_0ZMean_Acc1298_Std_Mem40_MFCC_1ZMean_Acc1298_Std_Mem40_MFCC_2ZMean_Acc1298_Std_Mem40_MFCC_3ZMean_Acc1298_Std_Mem40_MFCC_4ZMean_Acc1298_Std_Mem40_MFCC_5ZMean_Acc1298_Std_Mem40_MFCC_6ZMean_Acc1298_Std_Mem40_MFCC_7ZMean_Acc1298_Std_Mem40_MFCC_8ZMean_Acc1298_Std_Mem40_MFCC_9ZMean_Acc1298_Std_Mem40_MFCC_10ZMean_Acc1298_Std_Mem40_MFCC_11ZMean_Acc1298_Std_Mem40_MFCC_12ZStd_Acc1298_Mean_Mem40_CentroidZStd_Acc1298_Mean_Mem40_RolloffZStd_Acc1298_Mean_Mem40_FluxZStd_Acc1298_Mean_Mem40_MFCC_0ZStd_Acc1298_Mean_Mem40_MFCC_1ZStd_Acc1298_Mean_Mem40_MFCC_2ZStd_Acc1298_Mean_Mem40_MFCC_3ZStd_Acc1298_Mean_Mem40_MFCC_4ZStd_Acc1298_Mean_Mem40_MFCC_5ZStd_Acc1298_Mean_Mem40_MFCC_6ZStd_Acc1298_Mean_Mem40_MFCC_7ZStd_Acc1298_Mean_Mem40_MFCC_8ZStd_Acc1298_Mean_Mem40_MFCC_9ZStd_Acc1298_Mean_Mem40_MFCC_10ZStd_Acc1298_Mean_Mem40_MFCC_11ZStd_Acc1298_Mean_Mem40_MFCC_12ZStd_Acc1298_Std_Mem40_CentroidZStd_Acc1298_Std_Mem40_RolloffZStd_Acc1298_Std_Mem40_FluxZStd_Acc1298_Std_Mem40_MFCC_0ZStd_Acc1298_Std_Mem40_MFCC_1ZStd_Acc1298_Std_Mem40_MFCC_2ZStd_Acc1298_Std_Mem40_MFCC_3ZStd_Acc1298_Std_Mem40_MFCC_4ZStd_Acc1298_Std_Mem40_MFCC_5ZStd_Acc1298_Std_Mem40_MFCC_6ZStd_Acc1298_Std_Mem40_MFCC_7ZStd_Acc1298_Std_Mem40_MFCC_8ZStd_Acc1298_Std_Mem40_MFCC_9ZStd_Acc1298_Std_Mem40_MFCC_10ZStd_Acc1298_Std_Mem40_MFCC_11ZStd_Acc1298_Std_Mem40_MFCC_12ZBH_LowPeakAmpZBH_LowPeakBPMZBH_HighPeakAmpZBH_HighPeakBPMZBH_HighLowRatioZBHSUM1ZBHSUM2ZBHSUM3zamazed.suprisedzhappy.pleasedzrelaxing.calmzquiet.stillz
sad.lonelyzangry.aggresive)ÚageZ	workclasszfnlwgt:z
education:zeducation-num:zmarital-status:zoccupation:zrelationship:zrace:zsex:zcapital-gain:zcapital-loss:zhours-per-week:znative-country:r¾   )NZDYRK1A_NZITSN1_NZBDNF_NZNR1_NZNR2A_NZpAKT_NZpBRAF_NZ	pCAMKII_NZpCREB_NZpELK_NZpERK_NZpJNK_NZPKCA_NZpMEK_NZpNR1_NZpNR2A_NZpNR2B_NZpPKCAB_NZpRSK_NZAKT_NZBRAF_NZCAMKII_NZCREB_NZELK_NZERK_NZGSK3B_NZJNK_NZMEK_NZTRKA_NZRSK_NZAPP_NZ
Bcatenin_NZSOD1_NZMTOR_NZP38_NZpMTOR_NZDSCR1_NZAMPKA_NZNR2B_NZpNUMB_NZRAPTOR_NZTIAM1_NZpP70S6_NÚNUMB_NZP70S6_NZpGSK3B_NZpPKCG_NZCDK5_NZS6_NZADARB1_NZAcetylH3K9_NZRRP1_NZBAX_NZARC_NZERBB4_NZnNOS_NZTau_NZGFAP_NZGluR3_NZGluR4_NZIL1B_NZP3525_NZpCASP9_NZPSD95_NZSNCA_NZUbiquitin_NZpGSK3B_Tyr216_NZSHH_NZBAD_NÚBCL2_NZpS6_NZpCFOS_NZSYP_NZ	H3AcK18_NZEGR1_NZH3MeK4_NZCaNA_Nr¾   )ZpclassZsurvivedrs   Úsexró   ZsibspZparchÚticketÚfareÚcabinÚembarkedÚboatÚbodyú	home.dest©rn   ru   rx   r|   r€   rƒ   r…   r   r   r   r   r   Údatasets_column_namesG  s    )PP€ £rÿ   c                   C   s`   i ddddddddddddddddddddddddddddœi i i dd	id
dddddddœdœS )Nrv   é	   ru   rp   r�   é   )rÕ   r×   rØ   rÙ   rÚ   rÛ   rÜ   rÝ   rÞ   rß   rà   rá   râ   rã   rä   rå   ræ   rç   rè   ré   rê   rë   rì   rí   rî   rð   rñ   rõ   rz   i  rq   iö  i7  i¤  i4  )ró   rø   rù   rú   rû   rü   rý   rþ   r   r   r   r   r   Údatasets_missing_values:  sT    åùÝr  zJdata_id, parser, expected_n_categories, expected_n_floats, expected_n_ints))rn   r‡   rq   rp   r   )rn   rˆ   rq   rp   r   )ru   r‡   é!   r   r   )ru   rˆ   r  ru   rp   )rx   r‡   rq   rz   r   )rx   rˆ   rq   r   rz   )r|   r‡   r   r~   r   )r|   rˆ   r   éE   rÅ   )r€   r‡   r   r   r   )r€   rˆ   r   r   r   )rƒ   r‡   rq   r„   r   )rƒ   rˆ   rq   r„   r   )r…   r‡   rÅ   r   r   )r…   rˆ   rÅ   rÅ   rÅ   c	                    sô   t  d¡}	|	jjj‰ t| ||d� t|dd|d�}
|
j}t‡ fdd„|j	D ƒƒ}tdd„ |j	D ƒƒ}td	d„ |j	D ƒƒ}||ks„J ‚||ks�J ‚||ksœJ ‚|j
 ¡ || ks²J ‚| ¡  ¡  ¡ }| ¡ D ]$\}}||  |d
¡}||ksÊJ ‚qÊdS )zYCheck that `fetch_openml` infer the right number of categories, integers, and
    floats.rˆ   r‰   TFr¤   c                    s   g | ]}t |ˆ ƒr|‘qS r   )r’   ©Ú.0r©   ©r­   r   r   Ú
<listcomp>¡  ó    z5test_fetch_openml_types_inference.<locals>.<listcomp>c                 S   s   g | ]}|j d kr|‘qS )r@   ©rÑ   r  r   r   r   r  £  r	  c                 S   s   g | ]}|j d kr|‘qS )Úir
  r  r   r   r   r  ¤  r	  r   N)rŽ   r�   r¥   r¦   r­   rm   r   r“   r1   rÀ   rÁ   ÚtolistÚisnaÚsumÚto_dictÚitemsÚget)r™   rl   r†   Zexpected_n_categoriesZexpected_n_floatsZexpected_n_intsrD   rÿ   r  rž   rŸ   r“   Zn_categoriesZn_floatsZn_intsZframe_feature_to_n_nanrs   Z	n_missingZexpected_missingr   r  r   Ú!test_fetch_openml_types_inferencek  s.    (

üÿr  zparams, err_msgÚunknownz:The 'parser' parameter of fetch_openml must be a str amongr‹   z<The 'as_frame' parameter of fetch_openml must be an instancec                 C   sT   d}t | |dƒ tjt|d��" tf d|i|¤Ž W d   ƒ n1 sF0    Y  d S )Nr€   T©Úmatchrl   )rm   rŽ   Úraisesr_   r   ©r™   ÚparamsÚerr_msgrl   r   r   r   Ú&test_fetch_openml_validation_parameter¶  s    r  r  Úauto)r‹   r†   c                 C   s€   d}zt dƒ W nb tyr   t| |dƒ d}tjt|d��" tf d|i|¤Ž W d  ƒ n1 sd0    Y  Y n
0 tdƒ‚dS )	z=Check that we raise the proper errors when we require pandas.r€   Z!test_fetch_openml_requires_pandasTz:requires pandas to be installed. Alternatively, explicitlyr  rl   Nz.This test requires pandas to not be installed.)r   ÚImportErrorrm   rŽ   r  r   r   )r™   r  rl   r  r   r   r   Ú'test_fetch_openml_requires_pandas_errorÊ  s    6r  z2ignore:Version 1 of dataset Australian is inactivez:Sparse ARFF datasets cannot be loaded with parser='pandas'z9Sparse ARFF datasets cannot be loaded with as_frame=True.)r†   r‹   c                 C   s`   t  d¡ d}t| |dƒ t jt|d��$ tf |ddœ|¤Ž W d  ƒ n1 sR0    Y  dS )ztCheck that we raise the expected error for sparse ARFF datasets and
    a wrong set of incompatible parameters.
    rˆ   é$  Tr  F)rl   rŒ   N)rŽ   r�   rm   r  r_   r   r  r   r   r   Ú#test_fetch_openml_sparse_arff_errorá  s    
þýr  zdata_id, data_type)rn   Ú	dataframe)r  Úsparsec                 C   sN   t  d¡}t| |dƒ t|ddd�}|dkr2|jntjj}t|j	|ƒsJJ ‚dS )z&Check the auto mode of `fetch_openml`.rˆ   Tr  F)rl   r‹   rŒ   r   N)
rŽ   r�   rm   r   r”   Úscipyr!  Z
csr_matrixr’   r   )r™   rl   Z	data_typerž   r   Úklassr   r   r   Útest_fetch_openml_auto_mode  s
    

r$  c              	   C   sŠ   t  d¡ d}t| |dƒ d}t jt|d��J tdd��  t|ddd	d
� W d  ƒ n1 s^0    Y  W d  ƒ n1 s|0    Y  dS )z[Check that we raise a warning regarding the working memory when using
    LIAC-ARFF parser.rˆ   r€   Tz*Could not adhere to working_memory config.r  g�íµ ÷Æ°>)Zworking_memoryFr‡   r¤   N)rŽ   r�   rm   ÚwarnsÚUserWarningr   r   )r™   rl   rV   r   r   r   Ú:test_convert_arff_data_dataframe_warning_low_memory_pandas  s    
ür'  c                 C   s`   d}d}t | ||ƒ t d¡}tjt|d��  t|dddd� W d  ƒ n1 sR0    Y  dS )	z\Check that a warning is raised when multiple versions exist and no version is
    requested.rn   rr   a;  Multiple active versions of the dataset matching the name iris exist. Versions may be fundamentally different, returning version 1. Available versions:
- version 1, status: active
  url: https://www.openml.org/search?type=data&id=61
- version 3, status: active
  url: https://www.openml.org/search?type=data&id=969
r  Fr‡   )rs   r‹   rŒ   r†   N)rm   r/   ÚescaperŽ   r%  r&  r   )r™   rD   rl   Z	data_namerV   r   r   r   Ú,test_fetch_openml_iris_warn_multiple_version(  s    ÿ	ür)  c                 C   sT   d}d}d}d}t | ||ƒ t||dddd�}|jj||fksBJ ‚|jdu sPJ ‚dS )z/Check that we can get a dataset without target.rn   Nro   r¹   Fr‡   ©rl   rÄ   rŒ   r‹   r†   )rm   r   r   r•   r–   )r™   rD   rl   rÄ   Zexpected_observationsZexpected_featuresr   r   r   r   Útest_fetch_openml_no_targetC  s    ûr+  c                 C   sb   t  d¡ d}t| ||d� t|dd|d�}|jjd }|jd  ¡  ¡ sNJ ‚t|j	g d¢ƒ d	S )
zRcheck that missing values in categories are compatible with pandas
    categoricalrˆ   iY¦  r‰   FT©rl   rŒ   r‹   r†   rö   )ZFEMALEZMALEÚ_N)
rŽ   r�   rm   r   r   rÀ   r  Úanyr   r˜   )r™   rD   r†   rl   ZpenguinsZ	cat_dtyper   r   r   Útest_missing_values_pandasW  s    
ür/  rš   éãž  Úglass2)rl   rs   rt   c                 C   s~   d}t | ||ƒ d}tjt|d��& tf ddddœ|¤Ž}W d  ƒ n1 sN0    Y  |jjdkshJ ‚|jd	 d
kszJ ‚dS )z;Check that we raise a warning when the dataset is inactive.r0  z(Version 1 of dataset glass2 is inactive,r  Fr‡   )rŒ   r‹   r†   N)é£   r   r�   Z40675)rm   rŽ   r%  r&  r   r   r•   r‘   )r™   rD   rš   rl   rV   r1  r   r   r   Útest_fetch_openml_inactivem  s    
ÿÿ$r3  z"data_id, params, err_type, err_msgzNo active dataset glass2 foundr»   r¾   )rl   rÄ   z1Can only handle homogeneous multi-target datasets)rl   r‹   zOSTRING attributes are not supported for array representation. Try as_frame=TruerÕ   )rl   rÄ   r‹   zTarget column 'family'Z	undefinedz(Could not find target_column='undefined'c                 C   sp   t | ||ƒ | dd¡s |dkr*t d¡ tj||d��$ tf d|dœ|¤Ž W d   ƒ n1 sb0    Y  d S )Nr‹   Trˆ   r  F)rŒ   r†   )rm   r  rŽ   r�   r  r   )r™   rD   rl   r  Úerr_typer  r†   r   r   r   Útest_fetch_openml_error‚  s
    2
r5  zparams, err_type, err_msgr   rt   zCThe 'version' parameter of fetch_openml must be an int in the rangeZnAmE)rl   rs   zCThe 'data_id' parameter of fetch_openml must be an int in the rangez6The 'version' parameter of fetch_openml must be an intzFNeither name nor data_id are provided. Please provide name or data_id.c                 C   s@   t j||d�� tf i | ¤Ž W d   ƒ n1 s20    Y  d S )Nr  )rŽ   r  r   )r  r4  r  r   r   r   Ú)test_fetch_openml_raises_illegal_argument»  s    r6  c                 C   s^  d}d}d}t | ||ƒ d}| |¡}tjt|d��" t||dddd� W d   ƒ n1 s\0    Y  d	}| |¡}tjt|d��" t||dddd� W d   ƒ n1 sª0    Y  d}| |¡}tjt|d��& t||d
gdddd� W d   ƒ n1 sü0    Y  d	}| |¡}tjt|d��& t||d
gdddd� W d   ƒ n1 �sP0    Y  d S )Nrƒ   z.target_column='{}' has flag is_row_identifier.z&target_column='{}' has flag is_ignore.ZMouseIDr  Fr‡   r*  ZGenotyper¾   )rm   ÚformatrŽ   r%  r&  r   )r™   rD   rl   Zexpected_row_id_msgZexpected_ignore_msgZ
target_colrV   r   r   r   Útest_warn_ignore_attributeÙ  sX    
û$
û$
û$
ûr8  c                 C   sV   d}t | ||ƒ d}tjt|d��  t|dddd� W d   ƒ n1 sH0    Y  d S )Nrq   zJOpenML registered a problem with the dataset. It might be unusable. Error:r  Fr‡   r,  ©rm   rŽ   r%  r&  r   ©r™   rD   rl   rV   r   r   r   Útest_dataset_with_openml_error  s
    r;  c                 C   sV   d}t | ||ƒ d}tjt|d��  t|dddd� W d   ƒ n1 sH0    Y  d S )NrÅ   zFOpenML raised a warning on the dataset. It might be unusable. Warning:r  Fr‡   r,  r9  r:  r   r   r   Ú test_dataset_with_openml_warning  s
    r<  c                 C   s–   t  d¡ d}t| |dd� |ddddœ}tf i |¤Ž}tf i |¤dddii¤Ž}td	d
„ |jd jjD ƒƒsrJ ‚tdd
„ |jd jjD ƒƒr’J ‚dS )zACheck that we can overwrite the default parameters of `read_csv`.rˆ   é6  F©rl   rD   Tr¤   Zread_csv_kwargsÚskipinitialspacec                 s   s   | ]}|  d ¡V  qdS ©ú N©r9   ©r  r®   r   r   r   Ú	<genexpr>0  s   zFtest_fetch_openml_overwrite_default_params_read_csv.<locals>.<genexpr>r¾   c                 s   s   | ]}|  d ¡V  qdS r@  rB  rC  r   r   r   rD  3  s   ÿN)	rŽ   r�   rm   r   r¿   r“   r®   r˜   r.  )r™   rl   Úcommon_paramsZadult_without_spacesZadult_with_spacesr   r   r   Ú3test_fetch_openml_overwrite_default_params_read_csv  s(    
ü	ÿÿÿþrF  c           	      C   st   d}t | ||ƒ tjjj |¡}t| d¡ƒ}t||ƒ}t	||ƒ}t
j |¡sRJ ‚t||ƒ}| ¡ | ¡ kspJ ‚d S )Nrn   Úscikit_learn_data)rm   rh   ri   rj   Ú
_DATA_FILEr7  ÚstrÚmkdirr
   r	   ÚosÚpathÚisfiler   )	r™   rD   Útmpdirrl   Úopenml_pathÚcache_directoryZ	response1ÚlocationZ	response2r   r   r   Útest_open_openml_url_cache=  s    


rR  Úwrite_to_diskc                    s˜   d}t jjj |¡}t| d¡ƒ}t||ƒ‰ ‡ ‡fdd„}|  t jjd|¡ t	j
tdd�� t||ƒ W d   ƒ n1 sz0    Y  tj ˆ ¡r”J ‚d S )Nrn   rG  c                    sD   ˆr8t ˆ dƒ�}| d¡ W d   ƒ n1 s.0    Y  tdƒ‚d S )NÚwÚ úInvalid request)r;   Úwriter_   )r`   ra   rb   r@   ©rQ  rS  r   r   rc   U  s    (z>test_open_openml_url_unlinks_local_path.<locals>._mock_urlopenrd   rV  r  )rh   ri   rj   rH  r7  rI  rJ  r	   rg   rŽ   r  r_   r
   rK  rL  Úexists)r™   rN  rS  rl   rO  rP  rc   r   rX  r   Ú'test_open_openml_url_unlinks_local_pathN  s    
(rZ  c                    sÐ   d}t jjj |¡}t|  d¡ƒ}t||ƒ‰ t 	tj
 ˆ ¡¡ tˆ dƒ�}| d¡ W d   ƒ n1 sh0    Y  t||ƒ‡ fdd„ƒ}d}tjt|d�� |ƒ }W d   ƒ n1 s¶0    Y  |d	ksÌJ ‚d S )
Nrn   rG  rT  rU  c                      s   t j ˆ ¡rtdƒ‚dS )NzFile exist!rq   )rK  rL  rY  Ú	Exceptionr   ©rQ  r   r   Ú
_load_datam  s    z/test_retry_with_clean_cache.<locals>._load_dataz!Invalid cache, redownloading filer  rq   )rh   ri   rj   rH  r7  rI  rJ  r	   rK  ÚmakedirsrL  Údirnamer;   rW  r   rŽ   r%  ÚRuntimeWarning)rN  rl   rO  rP  r@   r]  Zwarn_msgÚresultr   r\  r   Útest_retry_with_clean_cachec  s    
($rb  c                 C   sp   d}t jjj |¡}t|  d¡ƒ}t||ƒdd„ ƒ}d}tj	t
|d�� |ƒ  W d   ƒ n1 sb0    Y  d S )Nrn   rG  c                   S   s   t d ddd tƒ d�‚d S )NrR   rS   rT   ©r   r   r   r   r   r   r]    s    ÿz:test_retry_with_clean_cache_http_error.<locals>._load_datarS   r  )rh   ri   rj   rH  r7  rI  rJ  r   rŽ   r  r   )rN  rl   rO  rP  r]  Ú	error_msgr   r   r   Ú&test_retry_with_clean_cache_http_errorz  s    
re  c           
      C   sˆ   dd„ }d}t | d¡ƒ}t| ||ƒ t|d|dddd�\}}|  tjjd	|¡ t|d|dddd�\}}	tj	 
||¡ tj	 
||	¡ d S )
Nc                 _   s   t d|  ¡  ƒ‚d S )NzhThis mechanism intends to test correct cachehandling. As such, urlopen should never be accessed. URL: %s)r_   r]   ©r`   ra   rb   r   r   r   Ú_mock_urlopen_raiseŒ  s
    þÿz4test_fetch_openml_cache.<locals>._mock_urlopen_raisern   rG  TFr‡   )rl   rŒ   r+   rÊ   r‹   r†   rd   )rI  rJ  rm   r   rg   rh   ri   rj   r¡   r²   r   )
r™   rD   rN  rg  rl   rP  Z	X_fetchedZ	y_fetchedZX_cachedZy_cachedr   r   r   Útest_fetch_openml_cacheŠ  s.    ú
	ú
rh  zas_frame, parser))Tr‡   )Fr‡   )Trˆ   )Frˆ   c                    sX  |s|dkrt  d¡ d}t| |dƒ td d|› � }d}t |¡| }|d ‰ | d¡�8}	t |	d¡}
t|
 	¡ ƒ}d	|t
|ƒd
 < W d  ƒ n1 sš0    Y  t ˆ d¡�}| |¡ W d  ƒ n1 sÐ0    Y  tjjj‰‡ ‡fdd„}|  tjjd|¡ t  t¡�$}tjj|d||d� W d  ƒ n1 �s:0    Y  | d¡�sTJ ‚dS )z/Check that the checksum is working as expected.rˆ   ru   Tr,   r-   zdata-v1-dl-1666876.arff.gzztest_invalid_checksum.arffr8   é%   rq   NÚwbc                    s`   |   ¡ }| d¡rTtˆ dƒ�}| ¡ }W d   ƒ n1 s:0    Y  tt|ƒdd�S ˆ| ƒS d S )Nzdata/v1/download/1666876r8   Tr   )r]   Úendswithr;   r   r   r   )r`   ra   rb   r3   r@   Zcorrupted_data©Zcorrupt_copy_pathZmocked_openml_urlr   r   Úswap_file_mockÐ  s    
&z9test_fetch_openml_verify_checksum.<locals>.swap_file_mockrd   Fr,  Z1666876)rŽ   r�   rm   re   r   r:   r;   r   Ú	bytearrayr   r1   ÚGzipFilerW  rh   ri   rj   rd   rg   r  r_   r   r  )r™   r‹   rŒ   rN  r†   rl   Zoriginal_data_moduleZoriginal_data_file_nameZoriginal_data_pathZ	orig_fileZ	orig_gzipr   Zmodified_gziprm  Úexcr   rl  r   Ú!test_fetch_openml_verify_checksum­  s,    
.(
	ÿ&rq  c              	   C   s®   dd„ }|   tjjd|¡ d}tjtt dt	| › d�¡d��\}tj
tdd�� t|d d	d
� W d   ƒ n1 sr0    Y  t|ƒdksŒJ ‚W d   ƒ n1 s 0    Y  d S )Nc                 _   s   t d ddd tƒ d�‚d S )Ni”  úSimulated network errorrT   rc  rf  r   r   r   Ú_mock_urlopen_network_errorå  s    ÿzPtest_open_openml_url_retry_on_network_error.<locals>._mock_urlopen_network_errorrd   zinvalid-urlz+A network error occurred while downloading z. Retrying...r  rr  r   )ÚdelayrÅ   )rg   rh   ri   rj   rŽ   r%  r&  r/   r(  r   r  r   r
   r1   )r™   rs  Zinvalid_openml_urlÚrecordr   r   r   Ú+test_open_openml_url_retry_on_network_errorä  s"    
ÿÿÿþ,rv  )r‡   rˆ   c                 C   sh   |dkrt  d¡ d}t| ||ƒ tjj|dd|d�}|dusBJ ‚|d jdksTJ ‚d|d	 vsdJ ‚dS )
z‰Check that we can load the "zoo" dataset.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/14340
    rˆ   é>   Fr,  Nr   )ée   é   Zanimalr´   )rŽ   r�   rm   rh   ri   r   r•   )r™   rD   r†   rl   Zdatasetr   r   r   Ú&test_fetch_openml_with_ignored_feature   s    
ÿrz  c                 C   s  t  d¡}d}t| |dd� dd|dœ}tf ddi|¤Ž}tf ddi|¤Ž}|j |j|j¡ |jj d	¡ 	¡ rtJ ‚|jj 
d	¡ 	¡ rŠJ ‚tf dd
dœ|¤Ž}tf dd
dœ|¤Ž}|j |jd |jd ¡ |jd j d	¡ 	¡ ræJ ‚|jd j 
d	¡ 	¡ �rJ ‚dS )z§Check that we strip the single quotes when used as a string delimiter.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/23381
    rˆ   rƒ   Fr>  T©r‹   rŒ   rl   r†   r‡   ú'rô   )r†   rÄ   r¾   N)rŽ   r�   rm   r   r²   rË   r–   rI  r9   r.  rk  r“   )r™   rž   rl   rE  Zmice_pandasZmice_liac_arffr   r   r   Útest_fetch_openml_strip_quotes  s(    
ÿÿÿr}  c                 C   sj   t  d¡}d}t| |dd� dd|dœ}tf ddi|¤Ž}tf ddi|¤Ž}|j |jd	 |jd	 ¡ d
S )z�Check that we can strip leading whitespace in pandas parser.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/25311
    rˆ   r=  Fr>  Tr{  r†   r‡   r¾   N)rŽ   r�   rm   r   r²   rË   r“   ©r™   rž   rl   rE  Zadult_pandasZadult_liac_arffr   r   r   Ú$test_fetch_openml_leading_whitespace3  s    
ÿr  c                 C   sb   t  d¡}d}t| |dd� dd|dœ}tf ddi|¤Ž}tf ddi|¤Ž}|j |j|j¡ d	S )
z¡Check that we can handle escapechar and single/double quotechar.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/25478
    rˆ   iZ¤  Fr>  Tr{  r†   r‡   N)rŽ   r�   rm   r   r²   r³   r“   r~  r   r   r   Ú&test_fetch_openml_quotechar_escapecharE  s    
r€  )TÚ__doc__r   rY   rK  r/   Ú	functoolsr   Ú	importlibr   Úior   Úurllib.errorr   Únumpyr¡   rŽ   Zscipy.sparser"  rh   r   Zsklearn.datasetsr   Zfetch_openml_origZsklearn.datasets._openmlr   r	   r
   r   Zsklearn.utilsr   Z$sklearn.utils._optional_dependenciesr   Zsklearn.utils._testingr   r   r   re   rf   r   rm   ÚmarkZparametrizer    r£   r¶   r·   rÃ   rÈ   rÎ   rÏ   rÒ   Zfixturerÿ   r  r  r  r  Úfilterwarningsr  r$  r'  r)  r+  r/  r3  r_   ÚKeyErrorr5  r6  r8  r;  r<  rF  rR  rZ  rb  re  rh  rq  rv  rz  r}  r  r€  r   r   r   r   Ú<module>   sÎ  {íþ+ïþ'
?

/

 s

0þ0þþûþ
üþ	

þþþ÷þ
þþ



þþüû

ü
üüüÝþ-

ýý
ýýðþ

1

 


"þ	
.