首页 > 编程语言 >python计算Friedman排名代码

python计算Friedman排名代码

时间:2023-02-26 10:00:58浏览次数:34  
标签:tmp python Friedman pd1 rank1 same pd np 代码


python计算Friedman排名代码

首先先说输入数据,为了迅速处理,采用csv格式的表格,读者可以先理解这里提供的示例和代码,再自行调整

python计算Friedman排名代码_for循环


下面是代码,代码会生成一个排名文件Rank.csv。其除了会生成每个方法再每个案例下排名,还会得到一行平均排名,故最后生成的形状为19*33

# -*- coding: utf-8 -*-
"""
Created on Tue Aug 9 10:15:36 2022

@author: Administrator
"""

import numpy as np

da=np.loadtxt("values.csv",delimiter=",",dtype="str")#np.float32
n=11 #n是11个方法进行排名
#[bpd,apd,wpd]分别是最优,平均和最差指标值
bpd=da[:,:n]
apd=da[:,n:n+n]
wpd=da[:,n+n:]
all_pd=[bpd,apd,wpd]
all_pd1=[]
#如果不需要最优,平均和最差指标值分别计算,可以去掉这个for循环直接用da
for pd in all_pd:
pd=pd.tolist()
pd1=[]
for x in pd:
x1=[float(i) for i in x]
rank1=1
used=0
minn=1000000000000
same_l=[]
x2=[0 for _ in range(n)]
while used<n:
# print(used)
for j in range(0,n):
if x2[j]==0:
item=x1[j]
if item<minn:
minn=item
same_l=[]
same_l.append(j)
elif item==minn:
same_l.append(j)
if len(same_l)==1:
avg_pd=rank1
else:
avg_pd=rank1+(len(same_l)-1)/2
for j in same_l:
x2[j]=avg_pd
rank1=len(same_l)+rank1
used=used+len(same_l)
same_l=[]
minn=1000000000000

pd1.append(np.array(x2))
pd=pd1
all_pd1.append(np.array(pd))

all_pd1=np.array(all_pd1)
tmp=np.hstack((all_pd1[1],all_pd1[2]))
all_pd1=np.hstack((all_pd1[0],tmp))
tmp=np.mean(all_pd1,axis=0)
tmp=tmp.reshape((1,n*3))
all_pd1=np.vstack((all_pd1,tmp))
np.savetxt("ranks.csv",all_pd1,delimiter=",",fmt="%.3f")


标签:tmp,python,Friedman,pd1,rank1,same,pd,np,代码
From: https://blog.51cto.com/u_15718612/6086022

相关文章

  • Python 元组tuple、 列表list、 字典dict、集合set、迭代器、生成器
    一、元组:tuplePython的元组与列表类似,不同之处在于元组的元素不能修改。元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组tup2=(111,22,33,......
  • python-djanggo 实现读取excel 表格在网页中展示
    1.准备读取数据放到项目文件夹下   2.熟悉表结构    3.准备处理依赖库pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplepandasopenpyxl  ......
  • Python学习记录-异常处理函数的简单使用
    有时一些程序即便语法合规,但在执行过程中也会出现错误,比如下面这个例子defspam(divideBy):return10/divideByprint(spam(10))print(spam(20))print(spam(0))p......
  • Python | 正则表达式(re模块)
    正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串re模块是python独有的匹配字符串的模块,该模块种提供功能基于正则表达式实现的,对于字符串进行模糊匹......
  • 用Python画数据分析第三章的图
    importpandasaspdcatering_sale="D:\数据分析\catering_sale.xls"data=pd.read_excel(catering_sale,index_col=u'日期')print(data.describe())importmatplot......
  • Python 正则表达式
    1.常用的元字符1. .匹配任意字符,除换行符\n外 re.search(r'[a-z].*','python\[email protected]')python[a-z]表示小写字母,.表示匹配除换行符外......
  • 数据挖掘python画各类图
    1importpandasaspd2importnumpyasnp3catering_sale='D:\data\catering_fish_congee(1).xls'#餐饮数据4data=pd.read_excel(catering_sale,names=......
  • 自学Python中途放弃的原因
    放弃学习的原因驱动力:兴趣;跟风;功利心理,爬虫赚钱,初期没有钱赚盲目不知道短期用来干嘛,长期用来干嘛,要在学习的时候感觉到学的东西是有用的筛选确定优质学习资源:确定了短......
  • python数据挖掘绘图
    importpandasaspdcatering_sale=(r'D:\数据挖掘\catering_sale.xls')data=pd.read_excel(catering_sale,index_col='日期')print(data.describe())   importma......
  • python基础-数据容器的通用操作
    五种数据容器的特性 my_list=[1,2,3,4,5]my_tuple=(1,2,3,4,5)my_str="abcdefg"my_set={1,2,3,4,5}my_dict={"key1":1,"key2":2,"key3":3,"key4":4,"ke......