Skip to content

Commit 57710fc

Browse files
committed
Add small docstrings to setters / properties
1 parent 3022f61 commit 57710fc

1 file changed

Lines changed: 66 additions & 7 deletions

File tree

dataikuapi/dss/ml.py

Lines changed: 66 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -387,10 +387,17 @@ def _set_seed(self, seed):
387387

388388
@property
389389
def strategy(self):
390+
"""
391+
:return: strategy: "GRID" | "RANDOM" | "BAYESIAN"
392+
:rtype str
393+
"""
390394
return self._raw_settings["strategy"]
391395

392396
@strategy.setter
393397
def strategy(self, strategy):
398+
"""
399+
:param str strategy: "GRID" | "RANDOM" | "BAYESIAN"
400+
"""
394401
assert strategy in {"GRID", "RANDOM", "BAYESIAN"}
395402
self._raw_settings["strategy"] = strategy
396403

@@ -400,6 +407,7 @@ def set_grid_search(self, shuffle=True, seed=0):
400407
:param bool shuffle: if True, the search will iterate over a shuffled grid as opposed to the lexicographical
401408
iteration over the cartesian product of the hyperparameters.
402409
:param int seed:
410+
:return current HyperparameterSearchSettings
403411
"""
404412
self._raw_settings["strategy"] = "GRID"
405413
if shuffle is not None:
@@ -415,6 +423,7 @@ def set_random_search(self, seed=0):
415423
"""
416424
Sets the search strategy to "RANDOM" to perform a random search on the hyperparameters.
417425
:param int seed:
426+
:return current HyperparameterSearchSettings
418427
"""
419428
self._raw_settings["strategy"] = "RANDOM"
420429
self._set_seed(seed)
@@ -424,13 +433,18 @@ def set_bayesian_search(self, seed=0):
424433
"""
425434
Sets the search strategy to "BAYESIAN" to perform a Bayesian search on the hyperparameters.
426435
:param int seed:
436+
:return current HyperparameterSearchSettings
427437
"""
428438
self._raw_settings["strategy"] = "BAYESIAN"
429439
self._set_seed(seed)
430440
return self
431441

432442
@property
433443
def validation_mode(self):
444+
"""
445+
:return mode: "KFOLD" | "SHUFFLE" | "TIME_SERIES_KFOLD" | "TIME_SERIES_SINGLE_SPLIT" | "CUSTOM"
446+
:rtype str
447+
"""
434448
return self._raw_settings["mode"]
435449

436450
@validation_mode.setter
@@ -447,7 +461,7 @@ def set_kfold_validation(self, n_folds=5, stratified=True):
447461
is enabled).
448462
:param int n_folds: the number of folds used for the hyperparameter search
449463
:param bool stratified: if True, will keep the same proportion of each target classes in all folds
450-
:return:
464+
:return current HyperparameterSearchSettings
451465
"""
452466
if self._raw_settings["mode"] == "TIME_SERIES_SINGLE_SPLIT":
453467
self._raw_settings["mode"] = "TIME_SERIES_KFOLD"
@@ -472,7 +486,7 @@ def set_single_split_validation(self, split_ratio=0.8, stratified=True):
472486
is enabled).
473487
:param float split_ratio: ratio of the data used for the train during hyperparameter search
474488
:param bool stratified: if True, will keep the same proportion of each target classes in both splits
475-
:return:
489+
:return current HyperparameterSearchSettings
476490
"""
477491
if self._raw_settings["mode"] == "TIME_SERIES_KFOLD":
478492
self._raw_settings["mode"] = "TIME_SERIES_SINGLE_SPLIT"
@@ -495,6 +509,7 @@ def set_custom_validation(self, code=None):
495509
"""
496510
Sets the validation mode to "CUSTOM".
497511
:param str code: definition of the validation
512+
:return current HyperparameterSearchSettings
498513
"""
499514
self._raw_settings["mode"] = "CUSTOM"
500515
if code is not None:
@@ -510,13 +525,14 @@ def set_search_distribution(self, distributed=False, n_containers=4):
510525
:param bool distributed: if True, search will be distributed across n_containers containers in the Kubernetes
511526
cluster selected in containerized execution configuration of the runtime environment
512527
:param int n_containers:
513-
:return:
528+
:return current HyperparameterSearchSettings
514529
"""
515530
assert isinstance(distributed, bool)
516531
if n_containers is not None:
517532
assert isinstance(n_containers, int)
518533
self._raw_settings["nContainers"] = n_containers
519534
self._raw_settings["distributed"] = distributed
535+
return self
520536

521537
@property
522538
def distributed(self):
@@ -602,6 +618,12 @@ def _get_active_settings_dict(self):
602618

603619
@property
604620
def definition_mode(self):
621+
"""
622+
"EXPLICIT" means that the hyperparameter search is performed over a given set of values (default for grid search)
623+
"RANGE" means that the hyperparameter search is performed over a range of values (default for random and Bayesian
624+
searches)
625+
:return: str mode: "EXPLICIT" | "RANGE"
626+
"""
605627
if self._algo_settings.strategy == "GRID":
606628
return self._algo_settings[self.name]["gridMode"]
607629
else:
@@ -611,9 +633,6 @@ def definition_mode(self):
611633
@definition_mode.setter
612634
def definition_mode(self, mode):
613635
"""
614-
"EXPLICIT" means that the hyperparameter search is performed over a given set of values (default for grid search)
615-
"RANGE" means that the hyperparameter search is performed over a range of values (default for random and Bayesian
616-
searches)
617636
:param str mode: "EXPLICIT" | "RANGE"
618637
"""
619638
assert mode in ["EXPLICIT", "RANGE"], "Hyperparameter definition mode must be either \"EXPLICIT\" or \"RANGE\""
@@ -629,12 +648,18 @@ def set_explicit_values(self, values):
629648
- the explicit values to search over for the current numerical hyperparameter
630649
- the definition mode of the current numerical hyperparameter to "EXPLICIT"
631650
:param list values: the explicit list of numerical values that will be searched for this hyperparameter
651+
:return current NumericalHyperparameterSettings
632652
"""
633-
self.values(values)
653+
self.values = values
634654
self.definition_mode = "EXPLICIT"
655+
return self
635656

636657
@property
637658
def values(self):
659+
"""
660+
:return: the explicit list of numerical values that will be searched for this hyperparameter
661+
:rtype: list
662+
"""
638663
return self._algo_settings[self.name]["values"]
639664

640665
@values.setter
@@ -695,9 +720,11 @@ def set_range(self, min=None, max=None, nb_values=None):
695720
:param min: the lower bound of the Range that will be searched for this hyperparameter
696721
:param max: the upper bound of the Range that will be searched for this hyperparameter
697722
:param nb_values: for grid-search ("GRID" strategy) only, the number of values between min and max to consider
723+
:return current NumericalHyperparameterSettings
698724
"""
699725
self._set_range(min=min, max=max, nb_values=nb_values)
700726
self.definition_mode = "RANGE"
727+
return self
701728

702729
@property
703730
def range(self):
@@ -710,8 +737,14 @@ def __init__(self, numerical_hyperparameter_settings):
710737
self._numerical_hyperparameter_settings = numerical_hyperparameter_settings
711738
self._range_dict = self._numerical_hyperparameter_settings._algo_settings[numerical_hyperparameter_settings.name]["range"]
712739

740+
def __repr__(self):
741+
return "Range(min={}, max={}, nb_values={})".format(self.min, self.max, self.nb_values)
742+
713743
@property
714744
def min(self):
745+
"""
746+
:rtype: float | int
747+
"""
715748
return self._range_dict["min"]
716749

717750
@min.setter
@@ -723,6 +756,9 @@ def min(self, val):
723756

724757
@property
725758
def max(self):
759+
"""
760+
:rtype: float | int
761+
"""
726762
return self._range_dict["max"]
727763

728764
@max.setter
@@ -734,6 +770,9 @@ def max(self, val):
734770

735771
@property
736772
def nb_values(self):
773+
"""
774+
:rtype: int
775+
"""
737776
return self._range_dict["nbValues"]
738777

739778
@nb_values.setter
@@ -777,6 +816,7 @@ def enable_categories(self, categories, disable_others=False):
777816
Enables the search over categories listed in the first argument.
778817
:param list categories: will enable the search over the provided categories
779818
:param bool disable_others: if True, will also disable the search over categories not listed in the first argument
819+
:return current CategoricalHyperparameterSettings
780820
"""
781821
accepted_categories = self.get_all_categories()
782822
for category in categories:
@@ -788,12 +828,14 @@ def enable_categories(self, categories, disable_others=False):
788828
self._set_values({category: {"enabled": False}
789829
for category in accepted_categories
790830
if category not in categories})
831+
return self
791832

792833
def disable_categories(self, categories, enable_others=False):
793834
"""
794835
Disables the search over categories listed in the first argument.
795836
:param list categories: will disable the search over the provided categories
796837
:param bool enable_others: if True, will also enable the search over categories not listed in the first argument
838+
:return current CategoricalHyperparameterSettings
797839
"""
798840
accepted_categories = self.get_all_categories()
799841
for category in categories:
@@ -805,6 +847,7 @@ def disable_categories(self, categories, enable_others=False):
805847
self._set_values({category: {"enabled": True}
806848
for category in accepted_categories
807849
if category not in categories})
850+
return self
808851

809852
def get_all_categories(self):
810853
"""
@@ -828,9 +871,14 @@ def __repr__(self):
828871
_pretty_repr = __repr__
829872

830873
def set_value(self, value):
874+
"""
875+
:param bool | int | float value:
876+
:return: current SingleValueHyperparameterSettings
877+
"""
831878
if self.accepted_types is not None:
832879
assert any(isinstance(value, accepted_type) for accepted_type in self.accepted_types), "Invalid type for hyperparameter {}. Type must be one of: {}".format(self.name, self.accepted_types)
833880
self._algo_settings[self.name] = value
881+
return self
834882

835883

836884
class SingleCategoryHyperparameterSettings(HyperparameterSettings):
@@ -852,9 +900,14 @@ def __repr__(self):
852900
_pretty_repr = __repr__
853901

854902
def set_value(self, value):
903+
"""
904+
:param str value:
905+
:return: current SingleValueHyperparameterSettings
906+
"""
855907
if self.accepted_values is not None:
856908
assert value in self.accepted_values, "Invalid value for hyperparameter {}. Must be in {}".format(self.name, json.dumps(self.accepted_values))
857909
self._algo_settings[self.name] = value
910+
return self
858911

859912

860913
class PredictionAlgorithmSettings(dict):
@@ -902,10 +955,16 @@ def _get_all_hyperparameter_names(self):
902955

903956
@property
904957
def enabled(self):
958+
"""
959+
:rtype: bool
960+
"""
905961
return self["enabled"]
906962

907963
@enabled.setter
908964
def enabled(self, enabled):
965+
"""
966+
:param bool enabled:
967+
"""
909968
assert isinstance(enabled, bool), "enabled property must be a boolean"
910969
self["enabled"] = enabled
911970

0 commit comments

Comments
 (0)