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:

numpy.ndarray

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