近来实验室的师姐要发论文,由于论文交稿时间临近,有一些杂活儿需要处理,作为实验室资历最浅的一批,我这个实习生也就责无旁贷地帮忙当个下手。今天师姐派了一个小活,具体要求的是:
给一些训练模型的迭代次数,训练精度的数据,让我做成图表形式展示出来,一方面帮助检查模型训练时的不足,另一方面来看样本数目和预测精度之间的联系,数据具体格式如下:
迭代1500 标签对acc训练测试 12 143 24 24 1.0 160 92 16 15 0.9375 100年12 2 0 0.0 142 0 0 0 0.0 152 0 0 0 0.0 110年10 2 0 0.0 170年12 2 2 1.0 42 421 70 63 0.9 31日43 8 5 0.625 22 132 22 18 0.818181818182 60 51 9 8 0.888888888889 51 916 153 143 0.934640522876 131 82 14 11 0.785714285714点 53 84 14 10 0.714285714286 70年9 2 2 1.0 21 531 89 89 1.0 120年1 1 1 1.0 11 454 76 71 0.934210526316 90年1 1 1 1.0 32 39 7 6 0.857142857143 41 151 25 14 0.56 132 0 0 0 0.0 151年43 7 6 0.857142857143 43 8 2 1 0.5 80 7 2 1 0.5点 141 1.0 96 16 16 44 67 12 2 0.166666666667 右:509准确性:0.883680555556 >之前我的任务就是以标签为自变量,绘制出它和训练及acc之间的关系。
接到这个任务后,最直观的感受就是常规的洗数据,于是我先把这些数据放在txt文件中存储下来,由于每个数据之间的间隔大于一个空格,我想当然地写个正则匹配脚本将数据间的大空格转换为一个逗号(转换为逗号的目的是这样可以直接转换为CSV表格文件,然而在本次任务中貌似意义不大…。)
# * * * * * * * * * * * * * * * * * * * * * * Python 3.6.1 * * * * * * * * * * * * * * * * * * * * * * * * * * * # # *将txt文本数据中的过长的空格更为一个逗号* # # * * * * * * * * * * * * * * * * *作者LQ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * # # * * * * * * * * * * * * * * * * * * * * * * 2018/4/4 * * * * * * * * * * * * * * * * * * * * * * * * * * * * # # !/usr/bin/python # - * -编码:utf - 8 - * 进口再保险 进口操作系统os #模块与文本操作直接相关的模块 # * * * * * * * * *下面三句代码作用不详,就是为了防止出现编码问题* * * * * * * * * 进口importlib 导入系统 importlib.reload(系统) # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 模式=' \ s + ' #匹配出文本中的长空格 类清洁: #初始化 def __init__(自我): os.chdir (' D: \ \ \ \ Machine_Learning \ \学习实习\ \师姐论文实验”)#改变工作目录到txt文件对应的目录 自我。内容=开放(“acc-onlyRealImage-Iter2500.txt”) def grab_content(自我): 行=self.content.readline () pre=re.compile(模式) 而行: line_1=pre.sub(', ',线)#将文本的长空格转换为逗号后,利于转成CSV格式,然后标签按照升序排列 self.Write_content (line_1) 行=self.content.readline () def Write_content(自我,line_1): 路径=' acc-onlyRealImage-Iter2500-after.txt ' f=开放(路径,“a”) f.write (' \ n ' + line_1) def运行(自我): self.grab_content () if __name__==癬_main__”: 清洁=清洁() cleaner.run () >之前数据清洗完成后,自然就是绘图了,逛了一些博客后,着手写个脚本,第一版是绘制出标签和火车及acc的双Y轴折线图,脚本较为简单,就是调用别人造的轮子,直接附上代码:
# * * * * * * * * * * * * * * * * * * * * * * Python 3.6.1 * * * * * * * * * * * * * * * * * * * * * * * * * * * # # *绘制出双Y轴折线图* # # * * * * * * * * * * * * * * * * *作者LQ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * # # * * * * * * * * * * * * * * * * * * * * * * 2018/4/4 * * * * * * * * * * * * * * * * * * * * * * * * * * * * # # !/usr/bin/python # - * -编码:utf - 8 - * 进口再保险 进口操作系统os #模块与文本操作直接相关的模块 进口matplotlib。pyplot作为plt 进口numpy np # * * * * * * * * *下面三句代码作用不详,就是为了防止出现编码问题* * * * * * * * * 进口importlib 导入系统 importlib.reload(系统) # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * font2={“家庭”:“Times New Roman”, “体重”:“正常”, “大小”:18日 } 类图: #初始化 def __init__(自我): os.chdir (' D: \ \ \ \ Machine_Learning \ \学习实习\ \师姐论文实验”)#改变工作目录到指定文件目录 自我。内容=开放(“acc-onlyRealImage-Iter2200-after.txt”) 自我。content1=开放(“acc-onlyRealImage-Iter2500-after.txt”) def grab_content(自我): 行=self.content.readlines () lines_1=self.content1.readlines () x_1=[line.strip () .split(" ")[0]行线)#字段以逗号分隔,这里取得是第4列 y_train_1=[line.strip () .split(" ")[1]行线) y_train_2=[line.strip () .split(" ")[1]在lines_1] y_acc_1=[line.strip () .split(" ")[4]行线) y_acc_2=[line.strip () .split(" ")[4]在lines_1] x=列表(范围(len (x_1))) y_acc=[] y_acc1=[] y_train=[] y_train1=[] 因为我在范围(len (y_acc_1)): y_acc.append(浮动(y_acc_1[我])) y_acc1.append(浮动(y_acc_2[我])) y_train.append (int (y_train_1[我])) y_train1.append (int (y_train_2[我])) # plt。xticks (x, x_1、旋转=0) 无花果,left_axis=plt.subplots () p1,=left_axis。情节(x, y_train, ro -) right_axis=left_axis.twinx () p2,=right_axis。情节(x, y_acc bo -) plt。xticks (x, x_1、旋转=0)#设置x轴的显示形式 #设置左坐标轴以及右坐标轴的范围,精度 left_axis.set_ylim (0, 1201) left_axis.set_yticks (np.arange (0, 1201, 200)) right_axis.set_ylim (0, - 1.01) right_axis.set_yticks (np.arange (0、1.01、0.20)) #设置坐标及标题的大小,颜色 left_axis.set_title (RealAndSimulation-Iter6600, font2) left_axis.set_xlabel(“标签”,font2) left_axis。set_ylabel(训练集的数量,font2,颜色=' r ') left_axis。tick_params (=y轴、颜色=' r ') right_axis.set_ylabel(“准确性”,font2,颜色=' b ') right_axis。tick_params (=y轴、颜色=' b ') plt.show () def运行(自我): self.grab_content () if __name__==癬_main__”: 画=图() Drawing.run ()python绘制双Y轴折线图以及单Y轴双变量柱状图的实例