计算机

计算机 · 圈子

8557 位酷友已加入

计算机圈子中包含常用的技术文档、源代码、模型、数据集、学习教程、技术报告等干货资料,加入圈子可以上传、下载资料,也可以使用提问来寻求资料或分享你认为有价值的站外链接~

关注推荐最新

热门标签

计算机

计算机·圈子   首发

阿托 更新了
资源

【Demo】开放实体关系抽取

开放实体关系抽取 主要任务 基于依存句法分析,实现面向开放域文本的知识三元组抽取(实体和关系抽取)及知识库构建。 举例 "中国国家主席习近平访问韩国,并在首尔大学发表演讲" 我们可以从句子中提取知识三元组,如下所示: (中国, 国家主席, 习近平) (习近平, 访问, 韩国) (习近平, 发表演讲, 首尔大学) 目录结构 要求 此仓库已在Python 3.5+上进行了测试。 要求是: jieba>=0.39 pyltp>=0.2.1 快速开始 七个DSNF范例 参考 如果使用该代码,请引用以下文章: 贾珊,李敏,向英.中文开放关系抽取与知识库建立[J].计算机应用,2006,26(5):1175-1178 ACM关于亚洲和低资源语言信息处理的交易(TALLIP),2018,17(3):15. 来源https://github.com/lemonhu/open-entity-relation-extraction

资源

【项目】基于Apache Spark的Netflix电影的离线与实时推荐系统

离线推荐 基于Spark MLlib自带的ALS最小二乘法矩阵分解算法 选择的迭代次数iterations=5,物品、用户特征个数K=50 使用了RMSE方法评价推荐精度,结果为0.5757 不同iterations、K值组合下,RMSE值表现 实时推荐 实时推荐算法设计 设计的实时算法的大体思想是: 当用户u对电影p进行了评分,将触发一次对u的推荐结果的更新。由于用户u对电影p评分,对于用户u来说,他与p最相似的电影们之间的推荐强度将发生变化,所以选取与电影p最相似的K个电影作为候选电影。 每个候选电影按照“推荐优先级”这一权重作为衡量这个电影被推荐给用户u的优先级。 这些电影将根据用户u最近的若干评分计算出各自对用户u的推荐优先级,然后与上次对用户u的实时推荐结果的进行基于推荐优先级的合并、替换得到更新后的推荐结果。 注意:由于Netflix Prize数据电影间相似度无法直接计算,这里利用ALS算法的物品矩阵进行cos计算得到各个电影间相似度,详情见Doc下文档 实时推荐延迟测试 下面的数据结果分别是瞬间产生1000、5000、10000、30000、50000个评分数据情况下实时推荐系统的响应时间表现 batchDuration选择了2s 将以上这些测试结果汇总对比如图 保持一定的速度逐渐产生大量评分时实时推荐系统的响应时间表现 a.速度为500个数据量每秒时 横坐标没有数学意义,而是作为每个评分的标识;纵坐标表示了对应横坐标上的评分的实时推荐响应时间,单位为秒。在每秒产生500个评分数据的速率下,实时推荐系统性能良好,最慢的实时推荐也在6s内完成。 b.速度为1000个数据量每秒时 横纵坐标意义同上。从图中可以看到,在每秒产生1000个评分数据的速率下,实时推荐系统性能良好,最慢的实时推荐也在6s内完成。与每秒500个评分的速率下实时表现差不多。 c.速度为1500个数据量每秒时 坐标意义同上。在每秒产生1500个评分数据的速率下,实时推荐系统性能良好,最慢的实时推荐也在5s内完成。与每秒500、1000个评分的速率下实时表现差不多。 d.速度为2000个数据量每秒时 e.速度为2500个数据量每秒时 横纵坐标意义同上。在每秒产生2500个评分数据的速率下,实时推荐系统随着时间推移性能开始下降,这是由于数据堆积产生的问题:当新数据到来时,还有旧数据没有处理完成,造成新数据堆积等待处理,使得被堆积的数据实时响应时间增大。可以看到,在1分钟内实时推荐响应时间逐渐升至20s。可以预见,2500个评分数据/s的速率保持时间越长,实时推荐响应时间越慢。 f.速度为3000个数据量每秒时 项目结构 alsBatchRecommender.scala: ALS离线推荐,以及计算电影间相似度 streamingRecommender.scala: 实时推荐 转载自:https://github.com/LeechanX/Netflix-Recommender-with-Spark

计算机

计算机·圈子   首发

阿托 更新了
资源

【Demo】通过文本制作快速流程图的小应用程序

一个用于通过文本制作快速流程图的小应用程序 用create react app和cytoscape.js制作 主要工作 一个NPM软件包,可从文本文件生成svg。 这对于文档很有用。 将 https://flowchart.fun 转换为PWA,便可安装 添加测试,保证进程不会随着我们前进而中断 如何在本地运行 git clone cd flowchart-fun yarn yarn start 参考: https://github.com/facebook/create-react-app https://github.com/cytoscape/cytoscape.js 来源https://github.com/tone-row/flowchart-fun

资源

【项目】PyMICAPS气象数据可视化

项目介绍 实用的生产图片工具,用matplotlib和basemap放置micaps数据 利用配置文件config.xml定制参数,结合micaps具体数据, 可实现多种 micaps 数据类型的单独绘制或叠加绘制(in the future) 并自动输出相应图像到指定文件。 主要功能 1,支持Micaps第3、4、11、17类数据的布局 目前实现了某类数据的单独绘制,多类数据叠加在不久的将来实现。 2,支持多种投影 sall:无投影,lcc:兰波托投影,mill,ortho,stere:极射赤面投影, npstere:北半球极射赤面投影, hammer,kav7,merc:麦卡托投影,gnom, cyl:等经纬度投影。 3,支持底图叠加 用一个或多个shp格式或者定制的txt文件叠加到底图。 4,支持任意区域完美白化 用shp或者定制的txt文件所形成的单个或多个闭合区域切图(也叫白化),轻松实现分省绘图。 5,支持灵活配置色标 可以自己定义色标,同时支持 NCL色标 6,高度可定制化 包括但不限于绘图区域、标题内容、样式、位置;色标选择、位置、放置方式; 色版图、等值线、标注、格点着色的显隐等都实现了高度自定义。 程序运行 python main.py config.xml 项目参考的代码及的用到的一些库 第三方库nclcmaps 作者的一个支持NCL colorbar的python库。 matplotlib==3.0.3 安装方法: conda安装 conda install matplotlib==3.0.3 pip安装 pip install matplotlib==3.0.3 basemap numpy natgrid 安装包见.\lib\natgrid-0.2.1-cp37-cp37m-win_amd64.whl 安装方法: pip install natgrid-0.2.1-cp37-cp37m-win_amd64.whl scipy sympy pyshp=1.2.10 nclcmaps 安装包见.\lib\nclcmaps-master.zip 安装方法:解压后在当前目录运行python setup.py install cchardet 项目结果 Micaps第三类数据-等经纬度投影: Micaps第11类数据 等经纬度和兰波托投影、自定义区域、中国区作为裁切区(流线风场也有效) Micaps第11类数据-等经纬度投影: Micaps第11类数据-ortho投影: Micaps第四类数据ortho投影: Micaps第四类 数据无投影: Micaps第四类 数据Lambert投影: Micaps第三类数据-等经纬度投影: Micaps第三类数据-Lambert投影 转载自:https://github.com/flashlxy/PyMICAPS

计算机

计算机·圈子   首发

阿托 更新了
资源

【Demo】OpenCore引导程序

具有开发SDK的OpenCore引导程序。 Libraries 该存储库还包含由Acidanthera中的其他项目共享的其他UEFI支持公用库。库集的主要目的是为Apple特定的UEFI驱动程序提供补充功能。主要特点: Apple磁盘映像加载支持 苹果键盘输入汇总 Apple PE图像签名验证 Apple UEFI安全启动补充代码 带有屏幕阅读支持的音频管理 基本的ACPI和SMBIOS操作 具有计时器支持的CPU信息收集 加密原语(SHA-256,RSA等) 解压缩原语(zlib,lzss,lzvn等) ACPI的辅助代码读取和修改 文件,字符串,UEFI变量的高级抽象 溢出检查算法 没有UEFI安全启动冲突的PE映像加载 Plist配置格式解析 PNG图像处理 文本输出和图形输出实现 XNU内核驱动程序注入和补丁引擎 该代码库的早期历史可以在HermitCrabs Lab设置的AppleSupportPkg和PicoLib库中找到。 OcGuardLib 该库实现了在项目中建议使用的基本安全功能。它基于NetBSD实现在编译器内置程序,类型对齐检查和UBSan运行时上实现快速安全的积分算术映射。 使用UBSan运行时需要使用Clang编译器和-fsanitize = undefined参数。有关更多详细信息,请参考Clang文档。 来源https://github.com/acidanthera/OpenCorePkg

资源

【项目】pyETRC列车运行图系统

项目概述 本项目是基于Python语言和PyQt5的非官方性质、简易的中国铁路列车运行图系统。代码的发布遵循GPLv3协议。 与ETRC的联系 pyETRC项目的最初灵感来源和很多功能设置都来自由LGuo等前辈基于java语言开发的ETRC列车运行图系统。为致敬开发ETRC项目的前辈,本项目定名为pyETRC列车运行图系统,简称为pyETRC。 交互支持 本系统支持读取和导出ETRC列车运行图系统的运行图文件(*.trc)。但由于两软件支持的功能有差异,读取和导出过程可能造成一定的信息损失。 本系统与ETRC列车运行图系统的实现各有侧重。相比本系统,ETRC列车运行图系统有如下的特色比较突出: 动态运行图。本系统不支持此功能。 对于精确到客运时刻的需求,自带较完善的线路数据库和车次时刻数据库。而本系统的线路和车次数据库依赖外部文件,且目前很不完整。 较完善的车次切片功能。 更简洁的操作和数据,或者说需要用户提供的数据更少。 相比ETRC列车运行图系统,本系统主要有如下的特色: 更准确、完整的数据支持,包括精确到秒的时刻和精确到三位小数的里程,允许上下行分设不同站点,标尺,天窗,交路等。 做了一定的效率优化,对较大运行图的执行效果相对更好。 提供了一些运行图快速微调工具和分析工具,例如调整某一站名(同时修改所有列车数据中引用的改站名),对比两运行图等。 在3.0.0版本以后,提供了路网级的数据库管理模块,可以在更高层面上管理,更方便地查看、导出区段运行图。 两系统各有长短。因此建议,如果有需求,可以两套系统结合使用。 环境与运行 使用源代码方式运行本项目,需要具有以下环境。 Python 3.7及以上的版本。本项目开发所用的版本是3.7.4. 注:本项目使用了大量的f-string语法,该语法在Python 3.6以后的版本才被支持。一些较新的代码中利用了Python 3.7中dict键值对顺序与添加顺序一致的特性。如果使用3.6.*版本,这部分代码可能出现一些问题。如果使用3.6以下版本,则会报错。 下列的Python第三方库,都可以用pip安装。 PyQt5。必须。推荐使用5.10.1版本。 xlwt。可选。在涉及输出.xls的操作中需要用到。 xlrd。可选。在涉及读取.xls的操作中需要用到。 xpinyin。可选。在本系统2.3.0版本之前的线路数据库排序中用到。 NetworkX。可选。在3.0.0版本引入的路网数据管理中,用于以图论算法计算经由给出的路径。 作者开发的另一支持库Timetable_new。该库需要使用github上的源代码安装 第三方库安装 在安装第三方库之前,需要配置好python环境,并将安装目录添加到PATH环境变量中,安装好pip库。相关教程可借助搜索引擎找到。 在shell中依次执行以下命令,无报错即可。 Timetable_new的安装 依次执行: 如果不用git,也可以在(https://github.com/CDK6182CHR/Timetable_new) 中下载并解压源代码,双击执行install.bat。 注:install.bat文件适合windows操作系统。如果是其他操作系统,请自行更改相关代码。 install.bat的代码如下。 运行 运行main.py文件即可。 项目结构 可执行文件 本项目目前有3个可执行文件。 main.py 是主程序运行入口。 LineDB.py 在2.3.0版本之后添加,是线路数据库维护系统的运行入口。 RailNetManager.py 在3.0.0版本之后添加,相对独立的路网级运行图数据库管理系统。 包结构 本项目主要依赖的是train_graph包。下面简要说明包结构。 运行图基础数据域 以下类主要用于存储数据,一般不包含与PyQt交互的过程,一般涉及文件读写。如果要基于本项目进行扩展开发,推荐直接调用这些类。自2.3.1版本开始,这部分被封装为data包(package)。 line.py 铁路线路数据对象。 trainstation.py 2.3.2版本开始新增的列车时刻表中车站类。继承dict实现,并可以按需要新增功能。 linestation.py 与trainstation.py类似,是对应Line中的车站数据。 train.py 列车对象。 ruler.py 标尺(时分标准)对象。 forbid.py 天窗数据对象。 graph.py 运行图对象,主要包括一条线路Line和一组车次Train。 circuit.py 车底交路对象。每个交路包含若干车次Train的序列,每个车次可以属于至多一个交路。 route.py 尚未开发完成的列车运行径路对象。 公共工具域 从大约2.4.0版本开始新增utility包,主要是通用的工具,以及对Qt既有组件的改进。目的在于,通过引进面向对象设计模式,提高代码复用能力。模块名、类名的前缀pe是pyETRC的简写,以区分于Q开头的Qt原生组件类。 peCellWidget.py 是对QTableWidget中的(通过setCellWidget方法设置的)单元格组件的改进。原生的CellWidget从没有包含所处的单元格位置信息,不能在其获得焦点时,同步修改tableWidget.currentItem()等属性。此模块用于解决这个问题。 其中,PECellWidget类仅对RTTI有用,暂无其他意义。请不要直接实例化这个类。请使用CellWidgetFactory.new()工厂方法创建实例控件。 peCelledTable.py与PECellWidget配套使用的支持单元格组件定位的表格。主要是重写了setCellWidget方法。 peControlledTable.py 是对需要支持增删、上下移动行的表格的封装。引进Adapter设计模式。本身继承的是QWidget,但将有关方法调用转发给内置的QTableWidget实例对象。 实例化时,也可以通过参数meta指定创建QTableWidget的某个子类实例,本项目中目前用到的是PECelledTable。 绘图域 在调用了PyQt的模块中,有一部分与底层的绘图(绘制运行线)直接相关,它们是本项目的核心,这里单独列出来。 GraphicWidget.py 核心绘图窗口。继承- - - QGraphicsWidget实现,运行图的铺画在本类中完成。 trainItem.py 列车运行线对象。包含了主要的运行线铺画逻辑。是GraphicWidget类中的图元。在2.0.0版本之后,每一趟列车(一个Train对象)允许拥有多个TrainItem对象。 停靠面板域 与运行图数据操作相关的类主要有两种形式,一是以停靠面板方式,长期显示和有效的面板;二是以对话框为主的操作交互界面。前者包含了本系统的核心操作功能,下面简要说明停靠面板类及其相关类。 circuitWidget.py 交路编辑停靠面板,快捷键为ctrl+4。 colorWidget.py 默认颜色设置面板。在1.4.0之后的版本中,被集成到运行图设置面板中。 configWidget.py 运行图设置面板。包含关于运行图铺画比例、运行图备注等设置。快捷键为ctrl+G currentWidget.py 当前车次编辑面板。包含对当前选中的列车的车次、运行线管理、时刻表编辑等功能。这是最集中的修改列车信息的面板。快捷键为ctrl+I。 forbidWidget.py 天窗编辑面板。快捷键为ctrl+1。 interactiveTimetable.py 交互式时刻表。与时刻表面板布局类似,但支持更改列车时刻表, 且更改立即生效,立即体现在运行图上。 lineWidget.py 线路编辑面板,可编辑线路名称和站表。快捷键为ctrl+X。 rulerWidget.py 标尺编辑面板。可管理标尺(增删改)。标尺数据属于线路数据的一部分,但其编辑功能是独立的。快捷键为ctrl+B。 trainTimetable.py 当前车次时刻表面板。将当前车次时刻表以只读方式、占用宽度尽量小的形式展示,建议可以长期开启的停靠面板。快捷键为ctrl+Y。 trainWidget.py 车次列表面板。展示基本的车次信息,并可增删。快捷键为ctrl+C。 typeWidget.py 显示类型面板。提供简洁的界面来快速选择显示或不显示某一类列车的运行线。快捷键为ctrl+L。 typeDialog.py 是由ConfigWidget调用的列车类型管理对话框。管理默认情况下用于识别列车种类的车次正则表达式,是否为客车。 操作窗口域 其他文件名形如*Dialog.py *Widget.py的大多数是与操作相关的窗口。下面简单说明。 mainGraphWindow.py 主窗口类。程序启动后首先产生本类实例。 batchChangeStationDialog.py 批量调整站名,快捷键为ctrl+shift+U。 changeStationDialog.py 修改站名。快捷键为ctrl+U。 changeTrainIntervalDialog.py 列车区间时刻表重排功能。快捷键为ctrl+shift+R。 correctionWidget.py 提供对当前车次时刻表重新排序的功能。快捷键为ctrl+V。 detectWidget.py 根据标尺,推定列车区间通过时刻。快捷键为ctrl+2。 exchangeIntervalDialog.py 区间换线。交换两车次指定区间的运行线。快捷键为ctrl+5。 helpDialog.py 内置的简明功能表。快捷键为F1。 importTrainDialog.py 导入车次对话框。快捷键为ctrl+D。 intervalCountDialog.py 区间对数表。快捷键为ctrl+3。 intervalTrainDialog.py 区间车次表。快捷键为ctrl+shift+3。 intervalWidget.py 当前车次区间性质计算。支持计算选定区间的停站次数,旅速等。快捷键为ctrl+shift+Q。 rulerPaint.py 标尺排图向导类。按标尺,指定开始站点和方向、各站停站时长,自动铺画运行线。这是本系统亮点功能之一。快捷键为ctrl+R。 stationTimetable.py 车站时刻表,快捷键为ctrl+E。 stationvisualize.py 车站时刻表可视化。根据车站时刻等信息,提供一种股道安排方案并可视化。 trainComparator.py 两车次时刻对照。快捷键为ctrl+shift+W。 trainDatabase.py 为导入车次功能中的相关设定提供支持。功能快捷键为ctrl+D。 graphDiffDialog.py 提供两运行图数据对比功能。2.3.2版本新增。 trainDiffDialog.py 提供两车次对比功能,主要由GraphDiffDialog调用。2.3.2版本新增。 线路数据库 2.3.0版本彻底的重构了线路数据库这个模块,因而重新设计了有关代码,写成一个包(package),名为linedb。它主要包含这些类(文件)。 category.py 线路“分类”的类。新版本的线路数据库中支持对库中的线路做任意多级别的分类,其中分类的数据部分 由本类实现。本类继承dict。 lineLib.py 是Category的派生类,在顶层分类的基础上添加了文件io部分,并作为与GUI部分通信的主要接口。 lineTreeWidget.py 对话框左侧的文件树类。继承QtWidgets.QTreeWidget实现。关于线路、类别的增删逻辑,全都在本类实现。 lineLibDialog.py 线路数据库对话框。在主界面中由ctrl+H快捷键直接打开的就是这个对话框。 路网管理模块 自3.0.0版本新增路网级数据库管理模块,简称“路网管理模块”。本模块提供比区段运行图高一个级别的运行图管理,可以直接管理线路数据库和车次数据库,并不局限于既有线路,而是可以(基于铁路网的有向图模型)导出有数据的任一区段运行图。本部分的代码构成 railnet包,从根目录下的RailNetManager.py可以运行。 考虑到NetworkX编译代价问题,目前win64发行版暂不包含这部分功能。 railnet.py 铁路网络的数据模型。主要基于第三方库NetworkX建立有向图模型,并能导出区段运行图。线路(Line)数据模型与主程序一致。 trainManager.py 车次数据库管理页面,主要显示和维护*.pyetdb文件包含的数据。 sliceManager.py 区段(切片)运行图管理页面,显示当前程序打开的所有区段运行图,并可输入经由,生成新的区段运行图。 mainNetWindow.py 路网管理模块的主窗口。 交路相关窗口 由于交路部分涉及到的窗口较多,现在将和交路有关的窗口都合并到circuitwidgets包中,除circuitWidget.py停靠面板类之外。 circuitDialog.py 单个交路数据的编辑对话框,在CircuitWidget中发起编辑操作后弹出。 circuitDiagram.py 绘制交路图的面板。在CircuitDialog中发起查看交路图操作后产生。 circuitDiagramWidget.py 绘制交路图的对话框。 ParseTextDialog.py 解析交路文本的对话框。从CircuitDialog中的按钮触发,只解析一个交路。 BatchParseCircuit.py 批量解析交路文本的对话框。对应快捷键ctrl+P。 AddTrainWidget.py 添加车次的对话框,主要是封装的外层QTabWidget。 AddRealTrain.py 添加实体车次,是AddTrainWidget中的一个页面。 AddVirtualTrain.py 添加虚拟车次,是AddTrainWidget中的一个页面。所谓虚拟车次,是指仅有车次,但不指向本线一个具体Train对象的车次,它仅仅为了保持交路完整性而存在。但如果导入了那个车次的Train对象,则可以尝试识别虚拟车次。 其他杂项 trainFilter.py 车次筛选器。在全局用快捷键ctrl+shift+L启动“高级显示车次设置”时,会调用本类。在车次编辑、车站时刻表等处也有使用。 文件格式 pyETRC依赖的数据文件全部是基于JSON格式的。所有文件,无论扩展名,都是基于UTF-8的无签名(不带BOM,否则会出错)编码。使用Python标准库json读取和写入。下面简要说明本系统的各种文件所要求的格式、内容及其生成方法。 系统文件system.json 包含上次打开的文件,系统默认运行图文件,上次关闭时的停靠面板等。一般情况下不需要手动处理。 生成方法:程序每次正常退出时都会生成。参见:mainGraphWindow.py中的函数mainGraphWindow._checkSystemSetting()。 配置文件config.json 包含用户设置的系统默认参数,例如运行图铺画大小,颜色,列车种类等。当用户新创建或者打开的运行图中不包含配置数据时,将自动使用(并复制)这一套数据。当文件缺失或某些字段缺失时,系统配置由Graph.checkSysConfig()函数补全,见graph.py。 生成方式:当程序正常运行时,用户若在“系统默认设置”(ctrl+shift+G)面板中保存数据,或者在“线路数据库”(ctrl+H)中更改默认文件时,自动保存config.json文件。 如果要手工读取,请使用Graph.readSysConfig(),手工保存请使用Graph.saveSysConfig(),调用其数据请使用Graph.sysConfigData(),该函数返回dict类型。 列车运行图文件*.pyetgr;*.json 包含列车运行图所需的所有数据,此部分的支持见graph.py。文件最核心的数据结构大致是: 最基础的数据是line和trains两个字段,分别是线路基础数据和车次数据表。前者由Line对象管理,后者由一系列Train对象管理。 如果要通过代码调用,请使用Graph.loadGraph()方法来读取文件,Graph.save()方法来保存。数据的修改、使用,请参阅Graph Line Train等数据类的类定义。 2.3.0以后版本建议车次数据库文件使用*.pyetdb后缀,但其结构与*.pyetgr的列车运行图文件是完全一致的,这意味着完全可以用pyETRC直接打开它们,但由于车次数据库往往有非常多的数据量和不完整的线路数据,打开它们通常是很慢且没有意义的过程,故新版本中予以区分。 线路数据库文件*.pyetlib;*.json 这里只介绍2.3.0以后版本所用的线路数据库文件。新版本可以读取老版本的文件,但反之一般不行。线路数据库文件为任意多级嵌套的js对象,或者Python字典。字段名是分类名或者线名,而字段值属于一条线,当且仅当它存在str类型的name字段和list类型的stations字段。这意味着,如果在同一个分类下给两个子线路或者分类其名为"name"和"stations",将导致不可预知的后果。 正常运行时,使用“线路数据库”(ctrl+H)功能中的“保存”将创建或者保存*.pyetlib文件。 如果要通过代码操作,相关支持在linedb/lineLib.py文件中。使用LineLib.loadLib()方法来读取文件,使用LineLib.saveLib()方法来保存文件;更多具体的操作,请阅读lineLib.py和category.py的源代码。 网络模块工作区配置文件*.pnconf 在3.0.0版本后添加的网络数据库管理模块中使用。保存的是工作区配置的信息,具体包括: 打开的线路数据库文件名(*.pyetlib) 打开的车次数据库文件名(*.pyetdb) 打开的所有运行图切片的经由表。 但不会包含上述信息里的具体内容。 也就是说,只记录线路数据库文件名,但不包含线路数据库的内容。 一般情况下,没有必要编程处理这种数据格式。 转载自:https://github.com/CDK6182CHR/train_graph#%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6configjson

资源

基于LSTM的股票数据分析

准备数据 使用的是Tushare(Tushare金融大数据社区)的股票数据。主要使用其中的两项数据功能,每只股的“日线行情”和“每日指标”。把股票数据按主板、创业板、中小板分类下载共3500+只股票数据。(原则:同一只股票的数据特征相似性更高;同一板块的股票数据特征相似性更高。个股数据量太少,不太适合训练。) 代码参照download.py 对应股票、交易日期,把这两项数据合并成在一起,最原始的数据集就准备好了。 代码参照merge.py 根据个人的需求,选取想要的数据集进行训练,此为训练数据。比如:连续两天涨停的数据,作为一条训练数据;一天涨停的数据,作为一条训练数据;连续两天涨幅超过5%的数据,作为一条训练数据。(本项目的思路:1.通过N天的股票数据,预测N+1天的股票涨幅;2.不是每一个N天的股票数据,对N+1天的数据有很好的预测效果,所以需要关心的是:有很强“表现力”的N天数据,即连续涨停、连续涨幅超过5%等等;3.N天数据没有太明显表现特征,那对有明显表现特征数据来说就是噪音,噪音越多越大,对预测越不利) 代码参照chose.py 网络结构选取 选取合适的网络结构,事半功倍。在图像识别领域有很多成熟的网络结构(比如:VGG等),但是在股票领域,就需要去尝试。 1.本项目用DNN和LSTM相互做了对比,DNN对于股票数据的模型表现比较差。 2.LSTM中basicLSTMCell()单元层也可以选择不同的层数,在训练数据量足够的情况下,多层LSTM效果稍微比单层LSTM效果好,大概正确率会高1%-2%;但是LSTM不是越多越好,当LSTM层数过多时,会导致同一个batch数据的输出结果完全相同。 3.在LSTM层后面接入全连接层或者激活层,并没有给实验数据带来改观。 4.LSTM是针对时序性的数据效果表现比较突出(N个time_step),据实验:在1个time_step的情况下,LSTM的性能也比DNN表现更为突出;实验数据来自MNIST。 5.在使用LSTM时,建议把forget_bias(忘记系数)设置为0.5,能一定程度上防止overfitting。 数据反筛选 思路: 股票数据,影响其波动的因子太多,所以需要找出受相同因子影响较高的数据。 训练模型,根据模型数据,去除据偏离模型较远的个股数据。再用剩余数据训练模型,可以得到较高的拟合程度。根据本项目测试:2014年以前的个股数据,和2014年以后的个股数据,具有明显不一致特征。(具体原因不明)所以在训练数据集中,去除了2014年以前的股票数据。同时,筛选出不适合模型的个股。以上两点可以极大地提高训练模型的正确率。比如:创业板共有738只股票,去除不适合模型的378只股票,预测正确率可以达到80%-90%之间。 影响股票波动的因子太多,就不要妄想实现一个模型,可以预测整个股市。能预测其中一部分股票数据,已实属不易。 实验结果 1.调参是一个比较痛苦的过程:learningrate从100-0.0000001进行了测试;batch_size从8-200进行了测试;网络层数layers从1-30层进行了测试;由于硬件环境有限,最后选取了batch_size=16,learning_rate=0.001,layers=1作为模型的超参。(只有不断调试,查看结果,才能得到想要的超参) 2.不同数据集,正确率和损失率有很大不同。在创业板300+只股票数据中,LSTM模型正确率可高达88.97%,损失率可以低至3.64%。在主板股票数据中,正确率为77.53%,损失率为7.97%。在中小板数据中,正确率为76.81%,损失率为8.63%。 正确率:预测结果正确数 / 测试数据总数 * 100% 损失率:(预测涨幅为正 and 实际涨幅为负) / 测试数据总数 * 100% 项目中遇到过的问题: 大部问题都能通过网上搜索找到解决办法: 1.在训练过程中,损失函数为几个固定值或者权重值W出现Nan(无穷大),可能是W初始化值不正确(建议不要全部初始化为“0”),也可能是训练输入数据没有标准化。 2.训练数据的时序性,一定要正确,如果时序性顺序刚好相反,会导致正确率达到100%。 另外一个问题,目前没有找到解决办法: LSTM使用过程中,不是layers层数越多越好,数据太多,会导致同一个batch数据的输出结果完全相同。上文已经说过一遍 调整网络结果和参数过程中总结的一些数据: 1.在数据量有限的DNN中,有没有dropout对实验结构影响不大。 2.优化函数: 以AdamOptimizer()为参考对象——AdamOptimizer()的优化速度值为:2;GradientDescentOptimizer()优化速度值为:0.02; MomentumOptimizer()优化速度值为:0.2;AdadeltaOptimizer()优化速度值为:0.002; RMSPropOptimizer()优化速度值为:3。 3.学习率并非越小越好,而是保证损失函数尽可能低的情况下,提高学习率,已增加学习速度。 4.在数据预测结果表现方面:2连涨停的数据特征更明显,更易得到较好的预测效果;2连涨幅超过5%的预测效果不是最好的,但是它的损失率却最低。 转载自:https://github.com/pengxungui/LSTM_stock

资源

基于OpenGL仿微博实现全景图浏览(IOS)

VR全景套件 一款基于OpenGL渲染的全景图查看器,实现陀螺仪旋转全景图,手动移动和放大全景图。实现了类似微博全景图的功能。 使用方法: 添加OpenGLES.framework框架到项目中 将PanoramaView文件复制到你的目录中 将要显示的图片添加到bundle中(这里可以自己扩展,例如保存到沙盒中) 主要方法 AppDelegate中的示例: 结果展示 转载自:https://github.com/451518849/VRPanoramaKit

  • 1
  • 101
  • 102
  • 103
  • 168
前往