Skip to content

Commit 8680db2

Browse files
committed
adding n_jobs param and fixes
1 parent fc2e4f5 commit 8680db2

File tree

4 files changed

+14
-14
lines changed

4 files changed

+14
-14
lines changed

fedot/core/data/data.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,7 @@ def get_not_encoded_data(self):
532532
else:
533533
cat_features_names = np.array([f'cat_feature_{i}' for i in range(1, cat_features.shape[1] + 1)])
534534

535-
if num_features and cat_features:
535+
if num_features is not None and cat_features is not None:
536536
new_features = np.hstack((num_features, cat_features))
537537
new_features_names = np.hstack((num_features_names, cat_features_names))
538538
new_features_idx = np.array(range(new_features.shape[1]))

fedot/core/operations/evaluation/operation_implementations/models/boostings_implementations.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,13 @@
1313

1414

1515
class FedotCatBoostImplementation(ModelImplementation):
16-
__operation_params = ['use_eval_set']
16+
__operation_params = ['use_eval_set', 'n_jobs']
1717

1818
def __init__(self, params: Optional[OperationParameters] = None):
1919
super().__init__(params)
2020

21-
self.params.update(**self.params.to_dict())
22-
2321
# TODO: Adding checking params compatibility with each other
24-
# self.check_params(self.params.to_dict())
22+
self.params.update(**self.check_and_update_params(self.params.to_dict()))
2523

2624
self.model_params = {k: v for k, v in self.params.to_dict().items() if k not in self.__operation_params}
2725
self.model = None
@@ -30,15 +28,13 @@ def fit(self, input_data: InputData):
3028
input_data = input_data.get_not_encoded_data()
3129

3230
if self.params.get('use_eval_set'):
31+
# TODO: Using this method for tuning
3332
train_input, eval_input = train_test_data_setup(input_data)
3433

3534
train_input = self.convert_to_pool(train_input)
3635
eval_input = self.convert_to_pool(eval_input)
3736

38-
self.model.fit(
39-
X=train_input,
40-
eval_set=eval_input,
41-
)
37+
self.model.fit(X=train_input, eval_set=eval_input)
4238

4339
else:
4440
train_input = self.convert_to_pool(input_data)
@@ -53,7 +49,9 @@ def predict(self, input_data: InputData):
5349
return prediction
5450

5551
@staticmethod
56-
def check_params(params):
52+
def check_and_update_params(params):
53+
params['thread_count'] = params['n_jobs']
54+
5755
if params['use_best_model'] or params['early_stopping_rounds'] and not params['use_eval_set']:
5856
params['use_best_model'] = False
5957
params['early_stopping_rounds'] = False

fedot/core/repository/data/default_operation_params.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,17 @@
1515
"iterations": 1000,
1616
"use_eval_set": false,
1717
"use_best_model": false,
18-
"early_stopping_rounds": 100
18+
"early_stopping_rounds": null,
19+
"n_jobs": 1
1920
},
2021
"catboostreg": {
2122
"allow_writing_files": false,
2223
"verbose": false,
2324
"iterations": 1000,
2425
"use_eval_set": false,
2526
"use_best_model": false,
26-
"early_stopping_rounds": 100
27+
"early_stopping_rounds": null,
28+
"n_jobs": 1
2729
},
2830
"lgbm": {
2931
"num_leaves": 32,

test/integration/models/test_strategy.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ def test_boosting_classification_operation():
4747
)
4848

4949
for model_name in model_names:
50-
pipeline = PipelineBuilder().add_node(model_name).build()
51-
pipeline.fit(train_data, n_jobs=-1)
50+
pipeline = PipelineBuilder().add_node(model_name, params={'n_jobs': -1}).build()
51+
pipeline.fit(train_data)
5252
predicted_output = pipeline.predict(test_data, output_mode='labels')
5353
metric = roc_auc(test_data.target, predicted_output.predict)
5454

0 commit comments

Comments
 (0)