达观杯_分类融合

import os
from collections import Counter

def read_dir_by_filter(root_dir,filter):
    file_list = []
    for root,dirs,files in os.walk(root_dir):
        for filepath in files:
            if(filter in filepath):
                file_list.append(os.path.join(root,filepath))
    return file_list

file_l = read_dir_by_filter('.','.csv')
# 10个文件

import pandas as pd 

res_l = []

for f in file_l:
	a = pd.read_csv(f)
	res_l.append(a['class'].values)

print(res_l)

# 把每个数组按照列combine

a_l = []
for i in range(len(res_l[0])):
	a_l.append([res_l[j][i] for j in range(10)])

def voting(class_l):
	final_class = []
	c_l = []
	for row in class_l:
		c = Counter(row)
		c_v_set = set(c.values())
		# 票数不等取最大
		if(len(c_v_set) > 1):
			res = max(c,key=c.get) 
		else: # 票数相等取最后一列的值
			res = row[-1]
		final_class.append(res)
		c_l.append(c)	
	return final_class,c_l

final_class,c = voting(a_l)


res_df = pd.DataFrame(columns=['id','class','counter'])

res_df['id'] = list(range(len(final_class)))
res_df['class'] = final_class
res_df['counter'] = c

res_df.to_csv('final_voting.csv',index=None)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值