Python 中使用逻辑回归的预测向量的准确度分数
Accuracy Score for a vector of predictions using Logistic Regression in Python
我正在使用逻辑回归方法进行多类分类。基本上我知道,如果我使用 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,因为分类器预测标签在区间内。这个功能怎么实现?
是的,您可以使用 sklearn 中的 make_scorer 函数来做到这一点。这个想法是您定义自定义函数,假设它获得两个参数 y_true 和 y_pred。如果需要,您还可以添加任何其他参数。
这是一个例子:Custom scoring function
这是另一个例子:Using MSE and R2 score at the same time
This answer 也可能会有一些帮助。
准确率就是(匹配值/总值)。
所以在你的情况下它会是这样的:
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))
我正在使用逻辑回归方法进行多类分类。基本上我知道,如果我使用 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,因为分类器预测标签在区间内。这个功能怎么实现?
是的,您可以使用 sklearn 中的 make_scorer 函数来做到这一点。这个想法是您定义自定义函数,假设它获得两个参数 y_true 和 y_pred。如果需要,您还可以添加任何其他参数。
这是一个例子:Custom scoring function
这是另一个例子:Using MSE and R2 score at the same time
This answer 也可能会有一些帮助。
准确率就是(匹配值/总值)。
所以在你的情况下它会是这样的:
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))