compute_class_weight#
- sklearn.utils.class_weight.compute_class_weight(class_weight, *, classes, y, sample_weight=None)[source]#
估计非平衡数据集的类别权重。
- 参数:
- class_weightdict, “balanced” 或 None
如果为“balanced”,类别权重将由
n_samples / (n_classes * np.bincount(y))
给出,或者如果提供了sample_weight
,则为其加权等价。如果给定一个字典,键是类别,值是对应的类别权重。如果给定None
,则类别权重将是均匀的。- classesndarray
数据中出现的类别数组,由
np.unique(y_org)
给出,其中y_org
是原始类别标签。- y形状为 (n_samples,) 的类数组对象
每个样本的原始类别标签数组。
- sample_weight形状为 (n_samples,) 的类数组对象, 默认为 None
分配给单个样本的权重数组。仅在
class_weight='balanced'
时使用。
- 返回:
- class_weight_vect形状为 (n_classes,) 的 ndarray
数组,其中
class_weight_vect[i]
是第 i 个类别的权重。
参考文献
“balanced” 启发式算法灵感来源于 King 和 Zen 在 2001 年的《稀有事件数据中的逻辑回归》一文。
示例
>>> import numpy as np >>> from sklearn.utils.class_weight import compute_class_weight >>> y = [1, 1, 1, 1, 0, 0] >>> compute_class_weight(class_weight="balanced", classes=np.unique(y), y=y) array([1.5 , 0.75])