精确度分数和精确度分数可以相等吗?

时间:2019-02-06 15:27:52

标签: python scikit-learn logistic-regression sklearn-pandas

我正在尝试使用sklearn库在python 3中建立逻辑回归模型。

接下来,请坚持下面的简短版本,

dv-因变量

idv-自变量

现在我有idv1,idv2,idv3,idv4,idv5,idv6,idv7,idv8和idv9。

其中idv6到idv9是类别变量(idv6和idv7具有3个类别。其中idv8和idv9是布尔变量。是或没有种类的变量[0或1])

并且dv还是一个布尔变量(是或不是一种变量)。

现在,我为最终模型数据为所有idv6到idv9创建了一个虚拟人...即idv6_c1,idv6_c2,idv_c3,其余的跟着类似。如idv8_c1,idv8_c2 for idv8和idv9。

现在,在拟合模型并找到预测值的指标之后……

我说的是 76.7415479670124% accuracy_score 76.7415479670124% precision_score

我使用 sklearn.metrics.accuracy_score sklearn.metrics.precision_score 库进行了计算。

我想知道..这是正确的还是我错过了什么... ??

会发生这种情况吗?...精确度和精度几乎等于13个小数点??? ....我确定...我做错了什么...任何人都可以帮助我吗?? < / p>

3 个答案:

答案 0 :(得分:1)

精度=真正/(真正+假正)

准确度=(真正+真负)/(真正+假正+真负+假负)

因此,如果没有负面预测,则这两个值将相等。

答案 1 :(得分:0)

精度定义为相关检索结果的分数,由以下公式给出:(tp / tp + fp),而精度是正确预测与输入样本总数的比率。

尽管可能性很小,但当真阴性和假阴性的数量均为零时,精度等于精度。也就是说,您的系统不会将任何样本归类为阴性。

但是,您的问题可能与here中提到的微平均有关。

答案 2 :(得分:0)

这里有a link解决同分结果和更详细的原理。

你只需要改变scikit-learn的参数即可。

average = macroaverage = weighted

代码和结果是从上面的链接复制的。 (https://simonhessner.de/why-are-precision-recall-and-f1-score-equal-when-using-micro-averaging-in-a-multi-class-problem/)

参考文献:https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_score.html

print("Precision (micro): %f" % precision_score(labels, predicitons, average='micro'))
print("Recall (micro):    %f" % recall_score(labels, predicitons, average='micro'))
print("F1 score (micro):  %f" % f1_score(labels, predicitons, average='micro'), end='\n\n')

print("Precision (macro): %f" % precision_score(labels, predicitons, average='macro'))
print("Recall (macro):    %f" % recall_score(labels, predicitons, average='macro'))
print("F1 score (macro):  %f" % f1_score(labels, predicitons, average='macro'), end='\n\n')

print("Precision (weighted): %f" % precision_score(labels, predicitons, average='weighted'))
print("Recall (weighted):    %f" % recall_score(labels, predicitons, average='weighted'))
print("F1 score (weighted):  %f" % f1_score(labels, predicitons, average='weighted'))

会得到这样的结果:

    Precision (micro): 0.444444
    Recall (micro): 0.444444
    F1 score (micro): 0.444444

    Precision (macro): 0.366667
    Recall (macro): 0.361111
    F1 score (macro): 0.355556

    Precision (weighted): 0.433333
    Recall (weighted): 0.444444
    F1 score (weighted): 0.429630