为了账号安全,请及时绑定邮箱和手机立即绑定

单次操作加载数据和平均值

单次操作加载数据和平均值

沧海一幻觉 2021-09-14 21:25:27
我正在尝试将如下所示表单的数据加载到数据框中。popSize: 1000numSurvivors: 0tournamentSize: 10probMutation: 0.1probCrossover: 0.9numIters: 100Accuracy: 96.84 Error Rate: 3.16 Not Classified: 0.00Total time: 5.367popSize: 1000numSurvivors: 0tournamentSize: 10probMutation: 0.1probCrossover: 0.9numIters: 100Accuracy: 96.84 Error Rate: 3.16 Not Classified: 0.00Total time: 4.472popSize: 1000numSurvivors: 0tournamentSize: 10probMutation: 0.1probCrossover: 0.9numIters: 100Accuracy: 92.11 Error Rate: 7.89 Not Classified: 0.00Total time: 4.46数据代表算法的多次执行。有没有办法将这些数据作为单行加载,使用最后 4 个值的平均结果?
查看完整描述

2 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

这是一种使用itertools.groupby()and将数据整理到数据帧中的方法pandas:


from itertools import groupby

import pandas as pd


with open('test.txt', 'r') as f:


    chunks = [list(group) for k, group in groupby(f.readlines(), lambda x: x=='\n') if not k]


chunks = [dict([tuple(i.strip().split(': ')) for i in chunk]) for chunk in chunks]


df = pd.DataFrame(chunks).astype(float)

返回:


  Accuracy Error Rate Not Classified Total time numIters numSurvivors popSize  \

0    96.84       3.16           0.00      5.367      100            0    1000   

1    96.84       3.16           0.00      4.472      100            0    1000   

2    92.11       7.89           0.00       4.46      100            0    1000   


  probCrossover probMutation tournamentSize  

0           0.9          0.1             10  

1           0.9          0.1             10  

2           0.9          0.1             10 

然后,您可以轻松地计算平均值,如下所示:


df[['Accuracy','Error Rate','Not Classified','Total time']].mean()

返回:


Accuracy          95.263333

Error Rate         4.736667

Not Classified     0.000000

Total time         4.766333

dtype: float64


查看完整回答
反对 回复 2021-09-14
  • 2 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号