计算样本权重#
- sklearn.utils.class_weight.compute_sample_weight(class_weight, y, *, indices=None)[source]#
为不平衡数据集按类别估计样本权重。
- 参数:
- class_weight字典、字典列表、“balanced”或None
与类相关的权重,形式为
{class_label: weight}
。如果未给出,则所有类的权重都假定为1。对于多输出问题,可以按 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,) 的类数组,默认值为 None
在子样本中使用的索引数组。在子样本的情况下,长度可以小于
n_samples
,或者在具有重复索引的bootstrap子样本的情况下等于n_samples
。如果为None
,则样本权重将针对整个样本计算。如果提供此参数,则只有"balanced"
适用于class_weight
。
- 返回:
- sample_weight_vect形状为 (n_samples,) 的ndarray
应用于原始
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 ])