西瓜书-模型评估与选择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)

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值