"tests/data/custom_dataset/images/000001.xml" did not exist on "fdfe3c4f8ba935ae428a8a496ce57755d5b2ea98"
Unverified Commit bd3889f7 authored by Nikita Titov's avatar Nikita Titov Committed by GitHub
Browse files

[python] pass params to _InnerPredictor in train and cv and verbose fix (#1628)

* pass params to _InnerPredictor in train and cv

* fixed verbosity param description

* treat silent param as Fatal log level

* create Dataset in refit method silently

* do not overwrite verbose param by silent argument
parent 5442aa97
......@@ -377,7 +377,7 @@ IO Parameters
- controls the level of LightGBM's verbosity
- ``< 0``: Fatal, ``= 0``: Error (Warn), ``> 0``: Info
- ``< 0``: Fatal, ``= 0``: Error (Warning), ``= 1``: Info, ``> 1``: Debug
- ``max_bin`` :raw-html:`<a id="max_bin" title="Permalink to this parameter" href="#max_bin">&#x1F517;&#xFE0E;</a>`, default = ``255``, type = int, constraints: ``max_bin > 1``
......
......@@ -380,7 +380,7 @@ public:
// alias = verbose
// desc = controls the level of LightGBM's verbosity
// desc = ``< 0``: Fatal, ``= 0``: Error (Warn), ``> 0``: Info
// desc = ``< 0``: Fatal, ``= 0``: Error (Warning), ``= 1``: Info, ``> 1``: Debug
int verbosity = 1;
// check = >1
......
......@@ -701,8 +701,9 @@ class Dataset(object):
warnings.warn('{0} keyword has been found in `params` and will be ignored. '
'Please use {0} argument of the Dataset constructor to pass this parameter.'.format(key))
self.predictor = predictor
if silent:
params["verbose"] = 0
# user can set verbose with params, it has higher priority
if not any(verbose_alias in params for verbose_alias in ('verbose', 'verbosity')) and silent:
params["verbose"] = -1
# get categorical features
if categorical_feature is not None:
categorical_indices = set()
......@@ -1431,8 +1432,9 @@ class Booster(object):
self.best_iteration = -1
self.best_score = {}
params = {} if params is None else params
if silent:
params["verbose"] = 0
# user can set verbose with params, it has higher priority
if not any(verbose_alias in params for verbose_alias in ('verbose', 'verbosity')) and silent:
params["verbose"] = -1
if train_set is not None:
# Training task
if not isinstance(train_set, Dataset):
......@@ -2118,7 +2120,7 @@ class Booster(object):
predictor = self._to_predictor()
leaf_preds = predictor.predict(data, -1, pred_leaf=True, **kwargs)
nrow, ncol = leaf_preds.shape
train_set = Dataset(data, label)
train_set = Dataset(data, label, silent=True)
new_booster = Booster(self.params, train_set, silent=True)
# Copy models
_safe_call(_LIB.LGBM_BoosterMerge(
......
......@@ -118,9 +118,9 @@ def train(params, train_set, num_boost_round=100,
if num_boost_round <= 0:
raise ValueError("num_boost_round should be greater than zero.")
if isinstance(init_model, string_type):
predictor = _InnerPredictor(model_file=init_model)
predictor = _InnerPredictor(model_file=init_model, pred_parameter=params)
elif isinstance(init_model, Booster):
predictor = init_model._to_predictor()
predictor = init_model._to_predictor(dict(init_model.params, **params))
else:
predictor = None
init_iteration = predictor.num_total_iteration if predictor is not None else 0
......@@ -415,9 +415,9 @@ def cv(params, train_set, num_boost_round=100,
if num_boost_round <= 0:
raise ValueError("num_boost_round should be greater than zero.")
if isinstance(init_model, string_type):
predictor = _InnerPredictor(model_file=init_model)
predictor = _InnerPredictor(model_file=init_model, pred_parameter=params)
elif isinstance(init_model, Booster):
predictor = init_model._to_predictor()
predictor = init_model._to_predictor(dict(init_model.params, **params))
else:
predictor = None
train_set._update_params(params)._set_predictor(predictor).set_feature_name(feature_name).set_categorical_feature(categorical_feature)
......
......@@ -402,7 +402,7 @@ class LGBMModel(_LGBMModelBase):
params = self.get_params()
# user can set verbose with kwargs, it has higher priority
if not any(verbose_alias in params for verbose_alias in ('verbose', 'verbosity')) and self.silent:
params['verbose'] = 0
params['verbose'] = -1
params.pop('silent', None)
params.pop('importance_type', None)
params.pop('n_estimators', None)
......
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