两个分类器的 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 (将#修改为@)