微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

两个分类器的 P 值

如何解决两个分类器的 P 值

我想比较两个分类器的输出,看看是否存在统计上的显着差异。为此,我正在使用 t 检验。最佳情况下,我想获得单个输出值,因此在 Python 中我正在执行以下操作:

import numpy as np
from scipy.stats import ttest_ind
Y = [[0,1,0],[1,[0,1]]
pred = [[1,1]]
pred2 = [[0,1]]
ttest_ind([x.all() for x in np.round(pred)==Y],[x.all() for x in np.round(pred2)==Y])

这个想法是通过检查单个样本的所有输出是否正确来对样本进行 t 检验。可能的问题是,当我训练同一个分类器两次,但在训练数据的不同部分时,我得到的 p 值为 0.006,这表明存在统计学上的显着差异。训练集分割是平衡的,应该足够大,没有太大的差异,所以这看起来很奇怪。尤其是因为如果我们查看 F1 分数,它们总体上是相等的(尽管在各个班级之间存在一些差异)。 现在基本上我想知道我的 t 检验方法是否有意义,或者我是否错误地使用了 ttest_ind 模块。

编辑:这是我得到的输出,如果有帮助

>>> ttest_ind([x for x in np.round(pred)==Y_test],[x for x in np.round(pred2)==Y_test])
Ttest_indResult(statistic=array([ 0.44680776,0.1417688,1.60563573,-1.72338569,-0.81403723,-0.01799025,-1.19019976,0.35138365,-0.68996031,-0.39314128,1.39986681]),pvalue=array([0.6550159,0.88726323,0.10836059,0.08482529,0.41562769,0.98564671,0.23397381,0.7253021,0.49022251,0.69421689,0.16155971]))
>>> ttest_ind([x.all() for x in np.round(pred)==Y_test],[x.all() for x in np.round(pred2)==Y_test])
Ttest_indResult(statistic=-2.7318364307121126,pvalue=0.006300558090148437)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。