西瓜书-模型评估与选择Friedman检验python实现
·
冗长的定义。。
计算Tf的函数在最底下,目前只实现了计算Tf,后续的有时间补上




import numpy as np
data = np.array([[1,2,3],[1,2.5,2.5],[1,2,3],[1,2,3]])#书上的数据
def Friedman(n,k,data_matrix):
'''
Friedman检验
参数:数据集个数n, 算法种数k, 排序矩阵data_matrix
返回值是Tf
'''
#计算每个算法的平均序值,即求每一列的排序均值
hang,lie = data_matrix.shape#查看数据形状
XuZhi_mean = list()
for i in range(lie):#计算平均序值
XuZhi_mean.append(data_matrix[:,i].mean())
sum_mean = np.array(XuZhi_mean)#转换数据结构方便下面运算
## 计算总的排序和即西伽马ri^2
sum_ri2_mean = (sum_mean ** 2).sum()
#计算Tf
result_Tx2 = (12 * n) * (sum_ri2_mean - ((k * (k + 1) ** 2) / 4)) / (k * (k + 1))
result_Tf = (n - 1) * result_Tx2 / (n * (k - 1) - result_Tx2)
return result_Tf
Tf = Friedman(4,3,data)
print(Tf)
输出结果:


魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)