0

我正在使用逻辑回归方法进行多类分类。基本上我知道,如果我使用 accuracy_score () 函数(例如,来自 sklearn 库),它将计算出不同值到不同值的准确性,如下所示:

y_pred = [0, 2, 1, 3]
y_true = [0, 1, 2, 3]
accuracy_score(y_true, y_pred)
0.5

但是我想为每个标签(来自predict_proba)的顶级逻辑回归预测向量获取accuracy_score_new()函数,并计算真实标签是否在这个区间内,如下所示:

y_pred = [[0,1,3] [2,1,4], [1,2,5] [3,7,9]]
y_true = [0, 1, 2, 3]
accuracy_score_new(y_true, y_pred)
1

此示例中的 accuracy_score_new 将等于 1,因为分类器预测标签在区间内。这个功能怎么实现?

4

2 回答 2

2

准确性只是(匹配值/总值)。

因此,在您的情况下,它将类似于:

def accuracy_score_new(y_pred, y_true):
    matched = 0
    for y_p, y_t in zip(y_pred, y_true):
        if y_t in y_p:
            matched = matched + 1

    return (matched / (float) len(y_true))
于 2017-08-31T12:24:39.713 回答
1

是的,您可以使用 sklearn 中的make_scorer函数来做到这一点。这个想法是你定义你的自定义函数,假设它有两个参数 y_true 和 y_pred。如果需要,您还可以添加任何其他参数。

这是一个示例:自定义评分功能

这是另一个示例:同时使用 MSE 和 R2 分数

这个答案也可能会有所帮助。

于 2017-08-31T11:10:20.587 回答