49
49
_lgbmmodel_doc_custom_eval_note ,
50
50
_lgbmmodel_doc_fit ,
51
51
_lgbmmodel_doc_predict ,
52
+ _validate_eval_set_Xy ,
52
53
)
53
54
54
55
__all__ = [
@@ -318,6 +319,13 @@ def _train_part(
318
319
if eval_class_weight :
319
320
kwargs ["eval_class_weight" ] = [eval_class_weight [i ] for i in eval_component_idx ]
320
321
322
+ if local_eval_set is None :
323
+ local_eval_X = None
324
+ local_eval_y = None
325
+ else :
326
+ local_eval_X = (X for X , y in local_eval_set ),
327
+ local_eval_y = (y for X , y in local_eval_set ),
328
+
321
329
model = model_factory (** params )
322
330
if remote_socket is not None :
323
331
remote_socket .release ()
@@ -329,7 +337,8 @@ def _train_part(
329
337
sample_weight = weight ,
330
338
init_score = init_score ,
331
339
group = group ,
332
- eval_set = local_eval_set ,
340
+ eval_X = local_eval_X ,
341
+ eval_y = local_eval_y ,
333
342
eval_sample_weight = local_eval_sample_weight ,
334
343
eval_init_score = local_eval_init_score ,
335
344
eval_group = local_eval_group ,
@@ -342,7 +351,8 @@ def _train_part(
342
351
label ,
343
352
sample_weight = weight ,
344
353
init_score = init_score ,
345
- eval_set = local_eval_set ,
354
+ eval_X = local_eval_X ,
355
+ eval_y = local_eval_y ,
346
356
eval_sample_weight = local_eval_sample_weight ,
347
357
eval_init_score = local_eval_init_score ,
348
358
eval_names = local_eval_names ,
@@ -422,6 +432,8 @@ def _train(
422
432
group : Optional [_DaskVectorLike ] = None ,
423
433
eval_set : Optional [List [Tuple [_DaskMatrixLike , _DaskCollection ]]] = None ,
424
434
eval_names : Optional [List [str ]] = None ,
435
+ eval_X : Optional [Union [_DaskMatrixLike , Tuple [_DaskMatrixLike ]]] = None ,
436
+ eval_y : Optional [Union [_DaskCollection , Tuple [_DaskCollection ]]] = None ,
425
437
eval_sample_weight : Optional [List [_DaskVectorLike ]] = None ,
426
438
eval_class_weight : Optional [List [Union [dict , str ]]] = None ,
427
439
eval_init_score : Optional [List [_DaskCollection ]] = None ,
@@ -461,6 +473,10 @@ def _train(
461
473
of ``evals_result_`` and ``best_score_`` will be empty dictionaries.
462
474
eval_names : list of str, or None, optional (default=None)
463
475
Names of eval_set.
476
+ eval_X : Dask Array or Dask DataFrame, tuple thereof or None, optional (default=None)
477
+ Feature matrix or tuple thereof, e.g. `(X_val0, X_val1)`, to use as validation sets.
478
+ eval_y : Dask Array or Dask DataFrame, tuple thereof or None, optional (default=None)
479
+ Target values or tuple thereof, i.g. `(y_val0, y_val1)`, to use as validation sets.
464
480
eval_sample_weight : list of Dask Array or Dask Series, or None, optional (default=None)
465
481
Weights for each validation set in eval_set. Weights should be non-negative.
466
482
eval_class_weight : list of dict or str, or None, optional (default=None)
@@ -570,6 +586,7 @@ def _train(
570
586
for i in range (n_parts ):
571
587
parts [i ]["init_score" ] = init_score_parts [i ]
572
588
589
+ eval_set = _validate_eval_set_Xy (eval_set = eval_set , eval_X = eval_X , eval_y = eval_y )
573
590
# evals_set will to be re-constructed into smaller lists of (X, y) tuples, where
574
591
# X and y are each delayed sub-lists of original eval dask Collections.
575
592
if eval_set :
@@ -1049,6 +1066,8 @@ def _lgb_dask_fit(
1049
1066
group : Optional [_DaskVectorLike ] = None ,
1050
1067
eval_set : Optional [List [Tuple [_DaskMatrixLike , _DaskCollection ]]] = None ,
1051
1068
eval_names : Optional [List [str ]] = None ,
1069
+ eval_X : Optional [Union [_DaskMatrixLike , Tuple [_DaskMatrixLike ]]] = None ,
1070
+ eval_y : Optional [Union [_DaskCollection , Tuple [_DaskCollection ]]] = None ,
1052
1071
eval_sample_weight : Optional [List [_DaskVectorLike ]] = None ,
1053
1072
eval_class_weight : Optional [List [Union [dict , str ]]] = None ,
1054
1073
eval_init_score : Optional [List [_DaskCollection ]] = None ,
@@ -1076,6 +1095,8 @@ def _lgb_dask_fit(
1076
1095
group = group ,
1077
1096
eval_set = eval_set ,
1078
1097
eval_names = eval_names ,
1098
+ eval_X = eval_X ,
1099
+ eval_y = eval_y ,
1079
1100
eval_sample_weight = eval_sample_weight ,
1080
1101
eval_class_weight = eval_class_weight ,
1081
1102
eval_init_score = eval_init_score ,
@@ -1182,6 +1203,8 @@ def fit( # type: ignore[override]
1182
1203
init_score : Optional [_DaskCollection ] = None ,
1183
1204
eval_set : Optional [List [Tuple [_DaskMatrixLike , _DaskCollection ]]] = None ,
1184
1205
eval_names : Optional [List [str ]] = None ,
1206
+ eval_X : Optional [Union [_DaskMatrixLike , Tuple [_DaskMatrixLike ]]] = None ,
1207
+ eval_y : Optional [Union [_DaskCollection , Tuple [_DaskCollection ]]] = None ,
1185
1208
eval_sample_weight : Optional [List [_DaskVectorLike ]] = None ,
1186
1209
eval_class_weight : Optional [List [Union [dict , str ]]] = None ,
1187
1210
eval_init_score : Optional [List [_DaskCollection ]] = None ,
@@ -1197,6 +1220,8 @@ def fit( # type: ignore[override]
1197
1220
init_score = init_score ,
1198
1221
eval_set = eval_set ,
1199
1222
eval_names = eval_names ,
1223
+ eval_X = eval_X ,
1224
+ eval_y = eval_y ,
1200
1225
eval_sample_weight = eval_sample_weight ,
1201
1226
eval_class_weight = eval_class_weight ,
1202
1227
eval_init_score = eval_init_score ,
@@ -1386,6 +1411,8 @@ def fit( # type: ignore[override]
1386
1411
init_score : Optional [_DaskVectorLike ] = None ,
1387
1412
eval_set : Optional [List [Tuple [_DaskMatrixLike , _DaskCollection ]]] = None ,
1388
1413
eval_names : Optional [List [str ]] = None ,
1414
+ eval_X : Optional [Union [_DaskMatrixLike , Tuple [_DaskMatrixLike ]]] = None ,
1415
+ eval_y : Optional [Union [_DaskCollection , Tuple [_DaskCollection ]]] = None ,
1389
1416
eval_sample_weight : Optional [List [_DaskVectorLike ]] = None ,
1390
1417
eval_init_score : Optional [List [_DaskVectorLike ]] = None ,
1391
1418
eval_metric : Optional [_LGBM_ScikitEvalMetricType ] = None ,
@@ -1400,6 +1427,8 @@ def fit( # type: ignore[override]
1400
1427
init_score = init_score ,
1401
1428
eval_set = eval_set ,
1402
1429
eval_names = eval_names ,
1430
+ eval_X = eval_X ,
1431
+ eval_y = eval_y ,
1403
1432
eval_sample_weight = eval_sample_weight ,
1404
1433
eval_init_score = eval_init_score ,
1405
1434
eval_metric = eval_metric ,
@@ -1555,6 +1584,8 @@ def fit( # type: ignore[override]
1555
1584
group : Optional [_DaskVectorLike ] = None ,
1556
1585
eval_set : Optional [List [Tuple [_DaskMatrixLike , _DaskCollection ]]] = None ,
1557
1586
eval_names : Optional [List [str ]] = None ,
1587
+ eval_X : Optional [Union [_DaskMatrixLike , Tuple [_DaskMatrixLike ]]] = None ,
1588
+ eval_y : Optional [Union [_DaskCollection , Tuple [_DaskCollection ]]] = None ,
1558
1589
eval_sample_weight : Optional [List [_DaskVectorLike ]] = None ,
1559
1590
eval_init_score : Optional [List [_DaskVectorLike ]] = None ,
1560
1591
eval_group : Optional [List [_DaskVectorLike ]] = None ,
@@ -1572,6 +1603,8 @@ def fit( # type: ignore[override]
1572
1603
group = group ,
1573
1604
eval_set = eval_set ,
1574
1605
eval_names = eval_names ,
1606
+ eval_X = eval_X ,
1607
+ eval_y = eval_y ,
1575
1608
eval_sample_weight = eval_sample_weight ,
1576
1609
eval_init_score = eval_init_score ,
1577
1610
eval_group = eval_group ,
0 commit comments