Commit cdef5a65 authored by Nikita Titov's avatar Nikita Titov Committed by Guolin Ke
Browse files

[python] disabled early stopping in dart mode (#1895)

* disabled early stopping in dart mode

* check dart mode during the init phase of early_stop callback
parent 3f1fc835
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
from __future__ import absolute_import from __future__ import absolute_import
import collections import collections
import warnings
from operator import gt, lt from operator import gt, lt
from .compat import range_ from .compat import range_
...@@ -177,8 +178,16 @@ def early_stopping(stopping_rounds, verbose=True): ...@@ -177,8 +178,16 @@ def early_stopping(stopping_rounds, verbose=True):
best_iter = [] best_iter = []
best_score_list = [] best_score_list = []
cmp_op = [] cmp_op = []
enabled = [True]
def _init(env): def _init(env):
enabled[0] = not any((boost_alias in env.params
and env.params[boost_alias] == 'dart') for boost_alias in ('boosting',
'boosting_type',
'boost'))
if not enabled[0]:
warnings.warn('Early stopping is not available in dart mode')
return
if not env.evaluation_result_list: if not env.evaluation_result_list:
raise ValueError('For early stopping, ' raise ValueError('For early stopping, '
'at least one dataset and eval metric is required for evaluation') 'at least one dataset and eval metric is required for evaluation')
...@@ -200,6 +209,8 @@ def early_stopping(stopping_rounds, verbose=True): ...@@ -200,6 +209,8 @@ def early_stopping(stopping_rounds, verbose=True):
def _callback(env): def _callback(env):
if not cmp_op: if not cmp_op:
_init(env) _init(env)
if not enabled[0]:
return
for i in range_(len(env.evaluation_result_list)): for i in range_(len(env.evaluation_result_list)):
score = env.evaluation_result_list[i][2] score = env.evaluation_result_list[i][2]
if cmp_op[i](score, best_score[i]): if cmp_op[i](score, best_score[i]):
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment