compute_sample_weight#

sklearn.utils.class_weight.compute_sample_weight(class_weight, y, *, indices=None)[源代码]#

按类别估计不平衡数据集的样本权重。

参数:
class_weightdict、dict列表、“平衡”或无

与形式中的类关联的权重 {class_label: weight} .如果没有给出,所有类别的权重都应该为一。对于多输出问题,可以按照与y列相同的顺序提供一个指令列表。

请注意,对于多输出(包括多标签),应按照其自己的指令为每个列的每个类定义权重。例如,对于四类多标签分类权重应为 [{0: 1, 1: 1}, {0: 1, 1: 5}, {0: 1, 1: 1}, {0: 1, 1: 1}] 而不是 [{1:1}, {2:5}, {3:1}, {4:1}] .

"balanced" 模式使用y的值自动调整与输入数据中的类别频率成正比的权重: n_samples / (n_classes * np.bincount(y)) .

对于多输出,y每列的权重将相乘。

y形状(n_samples,)或(n_samples,n_outputs)的{类数组,稀疏矩阵}

每个样本的原始类标签数组。

indices形状类似数组(n_subsample,),默认=无

子样本中使用的索引数组。长度可以小于 n_samples 对于子样本,或等于 n_samples 在具有重复索引的自举子样本的情况下。如果 None ,将根据完整样本计算样本重量。只 "balanced" 被支撑用于 class_weight 如果提供的话。

返回:
sample_weight_vect形状的nd数组(n_samples,)

具有应用于原始样本权重的数组 y .

示例

>>> from sklearn.utils.class_weight import compute_sample_weight
>>> y = [1, 1, 1, 1, 0, 0]
>>> compute_sample_weight(class_weight="balanced", y=y)
array([0.75, 0.75, 0.75, 0.75, 1.5 , 1.5 ])