numpy F1分数的加权平均倒数

a8jjtwal  于 2023-05-07  发布在  其他
关注(0)|答案(1)|浏览(140)

我正在处理一个类别不平衡的二元分类问题(类别0/1)。给定预测向量,我想计算:

  • F1- 0级分数
  • F1-第1类的分数
  • 加权平均F1评分
  • F1分数的加权平均倒数

最后一个是我认为可能有用的自定义度量:它的工作方式与加权平均F1分数(所有每类F1分数的加权平均值)完全相同,但它不是使用与 * 支持度 *(类的实际出现次数)成比例的权重,而是使用与支持度 * 成反比 *(倒数)的权重。这样做的目的是为了更重视少数类的F1分数,因为我对预测属于这一类的油井发生率很感兴趣。
第一个问题:使用此自定义度量是个好主意吗?有什么不好的地方吗?为什么我在网上找不到关于它的任何东西?
第二个问题:如何在Python中实现?
这就是我到目前为止所尝试的:

from sklearn.metrics import f1_score
import numpy as np

y_true = [0, 0, 1, 1, 1, 1, 1, 1]
y_pred = [0, 0, 1, 1, 0, 0, 1, 1]

f1_class0 = f1_score(y_true, y_pred, pos_label=0)
f1_class1 = f1_score(y_true, y_pred, pos_label=1)

f1_weighted = f1_score(y_true, y_pred, average = 'weighted')

class_counts = np.bincount(y_true)
class_weights = class_counts / len(y_true)
inverse_class_weights = 1 - class_weights
inverse_sample_weights = np.array([inverse_class_weights[label] for label in y_true])
f1_inverse = f1_score(y_true, y_pred, average = 'weighted', sample_weight = inverse_sample_weights)

print("F1-Score for class 0:", f1_class0)
print("F1-Score for class 1:", f1_class1)
print("Weighted Average F1-Score:", f1_weighted)
print("Inverse Weighted Average F1-Score:", f1_inverse)

输出:

F1-Score for class 0: 0.6666666666666666
F1-Score for class 1: 0.8
Weighted Average F1-Score: 0.7666666666666667
Inverse Weighted Average F1-Score: 0.8285714285714286

前三个指标计算正确,但自定义指标计算错误:我期望值为(0.6666666666666666 * 0.75) + (0.8 * 0.25) = 0.7,因为类0的 * 支持比例 * 为0.25,类1的 * 支持比例 * 为0.75(因此“反支持比例”分别为0.75和0.25),而我不明白值0.8285714285714286是如何产生的。
有人能帮我弄明白这是怎么回事吗?我做错什么了吗?最重要的是,为什么从来没有人开发过这个指标?

m3eecexj

m3eecexj1#

使用sample_weight参数,可以对示例进行加权。这与您希望对类1和类0的分数进行加权不同:

class_counts = np.bincount(y_true)
inverse_class_proportions = 1 / class_counts
inverse_class_weights = inverse_class_proportions / sum(inverse_class_proportions)

f1_inverse = f1_class0 * inverse_class_weights[0] + f1_class1 * inverse_class_weights[1]

print("Inverse Weighted Average F1-Score:", f1_inverse)

输出:

Inverse Weighted Average F1-Score: 0.7

这并不常见,因为它给了少数民族阶级过多的权重,以防阶级极度不平衡。

相关问题