torch_ecg.utils.class_weight_to_sample_weight¶
- torch_ecg.utils.class_weight_to_sample_weight(y: ndarray, class_weight: str | dict | List[float] | ndarray = 'balanced') ndarray [source]¶
Transform class weight to sample weight.
- Parameters:
y (numpy.ndarray) – The label (class) of each sample.
class_weight (str or dict or List[float] or numpy.ndarray, default "balanced") – The weight for each sample class. If is “balanced”, the class weight will automatically be given by the inverse of the class frequency. If y is of string dtype, then class_weight should be a
dict
. if y is of numeric dtype, and class_weight is array_like, then the labels (y) should be continuous and start from 0.
- Returns:
sample_weight – The array of sample weight.
- Return type:
Examples
>>> y = np.array([0, 0, 0, 0, 1, 1, 1, 2]) >>> class_weight_to_sample_weight(y, class_weight="balanced").tolist() [0.25, 0.25, 0.25, 0.25, 0.3333333333333333, 0.3333333333333333, 0.3333333333333333, 1.0] >>> class_weight_to_sample_weight(y, class_weight=[1, 1, 3]).tolist() [0.3333333333333333, 0.3333333333333333, 0.3333333333333333, 0.3333333333333333, 0.3333333333333333, 0.3333333333333333, 0.3333333333333333, 1.0] >>> class_weight_to_sample_weight(y, class_weight={0: 2, 1: 1, 2: 3}).tolist() [0.6666666666666666, 0.6666666666666666, 0.6666666666666666, 0.6666666666666666, 0.3333333333333333, 0.3333333333333333, 0.3333333333333333, 1.0] >>> y = ["dog", "dog", "cat", "dog", "cattle", "cat", "dog", "cat"] >>> class_weight_to_sample_weight(y, class_weight={"dog": 1, "cat": 2, "cattle": 3}).tolist() [0.3333333333333333, 0.3333333333333333, 0.6666666666666666, 0.3333333333333333, 1.0, 0.6666666666666666, 0.3333333333333333, 0.6666666666666666] >>> class_weight_to_sample_weight(y, class_weight=[1, 2, 3]) AssertionError: if `y` are of type str, then class_weight should be "balanced" or a dict