冗长的定义。。
计算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)

输出结果:
在这里插入图片描述
在这里插入图片描述

Logo

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

更多推荐