在 Python 中使用逻辑回归的预测向量的准确度得分

Posted

技术标签:

【中文标题】在 Python 中使用逻辑回归的预测向量的准确度得分【英文标题】:Accuracy Score for a vector of predictions using Logistic Regression in Python 【发布时间】:2018-02-09 06:05:34 【问题描述】:

我正在使用逻辑回归方法进行多类分类。基本上我知道,如果我使用 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,因为分类器预测标签在区间内。这个功能怎么实现?

【问题讨论】:

您是想在任何 scikit 类中使用新函数,还是只想自己使用它来打印新的精度。如果是后者,那么您可以为它编写简单的 python 代码。只需遍历两个数组。 【参考方案1】:

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

这是一个例子:Custom scoring function

这是另一个例子:Using MSE and R2 score at the same time

This answer 也可能会有所帮助。

【讨论】:

【参考方案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))

【讨论】:

以上是关于在 Python 中使用逻辑回归的预测向量的准确度得分的主要内容,如果未能解决你的问题,请参考以下文章

我们可以在 python 中使用逻辑回归预测数据集的未来值吗?

逻辑回归的基本步骤

Python对中国电信消费者特征预测:随机森林朴素贝叶斯神经网络最近邻分类逻辑回归支持向量回归(SVR)

求python支持向量机多元回归预测代码

Sklearn逻辑回归 - 调整截止点

《机器学习实战》之逻辑回归--基于Python3--02