留一法评估 HR 与 NDCG

  Posted by Mr.Zhangon 02 Aug, 2019

   PYTHON   

所谓留一法(leaveoneout cross validation)是指每次只留下一个样本作测试集,其它作为训练集,在推荐系统的模型评估中,计算命中率(hate ratio,HR)和归一化折损累积增益(Normalized Discounted Cumulative Gain,NDCG)所用时间很久,普遍采用留一法。 在MovieLens数据集中,根据时间戳保留最后一个项目评估,可以使用下列方法得到训练和测试数据集: python df.sortvalues(by='user', 'timestamp', axis=0, ascending=Tr[...]

mxnet 混合编程

  Posted by Mr.Zhangon 24 Jun, 2019

   MXNET    PYTHON   

深度学习几个python库,可以分为命令式编程和符号式编程,前者以PyTorch为代表,后者主要是Tensorflow,符号式编程不易理解与调试,所以Keras成为大多数人的选择,目前官方支持中文文档。除此之外,还有一种选择,那就是mxnet,支持两类模式的混合编程,很好很强大。 在设计模型时候,可以符号式方法丢数据进去看看中间量;正式跑参数的时候可以调用hybridize函数加速性能,减少等待时间,十分适合炼丹。官方介绍地址是: , 感觉太过简略。 一个简单模型设计: python class MLP(gluon.HybridBlock): 使用混[...]

h5py 批量存储数据

  Posted by Mr.Zhangon 19 Jun, 2019

   PYTHON   

最近做个数据处理任务,50万条数据,独热编码6000维,numpy用uint8勉强内存里能跑,硬盘缓存大的惊人,想用批量处理,批量硬盘读写的方法来做,管理比较麻烦。用mxnet做批数据迭代,发现支持HDF5格式,查一查果然好东西,而且这本来就是设计用来做数据分析用的。 使用h5py可以轻易的创建和读取h5格式文件,两个主要概念group和dataset对应于常用的文件夹和数据库,下面示例是如何批量追加到文件中,避免内存溢出。 python import numpy as np import h5py def saveh5(h5f,data,target): shap[...]

python-docx 序列化读取段落与表格

  Posted by Mr.Zhangon 27 May, 2019

   PYTHON   

github上面Slowhalfframe提供的一种序列化读取段落和表格的方法: How to use Python iteration to read paragraphs, tables and pictures in word(https://github.com/pythonopenxml/pythondocx/issues/650) python from docx.document import Document as Document from docx.oxml.text.paragraph import CTP from docx.oxml.table impo[...]

python-docx 解析文字与图片

  Posted by Mr.Zhangon 12 May, 2019

   PYTHON   

pythondocx是用来解析docx类型文档的库,可以方便提取每个段落中的文字,但是对图片和表格没有办法处理。使用网上的这段代码,可以批量提取docx文档中图片,但无法保留与文字的相关次序: python from os.path import basename from docx import Document filename = "D:/2.docx" doc = Document(filename) for shape in doc.inlineshapes: contentID = shape.inline.graphic.graphicData.pic.[...]

flask_blogging 全文检索插件开发

  Posted by Mr.Zhangon 03 May, 2019

   PYTHON   

flaskblogging是一款基于flask的博客插件,可以快速构建简易的博客,实现md格式的文本编辑和渲染,但由于是轻博客系统,功能不是十分完善,例如全文检索功能。Blogging插件的作者在GitHub页回复可以使用flaskwhooshalchemy插件实现这一功能,不过这款插件已经很长时间没有更新,并且不支持中文检索。 索性自己定制一个关于该博客插件的全文检索插件: whoosh库是一种针对检索设计的纯python库,代码PythonIC,文档丰富 flaskblogging使用Blinker库设计有Signals系统,便于在系统运行的某些阶段插入新建函数 使用[...]

jinja 过滤器

  Posted by Mr.Zhangon 25 Apr, 2019

   PYTHON   

jinja模板引擎可以使用已经定义的过滤器truncate实现文本截取功能,在模板文件中直接插入 python {{ post.text | truncate(300,false) }} 其中: post.text是要处理的数据 |为管道操作符,分隔开导入数据和过滤器 truncate过滤器本质是一个函数,有一个隐式参数value接收管道前的数据;有3个参数,分别为截取长度,是否保留截取后子串,以及省略符号,默认是... 但这个截取没有处理掉HTML标签和其它无关内容,不是很清爽;用户可以自己定义过滤器函数,下面两个函数功能分别实现了去除标签并截取固定长[...]