【随笔-论文记录】Friedman检验代码实现(Python)
实验中的Friedman检验方法代码实现,代码如下:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# def friedman(n,k,rank_matrix):
# sumr = sum(list(map(lambda x:np.mean(x) ** 2, rank_matrix.T)))
# result = 12 * n / (k * (k + 1)) * (sumr - k * (k + 1) ** 2 / 4)
# result = (n - 1) * result / (n * (k - 1) - result)
# return result
def friedman(n,k,data_matrix): #n:数据集 k:算法个数,data是csv格式,n行k列
hang, lie = data_matrix.shape
print(hang)
print(lie)
print(data_matrix)
data_matrix = data_matrix.values
XuZhi_mean = list()
for i in range(lie):
print(data_matrix[:,i])
XuZhi_mean.append(data_matrix[:,i].mean())
print(XuZhi_mean) #这里输出平均序值
sum_mean = np.array(XuZhi_mean)
sum_ri2_mean = (sum_mean ** 2).sum()
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
#用法
result = friedman(n,k,data_matrix)
算法间是否存在显著性差异需要将result与临界值作比较,临界值查表可得。
对于k个算法,n个数据集,查表中(k-1, (n-1)*(k-1))处的值即为临界值
本文作者:无涯清酒
本文链接:https://www.cnblogs.com/wuyawine/p/15911459.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
科研
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步