电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

用图机器学习探索 A 股个股相关性变化

32页
  • 卖家[上传人]:Baige****0346
  • 文档编号:266122698
  • 上传时间:2022-03-14
  • 文档格式:DOCX
  • 文档大小:2.84MB
  • / 32 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、 用图机器学习探索 A 股个股相关性变化 在本系列的前文 1,2 中,我们介绍了如何使用 Python 语言图分析库 NetworkX 3 + Nebula Graph 4 来进行中人物关系图谱分析。在本文中我们将介绍如何使用 Java 语言的图分析库 JGraphT 5 并借助绘图库 mxgraph 6 ,可视化探索 A 股的 行业个股的相关性随时间的变化情况 。JGraphT 数据集的处理本文主要分析方法参考了 7,8 ,有两种数据集:股票数据(点集)从 A 股中按股票代码顺序选取了 160 只股票(排除摘牌或者 ST 的)。每一支股票都被建模成一个点,每个点的属性有股票代码,股票名称,以及证监会对该股票对应上市公司所属板块分类等三种属性;表1:点集示例顶点id股票代码股票名称所属板块1SZ0001平安银行金融行业2600000浦发银行金融行业3600004白云机场交通运输4600006东风汽车汽车制造5600007中国国贸开发区6600008首创股份环保行业7600009上海机场交通运输8600010包钢股份钢铁行业股票关系(边集)边只有一个属性,即权重。边的权重代表边的源点和目

      2、标点所代表的两支股票所属上市公司业务上的的相似度相似度的具体计算方法参考 7,8 :取一段时间(2014 年 1 月 1 日 - 2020 年 1 月 1 日)内,个股的日收益率的时间序列相关性 再定义个股之间的距离为 (也即两点之间的边权重):通过这样的处理,距离取值范围为 0,2 。 这意味着距离越远的个股,两个之间的收益率相关性越低 。表2: 边集示例边的源点 ID边的目标点 ID边的权重11120.49325796822830.51702751323780.6062062332120.6536924151110.6776314821270.6957051711120.711243442110.735819158180.77155645812270.7850464469200.78960652711270.79600962725630.79721834925720.799230001631150.803534952这样的点集和边集构成一个图网络,可以将这个网络存储在图数据库 Nebula Graph 中。JGraphTJGraphT 是一个开放源代码的 Java 类库,它不仅为我

      3、们提供了各种高效且通用的图数据结构,还为解决最常见的图问题提供了许多有用的算法: 支持有向边、无向边、权重边、非权重边等; 支持简单图、多重图、伪图; 提供了用于图遍历的专用迭代器(DFS,BFS)等; 提供了大量常用的的图算法,如路径查找、同构检测、着色、公共祖先、游走、连通性、匹配、循环检测、分区、切割、流、中心性等算法; 可以方便地导入 / 导出 GraphViz 9 。导出的 GraphViz 可被导入可视化工具 Gephi 10 进行分析与展示; 可以方便地使用其他绘图组件,如:JGraphX,mxGraph,Guava Graphs Generators 等工具绘制出图网络。下面,我们来实践一把,先在 JGraphT 中创建一个有向图: import org.jgrapht.*; import org.jgrapht.graph.*; import org.jgrapht.nio.*; import org.jgrapht.nio.dot.*; import org.jgrapht.traverse.*; import java.io.*; import .*; impor

      4、t java.util.*; Graph g = new DefaultDirectedGraph ( DefaultEdge . class );添加顶点: URI google = new URI ( ); URI wikipedia = new URI ( http:/www.wikipedia.org ); URI jgrapht = new URI ( http:/www.jgrapht.org ); / add the vertices g . addVertex (google); g . addVertex (wikipedia); g . addVertex (jgrapht);添加边: / add edges to create linking structure g . addEdge (jgrapht, wikipedia); g . addEdge (google, jgrapht); g . addEdge (google, wikipedia); g . addEdge (wikipedia, google);图数据库 Nebula Graph Datab

      5、aseJGraphT 通常使用本地文件作为数据源,这在静态网络研究的时候没什么问题,但如果图网络经常会发生变化例如,股票数据每日都在变化每次生成全新的静态文件再加载分析就有些麻烦,最好整个变化过程可以持久化地写入一个数据库中,并且可以实时地直接从数据库中加载子图或者全图做分析。本文选用 Nebula Graph 作为存储图数据的图数据库。Nebula Graph 的 Java 客户端 Nebula-Java 11 提供了两种访问 Nebula Graph 方式 :一种是 通过图查询语言 nGQL 12 与查询引擎层 13 交互,这通常适用于有复杂语义的子图访问类型 ; 另一种是通过 API 与底层的存储层(storaged) 14 直接交互,用于获取全量的点和边 。除了可以访问 Nebula Graph 本身外, Nebula-Java 还提供了与 Neo4j 15 、JanusGraph 16 、Spark 17 等交互的示例 。在本文中, 我们选择直接访问存储层(storaged)来获取全部的点和边 。下面两个接口可以用来读取所有的点、边数据: / space 为待扫描的图空间名称

      6、,returnCols 为需要读取的点/边及其属性列, / returnCols 参数格式:tag1Name: prop1, prop2, tag2Name: prop3, prop4, prop5 Iterator scanVertex ( String space, Map returnCols); Iterator scanEdge ( String space, Map returnCols);第一步:初始化一个客户端,和一个 ScanVertexProcessor。ScanVertexProcessor 用来对读出来的顶点数据进行解码: MetaClientImpl metaClientImpl = new MetaClientImpl (metaHost, metaPort); metaClientImpl . connect (); StorageClient storageClient = new StorageClientImpl (metaClientImpl); Processor processor = new ScanVertexProcessor (meta

      7、ClientImpl);第二步:调用 scanVertex 接口,该接口会返回一个 scanVertexResponse 对象的迭代器: Iterator iterator = storageClient . scanVertex (spaceName, returnCols);第三步:不断读取该迭代器所指向的 scanVertexResponse 对象中的数据,直到读取完所有数据。读取出来的顶点数据先保存起来,后面会将其添加到到 JGraphT 的图结构中: while ( iterator . hasNext () ScanVertexResponse response = iterator . next (); if (response = null ) log . error ( Error occurs while scan vertex ); break ; Result result = processor . process (spaceName, response); results . addAll ( result . getRows (TAGNAME);读取边数

      8、据的方法和上面的流程类似。在 JGraphT 中进行图分析第一步:在 JGraphT 中创建一个无向加权图 graph: Graph graph = GraphTypeBuilder. undirected (). weighted ( true ). allowingMultipleEdges ( true ). allowingSelfLoops ( false ). vertexSupplier ( SupplierUtil . createStringSupplier (). edgeSupplier ( SupplierUtil . createSupplier ( MyEdge . class ). buildGraph ();第二步:将上一步从 Nebula Graph 图空间中读出来的点、边数据添加到 graph 中: for ( VertexDomain vertex : vertexDomainList) graph . addVertex ( vertex . getVid (). toString (); stockIdToName . put ( vertex . getVid (). toString (), vertex); for ( EdgeDomain edgeDomain : edgeDomainList) graph . addEdge ( edgeDomain . getSrcid (). toString (), edgeDomain . getDstid (). toString (); MyEdge newEdge = graph . getEdge ( edgeDomain . getSrcid (). toString (), edgeDomain . g

      《用图机器学习探索 A 股个股相关性变化》由会员Baige****0346分享,可在线阅读,更多相关《用图机器学习探索 A 股个股相关性变化》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.