watex.utils.smart_label_classifier#
- watex.utils.smart_label_classifier(arr, /, values=None, labels=None, order='soft', func=None, raise_warn=True)[source]#
map smartly the numeric array into a class labels from a map function or a given fixed values.
New classes created from the fixed values can be renamed if labels are supplied.
- Parameters
arr (Arraylike 1d,) – array-like whose items are expected to be categorized.
values (float, list of float,) – The threshold item values from which the default categorization must be fixed.
labels (int |str| or List of [str, int],) – The labels values that might be correspond to the fixed values. Note that the number of fixed_labels might be consistent with the fixed values plus one, otherwise a ValueError shall raise if order is set to
strict.order (str, ['soft'|'strict'], default='soft',) – If order is
strict, the argument passed to values must be self contain as item in the arr, and raise warning otherwise.func (callable, optional) – Function to map the given array. If given, values dont need to be supply.
raise_warn (bool, default='True') – Raise warning message if order=soft and the fixed values are not found in the arr. Also raise warnings, if labels arguments does not match the number of class from fixed values.
- Returns
arr – categorized array with the same length as the raw
- Return type
array-like 1d
Examples
>>> import numpy as np >>> from watex.utils.funcutils import smart_label_classifier >>> sc = np.arange (0, 7, .5 ) >>> smart_label_classifier (sc, values = [1, 3.2 ]) array([0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2], dtype=int64) >>> # rename labels <=1 : 'l1', ]1; 3.2]: 'l2' and >3.2 :'l3' >>> smart_label_classifier (sc, values = [1, 3.2 ], labels =['l1', 'l2', 'l3']) >>> array(['l1', 'l1', 'l1', 'l2', 'l2', 'l2', 'l2', 'l3', 'l3', 'l3', 'l3', 'l3', 'l3', 'l3'], dtype=object) >>> def f (v): if v <=1: return 'l1' elif 1< v<=3.2: return "l2" else : return "l3" >>> smart_label_classifier (sc, func= f ) array(['l1', 'l1', 'l1', 'l2', 'l2', 'l2', 'l2', 'l3', 'l3', 'l3', 'l3', 'l3', 'l3', 'l3'], dtype=object) >>> smart_label_classifier (sc, values = 1.) array([0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=int64) >>> smart_label_classifier (sc, values = 1., labels='l1') array(['l1', 'l1', 'l1', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=object)