Ë
    »Ó^j
 ã            *       ó  — d 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	 ddl
mZ ddlmZmZmZmZmZmZmZmZmZ ddlmZ ddlZddlmZ d	d
lmZmZm Z m!Z!m"Z" d	dl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) d	dl*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 g d¢Z5erddl6Z6ddl7Z7ed   Z8ed   Z9ed   Z:eejv                  e(e)ejx                  f   Z=e>e?fZ@ G d„ d«      ZAdeeAeBf   fd„ZC G d„ de«      ZDded   ddfd„ZEdddeeF   deeeFdf   eeFeBf   f   fd„ZGdee=   de=fd„ZHdedeee      fd „ZId!e,d"eeF   de,fd#„ZJd$eeFef   d%ee,   d&eeeFe=f      d'eFd(eBd)eBd*eKd+eBd,eAd-edee,   fd.„ZLd/e8d0eKdee=   fd1„ZMd'eFd2eeF   deeFeBf   fd3„ZNdddddddddddddd4œddd/e9d5e8d$eeFef   d%ee,   d6ee:   d7ee8   d8ee:   d9eeee9e8f         d:eeeF      d;eee9ee9   f      d<eee8ee8   f      d=eee:      d>eeeeOeFf         d?eee8      d@eee:      dAee0   dBeeeeB   eeBdCf   f      d-ede,f(dD„ZPdEe=dFe,dGeKdHeKdIeKdJeKd-ede=fdK„ZQdLdLdLdLdMœdFe,d/e9dddGeKdHeKdIeKdJeKd-ededNedN   f   fdO„ZR G dP„ dQ«      ZS G dR„ dSe+eS«      ZT G dT„ dUe.eS«      ZU G dV„ dWe-eS«      ZVy)XzîDistributed training with LightGBM and dask.distributed.

This module enables you to perform distributed training with LightGBM on
dask.Array and dask.DataFrame collections.

It is based on dask-lightgbm, which was based on dask-xgboost.
é    N)Údefaultdict)Údeepcopy)ÚEnumÚauto)Úpartial)	ÚTYPE_CHECKINGÚAnyÚDictÚIterableÚListÚOptionalÚTupleÚTypeÚUnion)Úurlparseé   )ÚLightGBMErrorÚ_choose_param_valueÚ_ConfigAliasesÚ	_log_infoÚ_log_warning)ÚPANDAS_INSTALLEDÚSKLEARN_INSTALLEDÚLGBMNotFittedErrorÚconcatÚpd_DataFrameÚ	pd_Series)
ÚLGBMClassifierÚ	LGBMModelÚ
LGBMRankerÚLGBMRegressorÚ#_LGBM_ScikitCustomObjectiveFunctionÚ_LGBM_ScikitEvalMetricTypeÚ_lgbmmodel_doc_custom_eval_noteÚ_lgbmmodel_doc_fitÚ_lgbmmodel_doc_predictÚ_validate_eval_set_Xy)ÚDaskLGBMClassifierÚDaskLGBMRankerÚDaskLGBMRegressor)údask.array.Arrayúdask.dataframe.DataFrameúdask.dataframe.Series)r+   r,   )r+   r-   c                   ó    — e Zd Zdefd„Zdd„Zy)Ú_RemoteSocketÚreturnc                 óR  — t        j                   t         j                  t         j                  «      | _         | j                   j                  t         j                  t         j
                  d«       | j                   j                  d«       | j                   j                  «       d   S )Nr   )Ú r   )ÚsocketÚAF_INETÚSOCK_STREAMÚ
setsockoptÚ
SOL_SOCKETÚSO_REUSEADDRÚbindÚgetsockname©Úselfs    úX/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/lightgbm/dask.pyÚacquirez_RemoteSocket.acquireK   sj   € Ü—m‘m¤F§N¡N´F×4FÑ4FÓGˆŒØ�‰×Ñœv×0Ñ0´&×2EÑ2EÀqÔIØ�‰×Ñ˜Ô!Ø�{‰{×&Ñ&Ó(¨Ñ+Ð+ó    Nc                 ó8   — | j                   j                  «        y ©N)r3   Úcloser;   s    r=   Úreleasez_RemoteSocket.releaseQ   s   € Ø�‰×ÑÕr?   )r0   N)Ú__name__Ú
__module__Ú__qualname__Úintr>   rC   © r?   r=   r/   r/   J   s   „ ð,˜ó ,ôr?   r/   r0   c                  ó>   — t        «       } | j                  «       }| |fS rA   )r/   r>   )ÚsÚports     r=   Ú_acquire_portrL   U   s   € Ü‹€AØ�9‰9‹;€DØˆdˆ7€Nr?   c                   óH   — e Zd ZdZ e«       Z e«       Z e«       Z e«       Zy)Ú_DatasetNameszÆPlaceholder names used by lightgbm.dask internals to say 'also evaluate the training data'.

    Avoid duplicating the training data when the validation set refers to elements of training data.
    N)	rD   rE   rF   Ú__doc__r   ÚTRAINSETÚSAMPLE_WEIGHTÚ
INIT_SCOREÚGROUPrH   r?   r=   rN   rN   [   s%   „ ññ
 ‹v€HÙ“F€MÙ“€JÙ‹F�Er?   rN   Úclientúdistributed.Clientc                 ó$   — ddl m} | € |«       S | S )zÍChoose a Dask client to use.

    Parameters
    ----------
    client : distributed.Client or None
        Dask client.

    Returns
    -------
    client : distributed.Client
        A Dask client.
    r   )Údefault_client)Údask.distributedrW   )rT   rW   s     r=   Ú_get_dask_clientrY   g   s   € õ 0à€~ÙÓÐàˆr?   Úworkerszdistributed.client.Futurec                 óP  — i }|D ]  }| j                  t        |gdd¬«      ||<   Œ! i }i }|j                  «       D ]U  \  }}| j                  t        j                  d«      |«      ||<   | j                  t        j                  d«      |«      ||<   ŒW | j                  |«      }||fS )a  Assign an open port to each worker.

    Returns
    -------
    worker_to_socket_future: dict
        mapping from worker address to a future pointing to the remote socket.
    worker_to_port: dict
        mapping from worker address to an open port in the worker's host.
    F)rZ   Úallow_other_workersÚpurer   r   )ÚsubmitrL   ÚitemsÚoperatorÚ
itemgetterÚgather)rT   rZ   Úworker_to_futureÚworkerÚworker_to_socket_futureÚworker_to_port_futureÚsocket_futureÚworker_to_ports           r=   Ú_assign_open_ports_to_workersri   |   sÌ   € ð ÐØò 
ˆØ#)§=¡=ÜØ�HØ %Øð	 $1ó $
Ð˜Ò ð
ð !ÐØÐØ!1×!7Ñ!7Ó!9ò ]Ñˆ�Ø*0¯-©-¼×8KÑ8KÈAÓ8NÐP]Ó*^Ð Ñ'Ø(.¯©´h×6IÑ6IÈ!Ó6LÈmÓ(\Ð˜fÒ%ð]ð
 —]‘]Ð#8Ó9€Nà" NÐ2Ð2r?   Úseqc                 óh  — t        | d   t        j                  «      rt        j                  | d¬«      S t        | d   t        t
        f«      rt        | d¬«      S t        | d   t        j                  «      rt        j                  | d¬«      S t        dt        | d   «      j                  › d�«      ‚)Nr   )ÚaxisÚcsr©ÚformatzXData must be one of: numpy arrays, pandas dataframes, sparse matrices (from scipy). Got ú.)Ú
isinstanceÚnpÚndarrayÚconcatenater   r   r   ÚssÚspmatrixÚvstackÚ	TypeErrorÚtyperD   )rj   s    r=   Ú_concatrz   ¡   s–   € Ü�#�a‘&œ"Ÿ*™*Ô%Ü�~‰~˜c¨Ô*Ð*Ü	�C˜‘Fœ\¬9Ð5Ô	6Ü�c Ô"Ð"Ü	�C˜‘FœBŸK™KÔ	(Ü�y‰y˜ UÔ+Ð+äØfÔgkÐloÐpqÑlrÓgs×g|Ñg|Ðf}Ð}~Ðó
ð 	
r?   Úargsc                  ó^   — | D ��cg c]  }|D �cg c]  }|€Œ|‘Œ	 c}‘Œ c}}S c c}w c c}}w rA   rH   )r{   ÚargÚzs      r=   Ú_remove_list_paddingr   ®   s(   € Ø9=×>°#˜Ö-�1˜q™}ŠQÔ-Ó>Ð>ùÒ-ùÓ>s   †	)�$—$›)¤)Ú
lgbm_modelÚrequired_namesc                 óŠ   — |D ]=  }|| j                   vri | j                   |<   || j                  vsŒ/i | j                  |<   Œ? | S )a  Append missing (key, value) pairs to a LightGBM model's evals_result_ and best_score_ OrderedDict attrs based on a set of required eval_set names.

    Allows users to rely on expected eval_set names being present when fitting DaskLGBM estimators with ``eval_set``.
    )Úevals_result_Úbest_score_)r€   r�   Ú	eval_names      r=   Ú_pad_eval_namesr†   ²   sW   € ð $ò 3ˆ	Ø˜J×4Ñ4Ñ4Ø24ˆJ×$Ñ$ YÑ/Ø˜J×2Ñ2Ò2Ø02ˆJ×"Ñ" 9Ò-ð	3ð Ðr?   ÚparamsÚmodel_factoryÚlist_of_partsÚmachinesÚlocal_listen_portÚnum_machinesÚreturn_modelÚtime_outÚremote_socketÚkwargsc        	         ó
  — ||||dœ}
| j                  |
«       t        |t        «      }t        |D �cg c]  }|d   ‘Œ	 c}«      }t        |D �cg c]  }|d   ‘Œ	 c}«      }d|d   v rt        |D �cg c]  }|d   ‘Œ	 c}«      }nd }d|d   v rt        |D �cg c]  }|d   ‘Œ	 c}«      }nd }d|d   v rt        |D �cg c]  }|d   ‘Œ	 c}«      }nd }t	        d„ |D «       «      }|	j                  d	d «      }|	j                  d
«      }d }d }d }d }d }|�rßt        d„ |D «       «      }t        d„ |D «       «      }g }g }|rg }|rg }|rg }g }t        |«      D �]Q  }g }g } g }!g }"g }#|D �]˜  }$|$j                  d«      sŒ|r||   }%nd|› �}%|$d   |   }&|&t        j                  u r)|j                  |$d   «       | j                  |$d   «       n(|j                  |&d   «       | j                  |&d   «       |%|vr|j                  |%«       |$j                  d«      }'|'r>|'|   t        j                  u r|!j                  |$d   «       n|!j                  |'|   «       |$j                  d«      }(|(r>|(|   t        j                  u r|"j                  |$d   «       n|"j                  |(|   «       |$j                  d«      })|)s�ŒZ|)|   t        j                  u r|#j                  |$d   «       �Œ…|#j                  |)|   «       �Œ› t!        || |!|"|#«      \  }} }!}"}#|r&|j                  t        |«      t        | «      f«       n|j                  |«       �Œü|!r|j                  t        |!«      «       |"r|j                  t        |"«      «       |#s�Œ8|j                  t        |#«      «       �ŒT t        |«      D �cg c]	  }||vsŒ|‘Œ }*}|r|*D �cg c]  }||   ‘Œ	 }}|r|*D �cg c]  }||   ‘Œ	 c}|	d
<   |€d }+d },n$t#        d„ |D «       «      }+t#        d„ |D «       «      }, |di | ¤Ž}-|�|j%                  «        	 |r |-j&                  ||f||||+|,||||dœ	|	¤Ž n |-j&                  ||f|||+|,|||dœ|	¤Ž t)        |-dd«      r|-j*                  j-                  «        	 |rt/        |-¬«      }-|r|-S d S c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w # t)        |-dd«      r|-j*                  j-                  «        w w xY w)N)rŠ   r‹   rŽ   rŒ   ÚdataÚlabelÚweightr   ÚgroupÚ
init_scorec              3   óR   K  — | ]  }t        |j                  d g «      «      –— Œ! y­w)Úeval_setN)ÚlenÚget©Ú.0Úxs     r=   ú	<genexpr>z_train_part.<locals>.<genexpr>ï   s    è ø€ ÒD°”#�a—e‘e˜J¨Ó+×,ÑDùs   ‚%'Ú
eval_namesÚeval_class_weightc              3   óB   K  — | ]  }|j                  d «      du–— Œ y­w)Úeval_sample_weightN©rš   r›   s     r=   rž   z_train_part.<locals>.<genexpr>ù   s    è ø€ Ò$dÐQR Q§U¡UÐ+?Ó%@ÈÔ%LÑ$dùó   ‚c              3   óB   K  — | ]  }|j                  d «      du–— Œ y­w)Úeval_init_scoreNr£   r›   s     r=   rž   z_train_part.<locals>.<genexpr>ú   s   è ø€ Ò!^È1 !§%¡%Ð(9Ó":À$Ô"FÑ!^ùr¤   r˜   Úvalid_r   r¢   r¦   Ú
eval_groupc              3   ó&   K  — | ]	  \  }}|–— Œ y ­wrA   rH   )rœ   ÚXÚ_s      r=   rž   z_train_part.<locals>.<genexpr>T  ó   è ø€ Ò:¡4 1 aœQÑ:ùó   ‚c              3   ó&   K  — | ]	  \  }}|–— Œ y ­wrA   rH   )rœ   r«   Úys      r=   rž   z_train_part.<locals>.<genexpr>U  r¬   r­   )	Úsample_weightr–   r•   Úeval_XÚeval_yr¢   r¦   r¨   rŸ   )r°   r–   r±   r²   r¢   r¦   rŸ   Úfitted_F)r€   r�   rH   )ÚupdateÚ
issubclassr    rz   ÚmaxÚpoprš   ÚanyÚrangerN   rP   ÚappendÚextendrQ   rR   rS   r   ÚtuplerC   ÚfitÚgetattrÚbooster_Úfree_networkr†   ).r‡   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r�   r�   Únetwork_paramsÚ	is_rankerr�   r’   r“   r”   r•   r–   Ún_evalsrŸ   r    Úlocal_eval_setÚlocal_eval_namesÚlocal_eval_sample_weightÚlocal_eval_init_scoreÚlocal_eval_groupÚhas_eval_sample_weightÚhas_eval_init_scoreÚevals_result_namesÚmissing_eval_component_idxÚiÚx_eÚy_eÚw_eÚinit_score_eÚg_eÚpartÚevals_result_namer˜   Úeval_weightr¦   r¨   Úeval_component_idxÚlocal_eval_XÚlocal_eval_yÚmodels.                                                 r=   Ú_train_partrÚ   Ä   sƒ  € ð Ø.ØØ$ñ	€Nð ‡M�M�.Ô!ä˜=¬*Ó5€Iô  }Ö5 !�A�f“IÒ5Ó6€DÜ¨Ö7 A�Q�w“ZÒ7Ó8€Eà�= Ñ#Ñ#Ü¨}Ö=¨!˜!˜H›+Ò=Ó>‰àˆà�- Ñ"Ñ"Ü¨]Ö;¨˜˜7›Ò;Ó<‰àˆà�} QÑ'Ñ'Ü°}ÖE°!˜a ›oÒEÓF‰
àˆ
ô ÑD°mÔDÓD€GØ—‘˜L¨$Ó/€JØŸ
™
Ð#6Ó7ÐØ€NØÐØ#ÐØ ÐØÐâÜ!$Ñ$dÐVcÔ$dÓ!dÐÜ!Ñ!^ÐP]Ô!^Ó^ÐàˆØÐÙ!Ø')Ð$ÙØ$&Ð!ÙØ!Ðð &(Ð"ô �w“ó >	6ˆAØˆCØˆCØˆCØˆLØˆCØ%ó )2�Ø—x‘x 
Ô+Øñ Ø(2°1©Ñ%à*0°°¨Ð%à 
Ñ+¨AÑ.�Øœ}×5Ñ5Ñ5Ø—J‘J˜t F™|Ô,Ø—J‘J˜t G™}Õ-à—J‘J˜x¨™{Ô+Ø—J‘J˜x¨™{Ô+à$Ð,>Ñ>Ø&×-Ñ-Ð.?Ô@à"Ÿh™hÐ';Ó<�ÙØ" 1‘~¬×)DÑ)DÑDØŸ
™
 4¨¡>Õ2àŸ
™
 ;¨q¡>Ô2à"&§(¡(Ð+<Ó"=�Ù"Ø& qÑ)¬]×-EÑ-EÑEØ$×+Ñ+¨D°Ñ,>Õ?à$×+Ñ+¨O¸AÑ,>Ô?à!ŸX™X lÓ3�
ÛØ! !‘}¬×(;Ñ(;Ñ;ØŸ
™
 4¨¡=Ö1àŸ
™
 :¨a¡=Ö1ðS)2ôX 0DÀCÈÈcÐS_ÐadÓ/eÑ,ˆC��c˜<¨ÙØ×%Ñ%¤w¨s£|´W¸S³\Ð&BÕCà*×1Ñ1°!Ô4ÙáØ(×/Ñ/´¸³Ô=ÙØ%×,Ñ,¬W°\Ó-BÔCÛØ ×'Ñ'¬°«Ö5ð}>	6ôB */¨w«Ö_ A¸1ÐD^Ò;^šaÐ_ÐÐ_ÙØ7IÖJ°! 
¨1£ÐJÐÐJÙØI[Ö*\ÀAÐ+<¸QÓ+?Ò*\ˆFÐ&Ñ'àÐØˆØ‰äÑ:¨>Ô:Ó:ˆÜÑ:¨>Ô:Ó:ˆáÑ#˜FÑ#€EØÐ Ø×ÑÔð *ÙØˆE�I‰IØØðð %Ø%ØØ#Ø#Ø#;Ø 5Ø+Ø+ñð óð ˆE�I‰IØØðð %Ø%Ø#Ø#Ø#;Ø 5Ø+ñð òô �5˜) UÔ+Ø�N‰N×'Ñ'Õ)áä¨5ÐASÔTˆá ˆ5Ð* dÐ*ùòI 6ùÚ7ùò >ùò
 <ùò
 Fùò@ `ùâJùâ*\øôV �5˜) UÔ+Ø�N‰N×'Ñ'Õ)ð ,úsA   ²R4ÁR9Á1R>ÂSÂ=SÎ8	SÏSÏSÏ"SÐ:=S Ó*Tr’   Ú	is_matrixc                 ó  — | j                  «       }t        |t        j                  «      rW|r|j                  d   dk(  s%J ‚|j
                  dk(  s|j                  d   dk(  sJ ‚|j                  «       j                  «       }|S )Nr   )Ú
to_delayedrq   rr   rs   ÚshapeÚndimÚflattenÚtolist)r’   rÛ   Úpartss      r=   Ú_split_to_partsrã   ƒ  sn   € Ø�O‰OÓ€EÜ�%œŸ™Ô$ÙØ—;‘;˜q‘> QÒ&Ð&Ð&à—:‘: ’? e§k¡k°!¡n¸Ò&9Ð9Ð9Ø—‘“×&Ñ&Ó(ˆØ€Lr?   Úworker_addressesc                 óž  — | j                  d«      }t        t        |«      «      t        |«      k7  rt        d| › d�«      ‚t	        t        «      }|D ]3  }|j                  d«      \  }}||   j                  t        |«      «       Œ5 i }|D ]>  }t        |«      j                  }|st        d|› d�«      ‚||   j                  «       ||<   Œ@ |S )aÇ  Create a worker_map from machines list.

    Given ``machines`` and a list of Dask worker addresses, return a mapping where the keys are
    ``worker_addresses`` and the values are ports from ``machines``.

    Parameters
    ----------
    machines : str
        A comma-delimited list of workers, of the form ``ip1:port,ip2:port``.
    worker_addresses : list of str
        An iterable of Dask worker addresses, of the form ``{protocol}{hostname}:{port}``, where ``port`` is the port Dask's scheduler uses to talk to that worker.

    Returns
    -------
    result : Dict[str, int]
        Dictionary where keys are work addresses in the form expected by Dask and values are a port for LightGBM to use.
    ú,z Found duplicates in 'machines' (zA). Each entry in 'machines' must be a unique IP-port combination.ú:z/Could not parse host name from worker address 'ú')
Úsplitr™   ÚsetÚ
ValueErrorr   ÚaddrG   r   Úhostnamer·   )	rŠ   rä   Úmachine_addressesÚmachine_to_portÚaddressÚhostrK   ÚoutÚworker_hosts	            r=   Ú_machines_to_worker_maprô   Ž  sç   € ð, !Ÿ™ sÓ+Ðä
Œ3Ð Ó!Ó"¤cÐ*;Ó&<Ò<ÜØ.¨x¨jÐ8yÐzó
ð 	
ô "¤#Ó&€OØ$ò -ˆØ—]‘] 3Ó'‰
ˆˆdØ˜Ñ×!Ñ!¤# d£)Õ,ð-ð €CØ#ò :ˆÜ˜wÓ'×0Ñ0ˆÙÜÐNÈwÈiÐWXÐYÓZÐZØ& {Ñ3×7Ñ7Ó9ˆˆGŠð	:ð €Jr?   ©r°   r–   r•   r˜   rŸ   r±   r²   r¢   r    r¦   r¨   Úeval_metricÚeval_atr“   r°   r–   r•   r˜   rŸ   r±   r²   r¢   r    r¦   r¨   rö   r÷   .c                 ó‚  ‡— 	 ddl m} ddlm} t        ‰«      Št        ˆfd„t        j                  d«      D «       «      }t        ˆfd„t        j                  d	«      D «       «      }t        d
‰d¬«      Šh d£}‰d
   |vrt        d‰d
   › d�«       d‰d
<   t        j                  dd«      D ]'  }|‰v sŒt        d|› d�«       ‰j                  |«       Œ) t        |d¬«      }t        |d¬«      }t        ||d¬«      D ��cg c]
  \  }}||dœ‘Œ }}}t        |«      }|�(t        |d¬«      } t!        |«      D ]  }!| |!   ||!   d<   Œ |�(t        |d¬«      }"t!        |«      D ]  }!|"|!   ||!   d<   Œ |�(t        |d¬«      }#t!        |«      D ]  }!|#|!   ||!   d<   Œ t#        ||
|¬«      }|�rst%        d„ |D «       «      }$t'        t(        «      }%|rt'        t(        «      }&|rt'        t(        «      }'|rt'        t(        «      }(t+        |«      D �]È  \  }!\  })}*|)j,                  }+|)|u r7|*|u r3t!        |«      D ]$  },|%|,   j/                  t0        j2                  «       Œ& n•t        |)d¬«      }-t        |*d¬«      }.t!        |$«      D ]m  }/|/|z  },|/|+k  r|-|/   }0|.|/   }1nd}0d}1|/|k  r|%|,   j/                  |0g|1gf«       Œ:|%|,   d   d   j/                  |0«       |%|,   d   d   j/                  |1«       Œo |rž||!   |u r3t!        |«      D ]$  },&|,   j/                  t0        j4                  «       Œ& ndt        ||!   d¬«      }2t!        |$«      D ]F  }/|/|+k  r|2|/   }3nd}3|/|z  },|/|k  r&|,   j/                  |3g«       Œ0&|,   d   j/                  |3«       ŒH |rž||!   |u r3t!        |«      D ]$  },(|,   j/                  t0        j6                  «       Œ& ndt        ||!   d¬«      }4t!        |$«      D ]F  }/|/|+k  r|4|/   }5nd}5|/|z  },|/|k  r(|,   j/                  |5g«       Œ0(|,   d   j/                  |5«       ŒH |s�Œ*||!   |u r4t!        |«      D ]$  },'|,   j/                  t0        j8                  «       Œ& �Œet        ||!   d¬«      }6t!        |$«      D ]F  }/|/|+k  r|6|/   }7nd}7|/|z  },|/|k  r'|,   j/                  |7g«       Œ0'|,   d   j/                  |7«       ŒH �ŒË |%j;                  «       D ]5  \  },}8|8||,   d <   |r&|,   ||,   d!<   |r(|,   ||,   d"<   |sŒ+'|,   ||,   d#<   Œ7 t)        t=        ||«      «      }| j?                  |«      } ||«       |D ]  }9|9j@                  d$k(  sŒ|9c S  |D �9ci c]  }9|9jB                  |9“Œ }:}9| jE                  |«      };t'        t(        «      }<|;j;                  «       D ].  \  }=}>|<tG        tI        |>«      «         j/                  |:|=   «       Œ0 |r;|<D ]6  }?d}@|<|?   D ]  }9d |9jK                  «       v sŒd}@ n @rŒ(t        d%|?› d&�«       Œ8 |	r|	|d'<   |r||d(<   |r||d)<   |r||d*<   tG        tI        |<«      «      }A| jM                  «       }Bt        d‰d+¬«      Š‰j                  d«      }Ct        d	‰d¬«      Š‰j                  d	«      }Di }E|<jO                  «       }F|D�tQ        d,«       tS        DF¬-«      }Gnæ|rhtQ        d.«       FD �Hch c]  }HtU        |H«      jV                  ’Œ }I}Ht        |I«      t        F«      k  rd/}Jt        |J«      ‚tX        j[                  FC«      }Gn2tQ        d0«       t]        | t)        |<jO                  «       «      ¬1«      \  }E}Gd2j_                  Gj;                  «       D �K�Lcg c]  \  }K}LtU        |K«      jV                  › d3|L› �‘Œ! c}L}K«      }Dt        G«      }M|<j;                  «       D �?�Ncg c]Y  \  }?}N | j`                  tb        f|i ‰¥dB|?   i¥|NDG|?   M‰j                  d4d5«      Ej                  |?d«      |?Ak(  |?gddd6œ|¤Ž‘Œ[ }O}?}N| je                  |O«      }P|PD �Qcg c]  }Q|QsŒQ‘Œ	 }P}Q|Pd   }R|s6t        j                  d«      D ]  }SRjf                  j                  |Sd«       Œ  |s6t        j                  d	«      D ]  }SRjf                  j                  |Sd«       Œ  t        j                  dd7«      D ]  }SRjf                  j                  |Sd«       Œ  RS # t        $ r}t        d«      |‚d}~ww xY wc c}}w c c}9w c c}Hw c c}L}Kw c c}N}?w c c}Qw )8aï  Inner train routine.

    Parameters
    ----------
    client : distributed.Client
        Dask client.
    data : Dask Array or Dask DataFrame of shape = [n_samples, n_features]
        Input feature matrix.
    label : Dask Array, Dask DataFrame or Dask Series of shape = [n_samples]
        The target values (class labels in classification, real numbers in regression).
    params : dict
        Parameters passed to constructor of the local underlying model.
    model_factory : lightgbm.LGBMClassifier, lightgbm.LGBMRegressor, or lightgbm.LGBMRanker class
        Class of the local underlying model.
    sample_weight : Dask Array or Dask Series of shape = [n_samples] or None, optional (default=None)
        Weights of training data. Weights should be non-negative.
    init_score : Dask Array or Dask Series of shape = [n_samples] or shape = [n_samples * n_classes] (for multi-class task), or Dask Array or Dask DataFrame of shape = [n_samples, n_classes] (for multi-class task), or None, optional (default=None)
        Init score of training data.
    group : Dask Array or Dask Series or None, optional (default=None)
        Group/query data.
        Only used in the learning-to-rank task.
        sum(group) = n_samples.
        For example, if you have a 100-document dataset with ``group = [10, 20, 40, 10, 10, 10]``, that means that you have 6 groups,
        where the first 10 records are in the first group, records 11-30 are in the second group, records 31-70 are in the third group, etc.
    eval_set : list of (X, y) tuples of Dask data collections, or None, optional (default=None)
        List of (X, y) tuple pairs to use as validation sets.
        Note, that not all workers may receive chunks of every eval set within ``eval_set``. When the returned
        lightgbm estimator is not trained using any chunks of a particular eval set, its corresponding component
        of ``evals_result_`` and ``best_score_`` will be empty dictionaries.
    eval_names : list of str, or None, optional (default=None)
        Unique identifiers for each evaluation dataset.
        Should be the same length as ``eval_set`` / ``eval_X``.
    eval_X : Dask Array or Dask DataFrame, tuple thereof or None, optional (default=None)
        Feature matrix or tuple thereof, e.g. ``(X_val0, X_val1)``, to use as validation sets.
    eval_y : Dask Array or Dask DataFrame or Dask Series, tuple thereof or None, optional (default=None)
        Target values or tuple thereof, e.g. ``(y_val0, y_val1)``, to use as validation sets.
    eval_sample_weight : list of Dask Array or Dask Series, or None, optional (default=None)
        Weights for each validation set in eval_set. Weights should be non-negative.
    eval_class_weight : list of dict or str, or None, optional (default=None)
        Class weights, one dict or str for each validation set in eval_set.
    eval_init_score : list of Dask Array, Dask Series or Dask DataFrame (for multi-class task), or None, optional (default=None)
        Initial model score for each validation set in eval_set.
    eval_group : list of Dask Array or Dask Series, or None, optional (default=None)
        Group/query for each validation set in eval_set.
    eval_metric : str, callable, list or None, optional (default=None)
        If str, it should be a built-in evaluation metric to use.
        If callable, it should be a custom evaluation metric, see note below for more details.
        If list, it can be a list of built-in metrics, a list of custom evaluation metrics, or a mix of both.
        In either case, the ``metric`` from the Dask model parameters (or inferred from the objective) will be evaluated and used as well.
        Default: 'l2' for DaskLGBMRegressor, 'binary(multi)_logloss' for DaskLGBMClassifier, 'ndcg' for DaskLGBMRanker.
    eval_at : list or tuple of int, optional (default=None)
        The evaluation positions of the specified ranking metric.
    **kwargs
        Other parameters passed to ``fit`` method of the local underlying model.

    Returns
    -------
    model : lightgbm.LGBMClassifier, lightgbm.LGBMRegressor, or lightgbm.LGBMRanker class
        Returns fitted underlying model.

    Note
    ----

    This method handles setting up the following network parameters based on information
    about the Dask cluster referenced by ``client``.

    * ``local_listen_port``: port that each LightGBM worker opens a listening socket on,
            to accept connections from other workers. This can differ from LightGBM worker
            to LightGBM worker, but does not have to.
    * ``machines``: a comma-delimited list of all workers in the cluster, in the
            form ``ip:port,ip:port``. If running multiple Dask workers on the same host, use different
            ports for each worker. For example, for ``LocalCluster(n_workers=3)``, you might
            pass ``"127.0.0.1:12400,127.0.0.1:12401,127.0.0.1:12402"``.
    * ``num_machines``: number of LightGBM workers.
    * ``timeout``: time in minutes to wait before closing unused sockets.

    The default behavior of this function is to generate ``machines`` from the list of
    Dask workers which hold some piece of the training data, and to search for an open
    port on each worker to be used as ``local_listen_port``.

    If ``machines`` is provided explicitly in ``params``, this function uses the hosts
    and ports in that list directly, and does not do any searching. This means that if
    any of the Dask workers are missing from the list or any of those ports are not free
    when training starts, training will fail.

    If ``local_listen_port`` is provided in ``params`` and ``machines`` is not, this function
    constructs ``machines`` from the list of Dask workers which hold some piece of the
    training data, assuming that each one will use the same ``local_listen_port``.
    r   ©Údelayed)Úwaitú"dask is required for lightgbm.daskNc              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wrA   rH   ©rœ   Úaliasr‡   s     €r=   rž   z_train.<locals>.<genexpr>2  s   øè ø€ Òe°E ¨¤Ñeùó   ƒr‹   c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wrA   rH   rþ   s     €r=   rž   z_train.<locals>.<genexpr>5  s   øè ø€ ÒY°˜U fœ_ÑYùr   rŠ   Útree_learnerr’   )Úmain_param_namer‡   Údefault_value>   r’   ÚvotingÚfeatureÚdata_parallelÚvoting_parallelÚfeature_parallelzParameter tree_learner set to z/, which is not allowed. Using "data" as defaultrŒ   Únum_threadsz
Parameter z will be ignored.T)r’   rÛ   F)Ústrict)r’   r“   r”   r•   r–   )r˜   r±   r²   c              3   ó:   K  — | ]  }|d    j                   –— Œ y­w)r   N)Únpartitionsr›   s     r=   rž   z_train.<locals>.<genexpr>m  s   è ø€ Ò"F¸ 1 Q¡4×#3Õ#3Ñ"Fùs   ‚éÿÿÿÿr   r˜   r¢   r¦   r¨   ÚerrorzWorker z† was not allocated eval_set data. Therefore evals_result_ and best_score_ data may be unreliable. Try rebalancing data across workers.rŸ   r    rö   r÷   ip0  z$Using passed-in 'machines' parameter)rŠ   rä   z3Using passed-in 'local_listen_port' for all workerszË'local_listen_port' was provided in Dask training parameters, but at least one machine in the cluster has multiple Dask worker processes running on it. Please omit 'local_listen_port' or pass 'machines'.z%Finding random open ports for workers)rT   rZ   ræ   rç   rŽ   éx   )rˆ   r‡   r‰   rŠ   r‹   rŒ   rŽ   r�   r�   rZ   r\   r]   Útimeout)4Údaskrú   rX   rû   Ú_DaskImportErrorTypesr   r   r¸   r   rš   r   r   r·   rã   Úzipr™   r¹   r'   r¶   r   ÚlistÚ	enumerater  rº   rN   rP   rQ   rR   rS   r_   ÚmapÚcomputeÚstatusÚkeyÚwho_hasÚnextÚiterÚresultÚncoresÚkeysr   rô   r   rí   ÚdictÚfromkeysri   Újoinr^   rÚ   rb   Ú_other_params)TrT   r’   r“   r‡   rˆ   r°   r–   r•   r˜   rŸ   r±   r²   r¢   r    r¦   r¨   rö   r÷   r�   rú   rû   ÚerrÚlisten_port_in_paramsÚmachines_in_paramsÚallowed_tree_learnersÚparam_aliasÚ
data_partsÚlabel_partsr�   r¯   râ   Ún_partsÚweight_partsrÍ   Úgroup_partsÚinit_score_partsÚn_largest_eval_partsÚ	eval_setsÚeval_sample_weightsÚeval_groupsÚeval_init_scoresÚX_evalÚy_evalÚn_this_eval_partsÚ	parts_idxÚeval_x_partsÚeval_y_partsÚjrÎ   rÏ   Úeval_w_partsrÐ   Úeval_init_score_partsrÑ   Úeval_g_partsrÒ   Úe_setrÓ   Úkey_to_part_dictr  Ú
worker_mapr  rZ   rd   Úhas_eval_setÚmaster_workerÚworker_ncoresr‹   rŠ   re   rä   Úworker_address_to_portÚaÚunique_hostsÚmsgÚworker_addressrK   rŒ   r‰   Úfutures_classifiersÚresultsÚvrÙ   ÚparamsT      `                                                                                r=   Ú_trainrN  º  sÁ
  ø€ ð^KÝ Ý)ô �fÓ€Fô  Óe¼^×=OÑ=OÐPcÓ=dÔeÓeÐô ÓY¼.×:LÑ:LÈZÓ:XÔYÓYÐä Ø&ØØô€Fò
Ðð ˆnÑÐ%:Ñ:ÜØ,¨V°NÑ-CÐ,DÐDsÐtô	
ð "(ˆˆ~Ñô
 &×)Ñ)¨.¸-ÓHò $ˆØ˜&Ò Ü˜: k ]Ð2CÐDÔEØ�J‰J�{Õ#ð$ô ! d°dÔ;€JÜ! u¸Ô>€KÜ36°zÀ;ÐW[Ô3\×]©¨!¨Q�a !Ó$Ð]€EÑ]Ü�%‹j€GàÐ Ü&¨MÀUÔKˆÜ�w“ò 	1ˆAØ!-¨a¡ˆE�!‰H�XÒð	1ð ÐÜ%¨5¸EÔBˆÜ�w“ò 	/ˆAØ +¨A¡ˆE�!‰H�WÒð	/ð ÐÜ*°
ÀeÔLÐÜ�w“ò 	9ˆAØ%5°aÑ%8ˆE�!‰H�\Ò"ð	9ô %¨h¸vÈfÔU€Hò ô  #Ñ"F¸XÔ"FÓFÐô œÓð 	ñ ÜjuÜókÐñ ÜbmÔnrÓbsˆKÙÜgrÔswÓgxÐä#,¨XÓ#6ó S	CÑˆAÑ�˜Ø &× 2Ñ 2Ðð ˜‰~ &¨E¡/Ü!& w£ò H�IØ˜iÑ(×/Ñ/´×0FÑ0FÕGñHô  /°FÀdÔK�Ü.°FÀeÔL�ÜÐ3Ó4ò @�AØ ! G¡�Ið Ð,Ò,Ø*¨1™o˜Ø*¨1™o™à"˜Ø"˜à˜7’{à! )Ñ,×3Ñ3°c°U¸S¸E°NÕCð " )Ñ,¨RÑ0°Ñ3×:Ñ:¸3Ô?Ø! )Ñ,¨RÑ0°Ñ3×:Ñ:¸3Õ?ð#@ñ& "Ø% aÑ(¨MÑ9Ü%*¨7£^ò [˜	Ø+¨IÑ6×=Ñ=¼m×>YÑ>YÕZñ[ô $3Ð8JÈ1Ñ8MÐY^Ô#_�Lô #Ð#7Ó8ò 
K˜ØÐ0Ò0Ø".¨q¡/™Cà"&˜Cà$%¨¡K˜	Ø˜wš;Ø/°	Ñ:×AÑAÀ3À%ÕHà/°	Ñ:¸2Ñ>×EÑEÀcÕJð
Kñ Ø" 1Ñ%¨Ñ3Ü%*¨7£^ò U˜	Ø(¨Ñ3×:Ñ:¼=×;SÑ;SÕTñUô -<ÀÐQRÑASÐ_dÔ,eÐ)Ü"Ð#7Ó8ò 
Q˜ØÐ0Ò0Ø+@ÀÑ+C™Là+/˜Là$%¨¡K˜	Ø˜wš;Ø,¨YÑ7×>Ñ>À¸~ÕNà,¨YÑ7¸Ñ;×BÑBÀ<ÕPð
Qó Ø˜a‘= EÑ)Ü%*¨7£^ò K˜	Ø# IÑ.×5Ñ5´m×6IÑ6IÕJòKô $3¸
À1¹ÐQVÔ#W�LÜ"Ð#7Ó8ò 
C˜ØÐ0Ò0Ø".¨q¡/™Cà"&˜Cà$%¨¡K˜	Ø˜wš;Ø'¨	Ñ2×9Ñ9¸3¸%Õ@à'¨	Ñ2°2Ñ6×=Ñ=¸cÕBò
CðSS	Cðl !*§¡Ó 1ò 	HÑˆI�uØ+0ˆE�)Ñ˜ZÑ(Ù!Ø9LÈYÑ9W��iÑ Ð!5Ñ6ÙØ6FÀyÑ6Q��iÑ Ð!2Ñ3ÚØ1<¸YÑ1G��iÑ  Ò.ð	Hô ”�W˜eÓ$Ó%€EØ�N‰N˜5Ó!€EÙˆ„Kàò ˆØ�;‰;˜'Ó!àŠKðð 49Ö9¨4˜Ÿ™ $™Ð9ÐÐ9Ø�n‰n˜UÓ#€GÜœTÓ"€JØŸ™›ò F‰ˆˆWØ”4œ˜W›Ó&Ñ'×.Ñ.Ð/?ÀÑ/DÕEðFñ
 Ø ò 	ˆFØ ˆLØ" 6Ñ*ò �Ø §¡£Ò.Ø#'�LÙðò
  ÜØ˜f˜Xð &;ð ;õð	ñ Ø)ˆˆ|ÑÙØ&7ˆÐ"Ñ#ÙØ +ˆˆ}ÑÙØ#ˆˆyÑäœ˜jÓ)Ó*€MØ—M‘M“O€Mô !Ø+ØØô€Fð
 Ÿ
™
Ð#6Ó7Ðä Ø"ØØô€Fð
 �z‰z˜*Ó%€Hð GIÐØ!—‘Ó(ÐØÐÜÐ8Ô9Ü!8ØØ-ô"
Ññ
 !ÜÐKÔLØ:JÖK°QœH Q›K×0Ó0ÐKˆLÐKÜ�<Ó ¤3Ð'7Ó#8Ò8ð>ð ô
 $ CÓ(Ð(ä%)§]¡]Ð3CÐEVÓ%WÑ"äÐ=Ô>Ü>[ØÜ˜ZŸ_™_Ó.Ó/ô?Ñ;Ð#Ð%;ð
 —8‘8ØWm×WsÑWsÓWu×vÑ?S¸~Èt”˜Ó(×1Ñ1Ð2°!°D°6Ò:Óvó
ˆô Ð-Ó.€Lð6 &0×%5Ñ%5Ó%7÷#ñ" "ˆF�Mð! 	ˆ�‰Üð	
à'ØC�fÐC˜m¨]¸6Ñ-BÑCØ'ØØ4°VÑ<Ø%Ø—Z‘Z 
¨CÓ0Ø1×5Ñ5°f¸dÓCØ  MÑ1Ø�HØ %Øñ	
ð ó	
ðÐñ ð( �m‰mÐ/Ó0€GØ!Ö'�Q¢QŠqÐ'€GÐ'Ø�A‰J€Eñ !Ü#×'Ñ'Ð(;Ó<ò 	1ˆEØ×Ñ×#Ñ# E¨4Õ0ð	1ñ Ü#×'Ñ'¨
Ó3ò 	1ˆEØ×Ñ×#Ñ# E¨4Õ0ð	1ô  ×#Ñ# N°IÓ>ò -ˆØ×Ñ×Ñ  tÕ,ð-ð €Løô}	 !ò KÜÐ@ÓAÀsÐJûðKüóR ^ùò` :ùò~ Lùó$ wùóùò* (sB   ƒd Äd Õ.d&Ûd+Þ$d0
ßAd6ád<ád<ä	dädädrÓ   rÙ   Ú	raw_scoreÚ
pred_probaÚ	pred_leafÚpred_contribc                ó®  — | j                   d   dk(  rt        j                  g «      }n1|r |j                  | f|||dœ|¤Ž}n |j                  | f|||dœ|¤Ž}t        | t        «      rkdt        |«      › d�}t        |d«      sJ |«       ‚t        |j                   «      dk(  rt        || j                  ¬«      }|S t        || j                  d¬	«      }|S )
Nr   )rO  rQ  rR  zLpredict(X) for lightgbm.dask estimators should always return an array, not 'zœ', when X is a pandas Dataframe. If you're seeing this message, it's a bug in lightgbm. Please report it at https://github.com/lightgbm-org/LightGBM/issues.rÞ   é   )ÚindexÚpredictions)rU  Úname)rÞ   rr   ÚarrayÚpredict_probaÚpredictrq   r   ry   Úhasattrr™   rU  r   )	rÓ   rÙ   rO  rP  rQ  rR  r�   r  Ú	error_msgs	            r=   Ú_predict_partr]  m  s  € ð ‡z�z�!�}˜ÒÜ—‘˜"“‰Ù	Ø$�×$Ñ$Øð
àØØ%ñ	
ð
 ñ
‰ð �—‘Øð
àØØ%ñ	
ð
 ñ
ˆô �$œÔ%ð [Ô[_Ð`fÓ[gÐZhð iJð Jð 	ô �v˜wÔ'Ð2¨Ó2Ð'Üˆv�|‰|Ó Ò!Ü! &°·
±
Ô;ˆFð €Mô ˜v¨T¯Z©Z¸mÔLˆFà€Mr?   F)rO  rP  rQ  rR  r+   c           	      óv  — t        t        t        f«      st        d«      ‚	 ddl}ddl}ddl}ddlm}	 t        ||j                  j                  «      r' |j                  t        f| ||||dœ|¤Žj                  S t        ||j                   j"                  «      �rÛ| j$                  }|dkD  �r/|�r,t        |j&                  t(        j*                  «      �rt-        t        f| d|dd	dœ|¤Ž}|j/                  «       }|j0                  j3                  |dd…df   «      }|	d
t4        t6           dt8        dt6        fd„«       }|j                  |«      }| j:                  dz   }|j<                  d   }t?        |«      D �cg c]  }g ‘Œ }}|j&                  }tA        |j/                  «       «      D ]S  \  }}t?        |«      D ]@  }|j                   j3                   |||«      ||   |f|¬«      }||   jC                  |«       ŒB ŒU t        |t(        jD                  «      rt-        t(        jF                  d¬«      }nFt        |t(        jH                  «      rt-        t(        jF                  d¬«      }nt(        jF                  }g }t?        |«      D ]M  }|jC                  |j                   j3                    |	|«      ||   «      |jJ                  d   |f|¬«      «       ŒO |S |jM                  |dg   «      jO                  «       }t-        t        f| ||||dœ|¤Ž} ||«      }|j<                  d   f}i } tQ        |jJ                  «      dkD  r||jJ                  d   fz  }nd| d<    |jR                  |f||dœ| ¤ŽS tU        dtW        |«      jX                  › d�«      ‚# t        $ r}
t        d«      |
‚d}
~
ww xY wc c}w )a¶  Inner predict routine.

    Parameters
    ----------
    model : lightgbm.LGBMClassifier, lightgbm.LGBMRegressor, or lightgbm.LGBMRanker class
        Fitted underlying model.
    data : Dask Array or Dask DataFrame of shape = [n_samples, n_features]
        Input feature matrix.
    raw_score : bool, optional (default=False)
        Whether to predict raw scores.
    pred_proba : bool, optional (default=False)
        Should method return results of ``predict_proba`` (``pred_proba=True``) or ``predict`` (``pred_proba=False``).
    pred_leaf : bool, optional (default=False)
        Whether to predict leaf index.
    pred_contrib : bool, optional (default=False)
        Whether to predict feature contributions.
    **kwargs
        Other parameters passed to ``predict`` or ``predict_proba`` method.

    Returns
    -------
    predicted_result : Dask Array of shape = [n_samples] or shape = [n_samples, n_classes]
        The predicted values.
    X_leaves : Dask Array of shape = [n_samples, n_trees] or shape = [n_samples, n_trees * n_classes]
        If ``pred_leaf=True``, the predicted leaf of every tree for each sample.
    X_SHAP_values : Dask Array of shape = [n_samples, n_features + 1] or shape = [n_samples, (n_features + 1) * n_classes] or (if multi-class and using sparse inputs) a list of ``n_classes`` Dask Arrays of shape = [n_samples, n_features + 1]
        If ``pred_contrib=True``, the feature contributions for each sample.
    ú6pandas and scikit-learn are required for lightgbm.daskr   Nrù   rü   )rÙ   rO  rP  rQ  rR  rT  FTr_   rÍ   r0   c                 ó   — | |   S rA   rH   )r_   rÍ   s     r=   Ú_extractz_predict.<locals>._extractí  s   € à˜Q‘x�r?   r   )ÚvaluerÞ   Úmetarm   rn   ÚcscÚ	drop_axis)Úchunksrc  z6Data must be either Dask Array or Dask DataFrame. Got rp   )-Úallr   r   r   Ú
dask.arrayÚdask.bagÚdask.dataframer  rú   r  rq   Ú	dataframeÚ	DataFrameÚmap_partitionsr]  ÚvaluesrX  ÚArrayÚ
_n_classesÚ_metaru   rv   r   rÝ   ÚbagÚfrom_delayedr   r	   rG   Ún_features_rf  r¹   r  rº   Ú
csr_matrixrw   Ú
csc_matrixrÞ   r  r  r™   Ú
map_blocksrx   ry   rD   )!rÙ   r’   rT   rO  rP  rQ  rR  r�   r  rú   r%  Únum_classesÚpredict_functionÚdelayed_chunksrr  ra  ÚpredsÚnum_colsÚnrows_per_chunkr«   rò   Ú	pred_metar;  Ú	partitionrÍ   rÓ   Ú	concat_fnÚ
out_arraysÚdata_rowÚ
predict_fnÚpred_rowrf  Úmap_blocks_kwargss!                                    r=   Ú_predictr†  ž  sÞ  € ôN Ô Ô"3Ð4Ô5ÜÐTÓUÐUðKÛÛÛÝ ô �$˜Ÿ™×0Ñ0Ô1Ø"ˆt×"Ñ"Üð
àØØ!ØØ%ñ
ð ñ
÷ ‰&ð	ô 
�D˜$Ÿ*™*×*Ñ*Õ	+ð ×&Ñ&ˆà˜‹?š|´
¸4¿:¹:ÄrÇ{Á{Õ0SÜ&Üð àØØ%ØØ!ñ ð ñ Ðð "Ÿ_™_Ó.ˆNØ—(‘(×'Ñ'¨²q¸!°tÑ(<Ó=ˆCàð ¤¤S¡	ð  ¬cð  ´cò  ó ð ð ×&Ñ&Ð'7Ó8ˆEð ×(Ñ(¨1Ñ,ˆHà"Ÿk™k¨!™nˆOÜ=BÀ;Ó=OÖ0P¸²Ð0PˆCÐ0Pð Ÿ
™
ˆIä )¨%×*:Ñ*:Ó*<Ó =ò (‘��9Ü˜{Ó+ò (�AØŸ:™:×2Ñ2Ù& y°!Ó4Ø.¨qÑ1°8Ð<Ø&ð 3ó �Dð
 ˜‘F—M‘M $Õ'ñ(ð(ô ˜)¤R§]¡]Ô3Ü#¤B§I¡I°eÔ<‘	Ü˜I¤r§}¡}Ô5Ü#¤B§I¡I°eÔ<‘	äŸI™I�	ð 24ˆJÜ˜;Ó'ò �Ø×!Ñ!Ø—J‘J×+Ñ+Ø0™g iÓ0°°Q±Ó8Ø#Ÿz™z¨!™}¨hÐ7Ø&ð ,ó õðð Ðà—>‘> $¨ s¡)Ó,×3Ñ3Ó5ˆÜÜð
àØØ!ØØ%ñ
ð ñ
ˆ
ñ ˜hÓ'ˆØ#'§;¡;¨q¡>Ð"3ˆØÐÜˆx�~‰~Ó Ò"Ø�x—~‘~ aÑ(Ð*Ñ*‰Fà-.Ð˜kÑ*Øˆt�‰Øð
àØñ
ð  ñ	
ð 	
ô ÐPÔQUÐVZÓQ[×QdÑQdÐPeÐefÐgÓhÐhøôQ !ò KÜÐ@ÓAÀsÐJûðKüòV 1Qs   ¢N Å<	N6Î	N3Î"N.Î.N3c            &       ó°  — e Zd Zedd„«       Zdeeef   fd„Zddddddddddddddœdee	   de
ded	ee   d
ee   dee   deeee
ef         deee      deee
ee
   f      deeeee   f      deee      deeeeef         deee      deee      dee   deeee   eedf   f      dedd f$d„Zdee	   de	fd„Zeded e	f   ded e	f   ddfd„«       Zy)Ú_DaskLGBMModelr0   c                 ó^   — t        | dd«      st        d«      ‚t        | j                  ¬«      S )z¥:obj:`distributed.Client`: Dask client.

        This property can be passed in the constructor or updated
        with ``model.set_params(client=client)``.
        r³   Fz4Cannot access property client_ before calling fit().)rT   )r¾   r   rY   rT   r;   s    r=   Úclient_z_DaskLGBMModel.client_9  s+   € ô �t˜Y¨Ô.Ü$Ð%[Ó\Ð\ä t§{¡{Ô3Ð3r?   c                 óÔ   — | j                   j                  dd«      }| j                  j                  dd«       t        | j                   «      }|j	                  ddi«       || _        |S )z4Remove un-picklable attributes before serialization.rT   N)Ú__dict__r·   r$  r   r´   rT   )r<   rT   rò   s      r=   Ú_lgb_dask_getstatez!_DaskLGBMModel._lgb_dask_getstateE  sY   € à—‘×"Ñ" 8¨TÓ2ˆØ×Ñ×Ñ˜x¨Ô.Ü�t—}‘}Ó%ˆØ�
‰
�H˜dÐ#Ô$ØˆŒØˆ
r?   Nrõ   rˆ   rª   r¯   r°   r–   r•   r˜   rŸ   r±   r²   r¢   r    r¦   r¨   rö   r÷   .r�   c                óš  — t        t        t        f«      st        d«      ‚| j	                  d«      }|j                  dd «       t        di dt        | j                  «      “d|“d|“d|“d|“d|“d	|“d
|“d|“d|“d|	“d|
“d|“d|“d|“d|“d|“d|“|¤Ž} | j                  di |j	                  «       ¤Ž | j                  || ¬«       | S )Nr_  TrT   r’   r“   r‡   rˆ   r°   r–   r•   r˜   rŸ   r±   r²   r¢   r    r¦   r¨   rö   r÷   ©ÚsourceÚdestrH   )rg  r   r   r   Ú
get_paramsr·   rN  rY   rT   Ú
set_paramsÚ_lgb_dask_copy_extra_params)r<   rˆ   rª   r¯   r°   r–   r•   r˜   rŸ   r±   r²   r¢   r    r¦   r¨   rö   r÷   r�   r‡   rÙ   s                       r=   Ú_lgb_dask_fitz_DaskLGBMModel._lgb_dask_fitN  s5  € ô* Ô$Ô&7Ð8Ô9ÜÐ XÓYÐYà—‘ Ó&ˆØ�
‰
�8˜TÔ"äò 
Ü# D§K¡KÔ0ð
áð
ñ ð
ñ ð	
ñ
 (ð
ñ (ð
ñ "ð
ñ ð
ñ ð
ñ "ð
ñ ð
ñ ð
ñ  2ð
ñ 0ð
ñ ,ð
ñ  "ð!
ñ" $ð#
ñ$ Øñ'
ˆð, 	ˆ�‰Ñ-˜%×*Ñ*Ó,Ò-Ø×(Ñ(°¸DÐ(ÔAàˆr?   c                 ó¸   — | j                  «       }|j                  dd «        |di |¤Ž}| j                  | |¬«       |j                  j                  dd «       |S )NrT   r�  rH   )r’  r·   r”  r$  )r<   rˆ   r‡   rÙ   s       r=   Ú_lgb_dask_to_localz!_DaskLGBMModel._lgb_dask_to_local„  sW   € Ø—‘Ó"ˆØ�
‰
�8˜TÔ"ÙÑ' Ñ'ˆØ×(Ñ(°¸5Ð(ÔAØ×Ñ×Ñ ¨$Ô/Øˆr?   r�  r‘  c                 óÖ   — | j                  «       }| j                  }t        |j                  «       «      j	                  |j                  «       «      }|D ]  }t        ||||   «       Œ y rA   )r’  rŒ  rê   r   Ú
differenceÚsetattr)r�  r‘  r‡   Ú
attributesÚextra_param_namesrW  s         r=   r”  z*_DaskLGBMModel._lgb_dask_copy_extra_paramsŒ  s^   € ð ×"Ñ"Ó$ˆØ—_‘_ˆ
Ü 
§¡Ó 1Ó2×=Ñ=¸f¿k¹k»mÓLÐØ%ò 	2ˆDÜ�D˜$ 
¨4Ñ 0Õ1ñ	2r?   )r0   rU   )rD   rE   rF   ÚpropertyrŠ  r
   r	   r�  r   r   Ú_DaskMatrixLikeÚ_DaskCollectionr   Ú_DaskVectorLiker   r   Ústrr   r!  r#   rG   r•  r—  Ústaticmethodr”  rH   r?   r=   rˆ  rˆ  8  s  „ Øò	4ó ð	4ð D¨¨c¨¡Nó ð 48Ø04Ø+/ØLPØ*.ØKOØKOØ>BØ>BØ;?Ø6:Ø<@Ø?Cò%4ð ˜I‘ð4ð ð	4ð
 ð4ð   Ñ0ð4ð ˜_Ñ-ð4ð ˜Ñ(ð4ð ˜4  o°Ð&FÑ GÑHÑIð4ð ˜T #™YÑ'ð4ð ˜˜°°oÑ0FÐFÑGÑHð4ð ˜˜°°oÑ0FÐFÑGÑHð4ð % T¨/Ñ%:Ñ;ð4ð $ D¨¨t°S¨yÑ)9Ñ$:Ñ;ð4ð " $ Ñ"7Ñ8ð4ð  ˜T /Ñ2Ñ3ð!4ð" Ð8Ñ9ð#4ð$ ˜%  S¡	¨5°°c°©?Ð :Ñ;Ñ<ð%4ð& ð'4ð( 
ó)4ðl°°Y±ð ÀIó ð ð	2àÐ&¨	Ð1Ñ2ð	2ð Ð$ iÐ/Ñ0ð	2ð 
ò		2ó ñ	2r?   rˆ  c            +       ó¦  ‡ — e Zd ZdZddddddddd	d
ddddd	d	dddddœdededededededeeee	f      deee
ef      dedededededededed eeeej                  j                  d!f      d"ee   d#ed$ed%   d&ef*ˆ fd'„Zej                  j                  Zej%                  d(«      \  ZZZed)z   d*z   d+z   d,z   d-z   ez   e_        d.eeef   fd/„Z	 	 	 	 	 	 	 	 d_ddd0œd1ed2ed3ee   d4ee   d5eeeeef         d6eee      d7eee      d8eeee
ef         d9eee      d:ee   d;eeeee   f      d<eeeee   f      d&ed.d fd=„Z ej@                  d>d?d@dAdBdCdDdC¬E«      ZedejC                  dF«       eejC                  dG«      d z   ZedejC                  dH«       eejC                  dI«      d z   ZedejC                  dJ«       › dKe"› dL�e_        	 	 	 	 	 	 d`d1edMe#dNedOee   dPe#dQe#dRe#d&ed.dSfdT„Z$ e%j@                  dUd>dVdWdXdY¬Z«      e$_        	 	 	 	 	 	 d`d1edMe#dNedOee   dPe#dQe#dRe#d&ed.dSfd[„Z& e%j@                  d\d>d]dWdXdY¬Z«      e&_        d.efd^„Z'ˆ xZ(S )ar(   z/Distributed version of lightgbm.LGBMClassifier.Úgbdté   r  çš™™™™™¹?éd   é@ Nç        çü©ñÒMbP?é   ç      ð?r   ré   ©Úboosting_typeÚ
num_leavesÚ	max_depthÚlearning_rateÚn_estimatorsÚsubsample_for_binÚ	objectiveÚclass_weightÚmin_split_gainÚmin_child_weightÚmin_child_samplesÚ	subsampleÚsubsample_freqÚcolsample_bytreeÚ	reg_alphaÚ
reg_lambdaÚrandom_stateÚn_jobsÚimportance_typerT   r®  r¯  r°  r±  r²  r³  r´  rµ  r¶  r·  r¸  r¹  rº  r»  r¼  r½  r¾  únp.random.Generatorr¿  rÀ  rT   rU   r�   c                ó¤   •— || _         t        ‰| �  di d|“d|“d|“d|“d|“d|“d|“d|“d	|	“d
|
“d|“d|“d|“d|“d|“d|“d|“d|“d|“|¤Ž y)zADocstring is inherited from the lightgbm.LGBMClassifier.__init__.r®  r¯  r°  r±  r²  r³  r´  rµ  r¶  r·  r¸  r¹  rº  r»  r¼  r½  r¾  r¿  rÀ  NrH   ©rT   ÚsuperÚ__init__©r<   r®  r¯  r°  r±  r²  r³  r´  rµ  r¶  r·  r¸  r¹  rº  r»  r¼  r½  r¾  r¿  rÀ  rT   r�   Ú	__class__s                         €r=   rÅ  zDaskLGBMClassifier.__init__œ  óÖ   ø€ ð4 ˆŒÜ‰Ñò 	
Ù'ð	
á!ð	
ñ  ð	
ñ (ð		
ñ
 &ð	
ñ 0ð	
ñ  ð	
ñ &ð	
ñ *ð	
ñ .ð	
ñ 0ð	
ñ  ð	
ñ *ð	
ñ .ð	
ñ  ð	
ñ  "ð!	
ñ" &ð#	
ñ$ ð%	
ñ& ,Øó)	
r?   ú**kwargsú=client : distributed.Client or None, optional (default=None)
ú    Dask client. 
úK    If ``None``, ``distributed.default_client()`` will be used at runtime.
úY    The Dask client used by this class will not be saved if the model object is pickled.
ú	**kwargs
r0   c                 ó"   — | j                  «       S rA   ©r�  r;   s    r=   Ú__getstate__zDaskLGBMClassifier.__getstate__Ú  ó   € Ø×&Ñ&Ó(Ð(r?   ©r±   r²   rª   r¯   r°   r–   r˜   rŸ   r¢   r    r¦   rö   r±   r²   c                óN   —  | j                   dt        |||||||||||	|
dœ|¤Ž | S )z<Docstring is inherited from the lightgbm.LGBMClassifier.fit.)rˆ   rª   r¯   r°   r–   r˜   rŸ   r±   r²   r¢   r    r¦   rö   rH   )r•  r   )r<   rª   r¯   r°   r–   r˜   rŸ   r¢   r    r¦   rö   r±   r²   r�   s                 r=   r½   zDaskLGBMClassifier.fitÝ  sQ   € ð$ 	ˆ×Ñð 	
Ü(ØØØ'Ø!ØØ!ØØØ1Ø/Ø+Ø#ñ	
ð ò	
ð  ˆr?   ú?Dask Array or Dask DataFrame of shape = [n_samples, n_features]ú@Dask Array, Dask DataFrame or Dask Series of shape = [n_samples]úQDask Array or Dask Series of shape = [n_samples] or None, optional (default=None)zæDask Array or Dask Series of shape = [n_samples] or shape = [n_samples * n_classes] (for multi-class task), or Dask Array or Dask DataFrame of shape = [n_samples, n_classes] (for multi-class task), or None, optional (default=None)ú:Dask Array or Dask Series or None, optional (default=None)úClist of Dask Array or Dask Series, or None, optional (default=None)zjlist of Dask Array, Dask Series or Dask DataFrame (for multi-class task), or None, optional (default=None)©ÚX_shapeÚy_shapeÚsample_weight_shapeÚinit_score_shapeÚgroup_shapeÚeval_sample_weight_shapeÚeval_init_score_shapeÚeval_group_shapeúgroup :ú
eval_set :úeval_group :úeval_metric :úcallbacks :z©**kwargs
        Other parameters passed through to ``LGBMClassifier.fit()``.

    Returns
    -------
    self : lightgbm.DaskLGBMClassifier
        Returns self.

    ú	
        rO  Ústart_iterationÚnum_iterationrQ  rR  Úvalidate_featuresr+   c                 ón   — t        d| j                  «       |t        | j                  «      ||||||dœ	|¤ŽS )z@Docstring is inherited from the lightgbm.LGBMClassifier.predict.©	rÙ   r’   rT   rO  ré  rê  rQ  rR  rë  rH   ©r†  Úto_localrY   rT   ©	r<   rª   rO  ré  rê  rQ  rR  rë  r�   s	            r=   rZ  zDaskLGBMClassifier.predict  óJ   € ô ð 
Ø—-‘-“/ØÜ# D§K¡KÓ0ØØ+Ø'ØØ%Ø/ñ
ð ñ
ð 	
r?   ú+Return the predicted value for each sample.Úpredicted_resultzCDask Array of shape = [n_samples] or shape = [n_samples, n_classes]zVDask Array of shape = [n_samples, n_trees] or shape = [n_samples, n_trees * n_classes]zÝDask Array of shape = [n_samples, n_features + 1] or shape = [n_samples, (n_features + 1) * n_classes] or (if multi-class and using sparse inputs) a list of ``n_classes`` Dask Arrays of shape = [n_samples, n_features + 1]©ÚdescriptionrÛ  Úoutput_nameÚpredicted_result_shapeÚX_leaves_shapeÚX_SHAP_values_shapec                 óp   — t        d| j                  «       |dt        | j                  «      ||||||dœ
|¤ŽS )zFDocstring is inherited from the lightgbm.LGBMClassifier.predict_proba.T)
rÙ   r’   rP  rT   rO  ré  rê  rQ  rR  rë  rH   rî  rð  s	            r=   rY  z DaskLGBMClassifier.predict_proba?  sM   € ô ð 
Ø—-‘-“/ØØÜ# D§K¡KÓ0ØØ+Ø'ØØ%Ø/ñ
ð ñ
ð 	
r?   z@Return the predicted probability for each class for each sample.Úpredicted_probabilityc                 ó,   — | j                  t        «      S )zÅCreate regular version of lightgbm.LGBMClassifier from the distributed version.

        Returns
        -------
        model : lightgbm.LGBMClassifier
            Local underlying model.
        )r—  r   r;   s    r=   rï  zDaskLGBMClassifier.to_localb  s   € ð ×&Ñ&¤~Ó6Ð6r?   )NNNNNNNN©Fr   NFFF))rD   rE   rF   rO   r¡  rG   Úfloatr   r   r"   r!  rr   ÚrandomÚRandomStater	   rÅ  r   Ú	_base_docr  Ú_before_kwargsr«   Ú_after_kwargsr
   rÑ  rž  rŸ  r   r   r   r#   r½   r%   ro   Úfindr$   ÚboolrZ  r&   rY  rï  Ú__classcell__©rÇ  s   @r=   r(   r(   ™  s.  ø„ Ù9ð
 $ØØØ"ØØ!'ØOSØ37Ø #Ø"&Ø!#ØØØ"%ØØØ[_Ø $Ø&Ø15ò-0
ð ð0
ð ð	0
ð
 ð0
ð ð0
ð ð0
ð ð0
ð ˜E #Ð'JÐ"JÑKÑLð0
ð ˜u T¨3 YÑ/Ñ0ð0
ð ð0
ð  ð0
ð ð0
ð ð0
ð ð0
ð   ð!0
ð" ð#0
ð$ ð%0
ð& ˜u S¨"¯)©)×*?Ñ*?ÐAVÐ%VÑWÑXð'0
ð( ˜‘ð)0
ð* ð+0
ð, Ð-Ñ.ð-0
ð. õ/0
ðd ×'Ñ'×/Ñ/€IØ'0×':Ñ':¸:Ó'FÑ$€N�A�}àØ
Jñ	Kà
ñ	 ð Yñ	Yð gñ		gð
 ñ	ð ñ	ð Ôð)˜d 3¨ 8™nó )ð 48Ø04ØLPØ*.Ø>BØ>BØ;?Ø<@ð"ð LPØKOò"àð"ð ð"ð   Ñ0ð	"ð
 ˜_Ñ-ð"ð ˜4  o°Ð&FÑ GÑHÑIð"ð ˜T #™YÑ'ð"ð % T¨/Ñ%:Ñ;ð"ð $ D¨¨t°S¨yÑ)9Ñ$:Ñ;ð"ð " $ Ñ"7Ñ8ð"ð Ð8Ñ9ð"ð ˜˜°°oÑ0FÐFÑGÑHð"ð ˜˜°°oÑ0FÐFÑGÑHð"ð ð"ð  
ó!"ðH *Ð"×)Ñ)ØQØRØoð BØPØ!fð KØ^ô	€Ið Ð5˜IŸN™N¨9Ó5Ð6¸À9Ç>Á>ÐR^ÓC_ÐCaÐ9bÑb€IàÐ:˜IŸN™N¨>Ó:Ð;¸iÈ	ÏÉÐWfÓHgÐHiÐ>jÑj€Ið !Ð!@ 9§>¡>°-Ó#@ÐAÐBð Cð %Ð%ð &	ð	€C„Kð  Ø Ø'+ØØ"Ø"'ñ
àð
ð ð
ð ð	
ð
   ‘}ð
ð ð
ð ð
ð  ð
ð ð
ð 
ó
ð2 4Ð,×3Ñ3ØAØQØ&ØdØoð |ô€G„Oð  Ø Ø'+ØØ"Ø"'ñ
àð
ð ð
ð ð	
ð
   ‘}ð
ð ð
ð ð
ð  ð
ð ð
ð 
ó
ð4 :Ð2×9Ñ9ØVØQØ+ØdØoð |ô€MÔð7˜.÷ 7r?   r(   c            +       ób  ‡ — e Zd ZdZddddddddd	d
ddddd	d	dddddœdededededededeeee	f      deee
ef      dedededededededed eeeej                  j                  d!f      d"ee   d#ed$ed%   d&ef*ˆ fd'„Zej                  j                  Zej%                  d(«      \  ZZZed)z   d*z   d+z   d,z   d-z   ez   e_        d.eeef   fd/„Z	 	 	 	 	 	 	 d[ddd0œd1ed2ed3ee   d4ee   d5eeeeef         d6eee      d7eee      d8eee      d9ee   d:eeeee   f      d;eeeee   f      d&ed.d fd<„Z ej@                  d=d>d?d?d@dAdAdA¬B«      ZedejC                  dC«       eejC                  dD«      d z   ZedejC                  dE«       eejC                  dF«      d z   ZedejC                  dG«       eejC                  dH«      d z   ZedejC                  dI«       › dJe"› dK�e_        	 	 	 	 	 	 d\d1edLe#dMedNee   dOe#dPe#dQe#d&ed.dRfdS„Z$ e%j@                  dTd=dUdVdWdX¬Y«      e$_        d.efdZ„Z&ˆ xZ'S )]r*   z.Distributed version of lightgbm.LGBMRegressor.r¤  r¥  r  r¦  r§  r¨  Nr©  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À  rT   rU   r�   c                ó¤   •— || _         t        ‰| �  di d|“d|“d|“d|“d|“d|“d|“d|“d	|	“d
|
“d|“d|“d|“d|“d|“d|“d|“d|“d|“|¤Ž y)z@Docstring is inherited from the lightgbm.LGBMRegressor.__init__.r®  r¯  r°  r±  r²  r³  r´  rµ  r¶  r·  r¸  r¹  rº  r»  r¼  r½  r¾  r¿  rÀ  NrH   rÃ  rÆ  s                         €r=   rÅ  zDaskLGBMRegressor.__init__p  rÈ  r?   rÉ  rÊ  rË  rÌ  rÍ  rÎ  r0   c                 ó"   — | j                  «       S rA   rÐ  r;   s    r=   rÑ  zDaskLGBMRegressor.__getstate__®  rÒ  r?   rÓ  rª   r¯   r°   r–   r˜   rŸ   r¢   r¦   rö   r±   r²   c
                óL   —  | j                   dt        |||||||
||||	dœ|¤Ž | S )z;Docstring is inherited from the lightgbm.LGBMRegressor.fit.)rˆ   rª   r¯   r°   r–   r˜   rŸ   r±   r²   r¢   r¦   rö   rH   )r•  r!   )r<   rª   r¯   r°   r–   r˜   rŸ   r¢   r¦   rö   r±   r²   r�   s                r=   r½   zDaskLGBMRegressor.fit±  sN   € ð" 	ˆ×Ñð 	
Ü'ØØØ'Ø!ØØ!ØØØ1Ø+Ø#ñ	
ð ò	
ð ˆr?   rÕ  rÖ  r×  rØ  rÙ  rÚ  rã  rä  úeval_class_weight :úeval_init_score :rå  ræ  rç  z§**kwargs
        Other parameters passed through to ``LGBMRegressor.fit()``.

    Returns
    -------
    self : lightgbm.DaskLGBMRegressor
        Returns self.

    rè  rO  ré  rê  rQ  rR  rë  r+   c                 ón   — t        d| j                  «       |t        | j                  «      ||||||dœ	|¤ŽS )z?Docstring is inherited from the lightgbm.LGBMRegressor.predict.rí  rH   rî  rð  s	            r=   rZ  zDaskLGBMRegressor.predictñ  rñ  r?   rò  ró  ú!Dask Array of shape = [n_samples]ú*Dask Array of shape = [n_samples, n_trees]ú1Dask Array of shape = [n_samples, n_features + 1]rô  c                 ó,   — | j                  t        «      S )zÃCreate regular version of lightgbm.LGBMRegressor from the distributed version.

        Returns
        -------
        model : lightgbm.LGBMRegressor
            Local underlying model.
        )r—  r!   r;   s    r=   rï  zDaskLGBMRegressor.to_local  s   € ð ×&Ñ&¤}Ó5Ð5r?   )NNNNNNNrý  )(rD   rE   rF   rO   r¡  rG   rþ  r   r   r"   r!  rr   rÿ  r   r	   rÅ  r!   r  r  r  Ú_kwargsr  r
   rÑ  rž  rŸ  r   r   r   r#   r½   r%   ro   r  r$   r  rZ  r&   rï  r  r  s   @r=   r*   r*   m  s‘  ø„ Ù8ð
 $ØØØ"ØØ!'ØOSØ37Ø #Ø"&Ø!#ØØØ"%ØØØ[_Ø $Ø&Ø15ò-0
ð ð0
ð ð	0
ð
 ð0
ð ð0
ð ð0
ð ð0
ð ˜E #Ð'JÐ"JÑKÑLð0
ð ˜u T¨3 YÑ/Ñ0ð0
ð ð0
ð  ð0
ð ð0
ð ð0
ð ð0
ð   ð!0
ð" ð#0
ð$ ð%0
ð& ˜u S¨"¯)©)×*?Ñ*?ÐAVÐ%VÑWÑXð'0
ð( ˜‘ð)0
ð* ð+0
ð, Ð-Ñ.ð-0
ð. õ/0
ðd ×&Ñ&×.Ñ.€IØ-6×-@Ñ-@ÀÓ-LÑ*€N�G˜]àØ
Jñ	Kà
ñ	 ð Yñ	Yð gñ		gð
 ñ	ð ñ	ð Ôð)˜d 3¨ 8™nó )ð 48Ø04ØLPØ*.Ø>BØ;?Ø<@ð ð LPØKOò àð ð ð ð   Ñ0ð	 ð
 ˜_Ñ-ð ð ˜4  o°Ð&FÑ GÑHÑIð ð ˜T #™YÑ'ð ð % T¨/Ñ%:Ñ;ð ð " $ Ñ"7Ñ8ð ð Ð8Ñ9ð ð ˜˜°°oÑ0FÐFÑGÑHð ð ˜˜°°oÑ0FÐFÑGÑHð ð ð ð 
ó ðD *Ð"×)Ñ)ØQØRØoØlØPØ!fØcØ^ô	€Ið Ð5˜IŸN™N¨9Ó5Ð6¸À9Ç>Á>ÐR^ÓC_ÐCaÐ9bÑb€IàÐA˜IŸN™NÐ+@ÓAÐBÀYÈyÏ~É~Ð^qÓOrÐOtÐEuÑu€IàÐ:˜IŸN™N¨>Ó:Ð;¸iÈ	ÏÉÐWfÓHgÐHiÐ>jÑj€Ið !Ð!@ 9§>¡>°-Ó#@ÐAÐBð Cð %Ð%ð &	ð	€C„Kð  Ø Ø'+ØØ"Ø"'ñ
àð
ð ð
ð ð	
ð
   ‘}ð
ð ð
ð ð
ð  ð
ð ð
ð 
ó
ð2 4Ð,×3Ñ3ØAØQØ&ØBØCØOô€G„Oð6˜-÷ 6r?   r*   c            +       ól  ‡ — e Zd ZdZddddddddd	d
ddddd	d	dddddœdededededededeeee	f      deee
ef      dedededededededed eeeej                  j                  d!f      d"ee   d#ed$ed%   d&ef*ˆ fd'„Zej                  j                  Zej%                  d(«      \  ZZZed)z   d*z   d+z   d,z   d-z   ez   e_        d.eeef   fd/„Z	 	 	 	 	 	 	 	 	 	 daddd0œd1ed2ed3ee   d4ee   d5ee   d6eeeeef         d7eee      d8eee      d9eee      d:eee      d;ee   d<eee   eed=f   f   d>eeeee   f      d?eeeee   f      d&ed.d f d@„Z ej@                  dAdBdCdCdDdEdEdE¬F«      ZedejC                  dG«       eejC                  dH«      d z   ZedejC                  dI«       dJz   dKdL›dM�z   dKdN›eejC                  dI«      d › �z   ZedejC                  dO«       › dPe"› dQ�e_        	 	 	 	 	 	 dbd1edRe#dSedTee   dUe#dVe#dWe#d&ed.dXfdY„Z$ e%j@                  dZdAd[d\d]d^¬_«      e$_        d.efd`„Z&ˆ xZ'S )cr)   z+Distributed version of lightgbm.LGBMRanker.r¤  r¥  r  r¦  r§  r¨  Nr©  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À  rT   rU   r�   c                ó¤   •— || _         t        ‰| �  di d|“d|“d|“d|“d|“d|“d|“d|“d	|	“d
|
“d|“d|“d|“d|“d|“d|“d|“d|“d|“|¤Ž y)z=Docstring is inherited from the lightgbm.LGBMRanker.__init__.r®  r¯  r°  r±  r²  r³  r´  rµ  r¶  r·  r¸  r¹  rº  r»  r¼  r½  r¾  r¿  rÀ  NrH   rÃ  rÆ  s                         €r=   rÅ  zDaskLGBMRanker.__init__!  rÈ  r?   rÉ  rÊ  rË  rÌ  rÍ  rÎ  r0   c                 ó"   — | j                  «       S rA   rÐ  r;   s    r=   rÑ  zDaskLGBMRanker.__getstate___  rÒ  r?   rÓ  rª   r¯   r°   r–   r•   r˜   rŸ   r¢   r¦   r¨   rö   r÷   .r±   r²   c                óR   —  | j                   dt        |||||||||||	|
||dœ|¤Ž | S )z8Docstring is inherited from the lightgbm.LGBMRanker.fit.)rˆ   rª   r¯   r°   r–   r•   r˜   rŸ   r±   r²   r¢   r¦   r¨   rö   r÷   rH   )r•  r    )r<   rª   r¯   r°   r–   r•   r˜   rŸ   r¢   r¦   r¨   rö   r÷   r±   r²   r�   s                   r=   r½   zDaskLGBMRanker.fitb  sW   € ð( 	ˆ×Ñð 	
Ü$ØØØ'Ø!ØØØ!ØØØ1Ø+Ø!Ø#Øñ	
ð  ò!	
ð$ ˆr?   rÕ  rÖ  r×  rØ  rÙ  rÚ  r  r  zfeature_name :zCeval_at : list or tuple of int, optional (default=(1, 2, 3, 4, 5))
ú Ú8z2The evaluation positions of the specified metric.
Ú4rç  z¡**kwargs
        Other parameters passed through to ``LGBMRanker.fit()``.

    Returns
    -------
    self : lightgbm.DaskLGBMRanker
        Returns self.

    rè  rO  ré  rê  rQ  rR  rë  r+   c                 ón   — t        d| j                  «       |t        | j                  «      ||||||dœ	|¤ŽS )z<Docstring is inherited from the lightgbm.LGBMRanker.predict.rí  rH   rî  rð  s	            r=   rZ  zDaskLGBMRanker.predict«  rñ  r?   rò  ró  r  r  r  rô  c                 ó,   — | j                  t        «      S )z½Create regular version of lightgbm.LGBMRanker from the distributed version.

        Returns
        -------
        model : lightgbm.LGBMRanker
            Local underlying model.
        )r—  r    r;   s    r=   rï  zDaskLGBMRanker.to_localÍ  s   € ð ×&Ñ&¤zÓ2Ð2r?   )
NNNNNNNNN)r   rT  é   é   é   rý  )(rD   rE   rF   rO   r¡  rG   rþ  r   r   r"   r!  rr   rÿ  r   r	   rÅ  r    r  r  r  r  r  r
   rÑ  rž  rŸ  r   r   r   r#   r½   r%   ro   r  r$   r  rZ  r&   rï  r  r  s   @r=   r)   r)     sä  ø„ Ù5ð
 $ØØØ"ØØ!'ØOSØ37Ø #Ø"&Ø!#ØØØ"%ØØØ[_Ø $Ø&Ø15ò-0
ð ð0
ð ð	0
ð
 ð0
ð ð0
ð ð0
ð ð0
ð ˜E #Ð'JÐ"JÑKÑLð0
ð ˜u T¨3 YÑ/Ñ0ð0
ð ð0
ð  ð0
ð ð0
ð ð0
ð ð0
ð   ð!0
ð" ð#0
ð$ ð%0
ð& ˜u S¨"¯)©)×*?Ñ*?ÐAVÐ%VÑWÑXð'0
ð( ˜‘ð)0
ð* ð+0
ð, Ð-Ñ.ð-0
ð. õ/0
ðd ×#Ñ#×+Ñ+€IØ-6×-@Ñ-@ÀÓ-LÑ*€N�G˜]àØ
Jñ	Kà
ñ	 ð Yñ	Yð gñ		gð
 ñ	ð ñ	ð Ôð)˜d 3¨ 8™nó )ð 48Ø04Ø+/ØLPØ*.Ø>BØ;?Ø6:Ø<@Ø5Dð&ð LPØKOò!&àð&ð ð&ð   Ñ0ð	&ð
 ˜_Ñ-ð&ð ˜Ñ(ð&ð ˜4  o°Ð&FÑ GÑHÑIð&ð ˜T #™YÑ'ð&ð % T¨/Ñ%:Ñ;ð&ð " $ Ñ"7Ñ8ð&ð ˜T /Ñ2Ñ3ð&ð Ð8Ñ9ð&ð �t˜C‘y %¨¨S¨¡/Ð1Ñ2ð&ð ˜˜°°oÑ0FÐFÑGÑHð&ð  ˜˜°°oÑ0FÐFÑGÑHð!&ð" ð#&ð$ 
ó%&ðP *Ð"×)Ñ)ØQØRØoØlØPØ!fØcØ^ô	€Ið ÐA˜IŸN™NÐ+@ÓAÐBÀYÈyÏ~É~Ð^qÓOrÐOtÐEuÑu€Ið 	Ð4�I—N‘NÐ#3Ó4Ð5Ø
Pñ	Qà�ˆGÐFÐ
Gñ	Hð �ˆG�I˜iŸn™nÐ-=Ó>Ð@ÐAÐBÐ
Cñ	Dð ð !Ð!@ 9§>¡>°-Ó#@ÐAÐBð Cð %Ð%ð &	ð	€C„Kð  Ø Ø'+ØØ"Ø"'ñ
àð
ð ð
ð ð	
ð
   ‘}ð
ð ð
ð ð
ð  ð
ð ð
ð 
ó
ð2 4Ð,×3Ñ3ØAØQØ&ØBØCØOô€G„Oð3˜*÷ 3r?   r)   )WrO   r`   r3   Úcollectionsr   Úcopyr   Úenumr   r   Ú	functoolsr   Útypingr   r	   r
   r   r   r   r   r   r   Úurllib.parser   Únumpyrr   Úscipy.sparseÚsparseru   Úbasicr   r   r   r   r   Úcompatr   r   r   r   r   r   Úsklearnr   r   r    r!   r"   r#   r$   r%   r&   r'   Ú__all__r  ÚdistributedrŸ  rž  r   rs   rv   Ú	_DaskPartÚImportErrorrë   r  r/   rG   rL   rN   rY   r¡  ri   rz   r   r†   r  rÚ   rã   rô   r!  rN  r]  r†  rˆ  r(   r*   r)   rH   r?   r=   ú<module>r0     sS  ðñó Û Ý #Ý ß Ý ß Y× YÕ YÝ !ã Ý ç ^Õ ^÷÷ ÷÷ ÷ ò€ñ ÛÛàÐ_Ñ`€ØÐFÑG€ØÐCÑD€Ø�"—*‘*˜l¨I°r·{±{ÐBÑC€	ð % jÐ1Ð ÷ñ ð�u˜]¨CÐ/Ñ0ó ô	�Dô 	ð˜XÐ&:Ñ;ð Ð@Tó ð*"3à ð"3ð �#‰Yð"3ð ˆ4�Ð0Ð0Ñ1°4¸¸S¸±>ÐAÑBó	"3ðJ

��i‘ð 

 Yó 

ð? ð ?¨¨T°#©Y©ó ?ðàðð ˜‘Iðð ó	ð$|+à��c�‰Nð|+ð ˜	‘?ð|+ð ˜˜S )˜^Ñ,Ñ-ð	|+ð
 ð|+ð ð|+ð ð|+ð ð|+ð ð|+ð !ð|+ð ð|+ð ˆiÑó|+ð~˜_ð ¸ð À$ÀyÁ/ó ð)àð)ð ˜s‘mð)ð 
ˆ#ˆsˆ(�^ó	)ðf 04Ø,0Ø'+ØHLØ&*ØGKØGKØ:>Ø:>Ø7;Ø26Ø8<Ø;?ò'pà ðpð ðpð ð	pð
 ��c�‰Nðpð ˜	‘?ðpð ˜OÑ,ðpð ˜Ñ)ðpð �OÑ$ðpð �t˜E /°?Ð"BÑCÑDÑEðpð ˜˜c™Ñ#ðpð �U˜?¨E°/Ñ,BÐBÑCÑDðpð �U˜?¨E°/Ñ,BÐBÑCÑDðpð !  oÑ!6Ñ7ðpð    U¨4°¨9Ñ%5Ñ 6Ñ7ðpð  ˜d ?Ñ3Ñ4ð!pð" ˜˜oÑ.Ñ/ð#pð$ Ð4Ñ5ð%pð& �e˜D ™I u¨S°#¨X¡Ð6Ñ7Ñ8ð'pð( ð)pð* ó+pðf.Ø
ð.ð ð.ð ð	.ð
 ð.ð ð.ð ð.ð ð.ð ó.ðl ØØØòWiàðWið ðWið !ð	Wið
 ðWið ðWið ðWið ðWið ðWið Ð˜tÐ$6Ñ7Ð7Ñ8óWi÷t^2ñ ^2ôBQ7˜¨ô Q7ôhn6˜ ~ô n6ôbw3�Z õ w3r?   