如何了解sklearn.metrics中的sample_weight?

时间:2019-01-08 13:45:57

标签: machine-learning scikit-learn

评估模型时是否需要设置sample_weight?现在,我已经训练了一个有关分类的模型,但是数据集是不平衡的。当我用compute_sample_weight('balanced')设置sample_weight时,分数非常好。精度:0.88,召回率:0.86(1级)。 但是,如果我不设置sample_weight,分数将很糟糕。精度:0.85,召回率:0.21 sample_weight是否会破坏原始数据分布?

1 个答案:

答案 0 :(得分:2)

sample-weight参数仅在训练期间使用。

假设您有一个数据集,其中有16个点属于“ 0”类,而4个点属于“ 1”类。

在没有此参数的情况下,优化期间,它们的权重为1,以进行损耗计算:它们对模型最小化的损耗做出同等贡献。这意味着80%的损失归因于“​​ 0”类点,而20%的损失归因于“​​ 1”类点。

通过将其设置为“ balanced”,scikit-learn将自动计算权重以分配给“ 0”类和“ 1”类,这样损失的50%来自“ 0”类,而50%来自“ 1”类“。

此参数会影响将“ 0”类预测与“ 1”类分开所需的“最佳阈值”,并且还会影响模型的性能。