书籍详情
Neo4j图谱分析实战
作者:[美]埃斯特尔·赛弗 著
出版社:清华大学出版社
出版时间:2022-10-01
ISBN:9787302617600
定价:¥139.00
购买这本书可以去
内容简介
《Neo4j图谱分析实战 》详细阐述了与Neo4j图谱分析相关的基本解决方案,主要包括使用Neo4j进行图建模、图算法、基于图的机器学习、生产环境中的Neo4j等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。 本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。
作者简介
暂缺《Neo4j图谱分析实战》作者简介
目录
第1篇 使用Neo4j进行图建模
第1章 图数据库 3
1.1 图的定义和示例 3
1.1.1 图论 4
1.1.2 图的示例 7
1.2 从SQL迁移到图数据库 12
1.2.1 数据库模型 12
1.2.2 SQL和连接 13
1.2.3 关系关乎一切 15
1.3 关于Neo4j 15
1.3.1 构建块 16
1.3.2 从SQL到Neo4j的转换 18
1.3.3 Neo4j用例 19
1.4 理解图属性 19
1.4.1 有向图与无向图 19
1.4.2 加权图与无权图 20
1.4.3 有环图与无环图 21
1.4.4 稀疏图与稠密图 21
1.4.5 连通图与断开图 22
1.5 在Neo4j中对图进行建模的注意事项 23
1.5.1 关系取向 23
1.5.2 节点和属性的区别 24
1.6 小结 24
1.7 延伸阅读 25
第2章 Cypher查询语言 27
2.1 技术要求 27
2.2 创建节点和关系 28
2.2.1 使用Neo4j Desktop管理数据库 28
2.2.2 创建节点 29
2.2.3 选择节点 31
2.2.4 创建关系 32
2.2.5 选择关系 33
2.2.6 MERGE关键字 34
2.3 更新和删除节点和关系 35
2.3.1 更新对象 35
2.3.2 删除对象 37
2.4 模式匹配和数据检索 38
2.4.1 模式匹配 39
2.4.2 测试数据 40
2.4.3 图遍历 41
2.4.4 可选匹配 43
2.5 使用聚合函数 44
2.5.1 计数、求和和平均值 44
2.5.2 创建对象列表 45
2.5.3 取消嵌套对象 45
2.6 从CSV或JSON导入数据 46
2.6.1 从Cypher导入数据 46
2.6.2 从命令行导入数据 53
2.6.3 APOC导入工具 54
2.6.4 导入方法小结 60
2.7 评估性能并提高查询速度 60
2.7.1 Cypher查询计划器 60
2.7.2 Neo4j索引 62
2.7.3 关于LOAD CSV的再讨论 62
2.7.4 “朋友的朋友”示例 64
2.8 小结 66
2.9 思考题 66
2.10 延伸阅读 67
第3章 使用纯Cypher 69
3.1 技术要求 69
3.2 知识图 70
3.2.1 尝试给知识图一个定义 70
3.2.2 从结构化数据构建知识图 71
3.2.3 使用NLP从非结构化数据构建知识图 72
3.2.4 从Wikidata向知识图添加上下文 78
3.2.5 通过语义图增强知识图 85
3.3 基于图的搜索 86
3.3.1 搜索方法 87
3.3.2 手动建立Cypher查询 89
3.3.3 自动实现从英语到Cypher的翻译 89
3.4 推荐引擎 94
3.4.1 产品相似性推荐 95
3.4.2 社交推荐 98
3.5 小结 100
3.6 思考题 100
3.7 延伸阅读 100
第2篇 图 算 法
第4章 Graph Data Science库和路径查找 105
4.1 技术要求 105
4.2 关于GDS插件 106
4.2.1 使用自定义函数和过程扩展Neo4j 106
4.2.2 GDS库内容 108
4.2.3 定义投影图 109
4.2.4 将结果流式传输或写回到图 112
4.3 通过应用了解短路径算法的重要性 114
4.3.1 网络内的路由 114
4.3.2 其他应用 115
4.4 迪杰斯特拉短路径算法 115
4.4.1 理解算法 116
4.4.2 在Neo4j中使用短路径算法 124
4.4.3 理解关系方向 130
4.5 使用A*算法查找短路径 133
4.5.1 算法原理 133
4.5.2 在Neo4j GDS插件中使用A*算法 134
4.6 在GDS插件中发现其他与路径相关的算法 135
4.6.1 K条短路径算法 135
4.6.2 单源短路径算法 136
4.6.3 全对短路径算法 138
4.7 使用图优化流程 139
4.7.1 旅行商问题 140
4.7.2 生成树 141
4.8 小结 145
4.9 思考题 145
4.10 延伸阅读 146
第5章 空间数据 147
5.1 技术要求 147
5.2 表示空间属性 148
5.2.1 理解地理坐标系 148
5.2.2 使用Neo4j内置的空间类型 151
5.3 使用neo4j-spatial在Neo4j中创建几何层 154
5.3.1 引入neo4j-spatial库 154
5.3.2 创建点的空间层 156
5.3.3 定义空间数据的类型 157
5.3.4 创建包含多边形几何体的层 157
5.4 执行空间查询 160
5.4.1 寻找两个空间对象之间的距离 160
5.4.2 查找其他对象中包含的对象 161
5.5 根据距离查找短路径 162
5.5.1 导入数据 162
5.5.2 准备数据 164
5.5.3 运行短路径算法 166
5.6 使用Neo4j可视化空间数据 171
5.6.1 NeoMap—用于空间数据的Neo4j Desktop应用程序 172
5.6.2 使用JavaScript Neo4j驱动程序可视化短路径 174
5.7 小结 178
5.8 思考题 179
5.9 延伸阅读 179
第6章 节点重要性 181
6.1 技术要求 181
6.2 定义重要性 182
6.2.1 受欢迎程度和信息传播 182
6.2.2 关键或桥接节点 183
6.3 计算度中心性 184
6.3.1 度中心性公式 184
6.3.2 在Neo4j中计算度中心性 186
6.4 理解PageRank算法 190
6.4.1 构建公式 190
6.4.2 在示例图上运行算法 192
6.4.3 使用Python实现PageRank算法 194
6.4.4 在Neo4j中使用GDS评估PageRank中心性 196
6.4.5 比较度中心性和PageRank结果 196
6.4.6 变体 197
6.5 基于路径的中心性指标 201
6.5.1 接近度中心性 202
6.5.2 中介中心性 205
6.5.3 比较中心性指标 206
6.6 将中心性算法应用于欺诈检测 208
6.6.1 使用Neo4j检测欺诈 208
6.6.2 使用中心性指标评估欺诈 209
6.6.3 中心性算法的其他应用 212
6.7 小结 213
6.8 思考题 213
6.9 延伸阅读 213
第7章 社区检测和相似性度量 215
7.1 技术要求 215
7.2 社区检测及其应用 216
7.2.1 识别节点聚类 216
7.2.2 社区检测方法的应用 217
7.2.3 社区检测技术的简单总结 219
7.3 检测图组件并可视化社区 220
7.3.1 弱连接组件 222
7.3.2 强连接组件 223
7.3.3 在图中写入GDS结果 224
7.3.4 使用neovis.js可视化图 226
7.3.5 使用NEuler 228
7.4 运行标签传播算法 231
7.4.1 定义标签传播 231
7.4.2 在Python中实现标签传播 233
7.4.3 使用GDS中的标签传播算法 235
7.4.4 将结果写入图 237
7.5 了解Louvain算法 238
7.5.1 定义模块度 238
7.5.2 重现Louvain算法的步骤 240
7.5.3 GDS中的Louvain算法 241
7.5.4 中间步骤 243
7.5.5 Zachary的空手道俱乐部图算法比较示例 244
7.6 Louvain算法的局限性和重叠社区检测 245
7.6.1 Louvain算法的局限性 245
7.6.2 Louvain算法的替代方案 247
7.6.3 重叠社区检测 247
7.6.4 动态网络 248
7.7 测量节点之间的相似性 249
7.7.1 基于集合的相似性 249
7.7.2 基于向量的相似性 253
7.8 小结 255
7.9 思考题 256
7.10 延伸阅读 256
第3篇 基于图的机器学习
第8章 在机器学习中使用基于图的特征 259
8.1 技术要求 259
8.2 构建数据科学项目 260
8.2.1 问题定义—提出正确的问题 261
8.2.2 本章引入的问题 263
8.2.3 获取和清洗数据 263
8.2.4 特征工程 273
8.2.5 构建模型 274
8.3 基于图的机器学习步骤 278
8.3.1 建立(知识)图 279
8.3.2 提取基于图的特征 284
8.4 通过Pandas和scikit-learn使用基于图的特征 285
8.4.1 创建投影图 285
8.4.2 运行一种或多种算法 286
8.4.3 删除投影图 286
8.4.4 提取数据 286
8.5 使用Neo4j Python驱动程序自动创建基于图的特征 287
8.5.1 发现Neo4j Python驱动程序 287
8.5.2 使用Python自动创建基于图的特征 290
8.5.3 将数据从Neo4j导出到Pandas 296
8.5.4 训练scikit-learn模型 298
8.6 小结 301
8.7 思考题 302
8.8 延伸阅读 302
第9章 预测关系 303
9.1 技术要求 303
9.2 使用链接预测的原因 304
9.2.1 动态图 304
9.2.2 应用领域 305
9.3 使用Neo4j创建链接预测指标 309
9.3.1 基于社区的指标 310
9.3.2 与路径相关的指标 311
9.3.3 使用局部邻居信息 313
9.3.4 其他指标 315
9.4 使用ROC曲线建立链接预测模型 315
9.4.1 将数据导入Neo4j 316
9.4.2 拆分图并计算每条边的分数 317
9.4.3 衡量二元分类模型的性能 318
9.4.4 使用scikit-learn建立更复杂的模型 329
9.4.5 将链接预测结果保存到Neo4j中 329
9.4.6 预测二分图中的关系 330
9.5 小结 334
9.6 思考题 334
9.7 延伸阅读 334
第10章 图嵌入—从图到矩阵 337
10.1 技术要求 337
10.2 关于图嵌入 338
10.2.1 嵌入的意义 338
10.2.2 图嵌入技术概述 343
10.3 基于邻接矩阵的嵌入算法 344
10.3.1 邻接矩阵和图拉普拉斯算子 345
10.3.2 特征向量嵌入 345
10.3.3 局部线性嵌入 345
10.3.4 基于相似度的嵌入 346
10.3.5 高阶邻近保留嵌入 346
10.3.6 使用Python计算节点嵌入向量 347
10.4 从人工神经网络中提取嵌入向量 351
10.4.1 人工神经网络简介 351
10.4.2 Skip-Gram模型 354
10.4.3 DeepWalk节点嵌入算法 357
10.5 图神经网络 362
10.5.1 扩展CNN和RNN的原理以构建GNN 362
10.5.2 消息传播和汇总 363
10.5.3 GNN的应用 364
10.5.4 在实践中使用GNN 366
10.6 图算法的发展 367
10.7 小结 368
10.8 思考题 369
10.9 延伸阅读 369
第4篇 生产环境中的Neo4j
第11章 在Web应用程序中使用Neo4j 373
11.1 技术要求 373
11.2 使用Python和图对象映射器创建全栈Web应用程序 373
11.2.1 关于neomodel 374
11.2.2 使用Flask和neomodel构建Web应用程序 379
11.3 通过示例了解GraphQL API 388
11.3.1 端点 389
11.3.2 返回的属性 390
11.3.3 查询参数 391
11.3.4 突变 393
11.4 使用GRANDstack开发React应用程序 394
11.4.1 关于GRANDstack 394
11.4.2 创建API 395
11.4.3 关于突变 399
11.4.4 构建用户界面 402
11.5 小结 410
11.6 思考题 410
11.7 延伸阅读 411
第12章 Neo4j扩展 413
12.1 技术要求 413
12.2 衡量GDS性能 413
12.2.1 通过估算过程估算内存使用量 414
12.2.2 估计算法的内存使用量 416
12.2.3 使用stats运行模式 417
12.2.4 测量某些算法的时间性能 417
12.3 为大数据配置Neo4j 4.0 418
12.3.1 Neo4j 4.0之前的设置 418
12.3.2 Neo4j 4.0分片技术 419
12.4 小结 423
第1章 图数据库 3
1.1 图的定义和示例 3
1.1.1 图论 4
1.1.2 图的示例 7
1.2 从SQL迁移到图数据库 12
1.2.1 数据库模型 12
1.2.2 SQL和连接 13
1.2.3 关系关乎一切 15
1.3 关于Neo4j 15
1.3.1 构建块 16
1.3.2 从SQL到Neo4j的转换 18
1.3.3 Neo4j用例 19
1.4 理解图属性 19
1.4.1 有向图与无向图 19
1.4.2 加权图与无权图 20
1.4.3 有环图与无环图 21
1.4.4 稀疏图与稠密图 21
1.4.5 连通图与断开图 22
1.5 在Neo4j中对图进行建模的注意事项 23
1.5.1 关系取向 23
1.5.2 节点和属性的区别 24
1.6 小结 24
1.7 延伸阅读 25
第2章 Cypher查询语言 27
2.1 技术要求 27
2.2 创建节点和关系 28
2.2.1 使用Neo4j Desktop管理数据库 28
2.2.2 创建节点 29
2.2.3 选择节点 31
2.2.4 创建关系 32
2.2.5 选择关系 33
2.2.6 MERGE关键字 34
2.3 更新和删除节点和关系 35
2.3.1 更新对象 35
2.3.2 删除对象 37
2.4 模式匹配和数据检索 38
2.4.1 模式匹配 39
2.4.2 测试数据 40
2.4.3 图遍历 41
2.4.4 可选匹配 43
2.5 使用聚合函数 44
2.5.1 计数、求和和平均值 44
2.5.2 创建对象列表 45
2.5.3 取消嵌套对象 45
2.6 从CSV或JSON导入数据 46
2.6.1 从Cypher导入数据 46
2.6.2 从命令行导入数据 53
2.6.3 APOC导入工具 54
2.6.4 导入方法小结 60
2.7 评估性能并提高查询速度 60
2.7.1 Cypher查询计划器 60
2.7.2 Neo4j索引 62
2.7.3 关于LOAD CSV的再讨论 62
2.7.4 “朋友的朋友”示例 64
2.8 小结 66
2.9 思考题 66
2.10 延伸阅读 67
第3章 使用纯Cypher 69
3.1 技术要求 69
3.2 知识图 70
3.2.1 尝试给知识图一个定义 70
3.2.2 从结构化数据构建知识图 71
3.2.3 使用NLP从非结构化数据构建知识图 72
3.2.4 从Wikidata向知识图添加上下文 78
3.2.5 通过语义图增强知识图 85
3.3 基于图的搜索 86
3.3.1 搜索方法 87
3.3.2 手动建立Cypher查询 89
3.3.3 自动实现从英语到Cypher的翻译 89
3.4 推荐引擎 94
3.4.1 产品相似性推荐 95
3.4.2 社交推荐 98
3.5 小结 100
3.6 思考题 100
3.7 延伸阅读 100
第2篇 图 算 法
第4章 Graph Data Science库和路径查找 105
4.1 技术要求 105
4.2 关于GDS插件 106
4.2.1 使用自定义函数和过程扩展Neo4j 106
4.2.2 GDS库内容 108
4.2.3 定义投影图 109
4.2.4 将结果流式传输或写回到图 112
4.3 通过应用了解短路径算法的重要性 114
4.3.1 网络内的路由 114
4.3.2 其他应用 115
4.4 迪杰斯特拉短路径算法 115
4.4.1 理解算法 116
4.4.2 在Neo4j中使用短路径算法 124
4.4.3 理解关系方向 130
4.5 使用A*算法查找短路径 133
4.5.1 算法原理 133
4.5.2 在Neo4j GDS插件中使用A*算法 134
4.6 在GDS插件中发现其他与路径相关的算法 135
4.6.1 K条短路径算法 135
4.6.2 单源短路径算法 136
4.6.3 全对短路径算法 138
4.7 使用图优化流程 139
4.7.1 旅行商问题 140
4.7.2 生成树 141
4.8 小结 145
4.9 思考题 145
4.10 延伸阅读 146
第5章 空间数据 147
5.1 技术要求 147
5.2 表示空间属性 148
5.2.1 理解地理坐标系 148
5.2.2 使用Neo4j内置的空间类型 151
5.3 使用neo4j-spatial在Neo4j中创建几何层 154
5.3.1 引入neo4j-spatial库 154
5.3.2 创建点的空间层 156
5.3.3 定义空间数据的类型 157
5.3.4 创建包含多边形几何体的层 157
5.4 执行空间查询 160
5.4.1 寻找两个空间对象之间的距离 160
5.4.2 查找其他对象中包含的对象 161
5.5 根据距离查找短路径 162
5.5.1 导入数据 162
5.5.2 准备数据 164
5.5.3 运行短路径算法 166
5.6 使用Neo4j可视化空间数据 171
5.6.1 NeoMap—用于空间数据的Neo4j Desktop应用程序 172
5.6.2 使用JavaScript Neo4j驱动程序可视化短路径 174
5.7 小结 178
5.8 思考题 179
5.9 延伸阅读 179
第6章 节点重要性 181
6.1 技术要求 181
6.2 定义重要性 182
6.2.1 受欢迎程度和信息传播 182
6.2.2 关键或桥接节点 183
6.3 计算度中心性 184
6.3.1 度中心性公式 184
6.3.2 在Neo4j中计算度中心性 186
6.4 理解PageRank算法 190
6.4.1 构建公式 190
6.4.2 在示例图上运行算法 192
6.4.3 使用Python实现PageRank算法 194
6.4.4 在Neo4j中使用GDS评估PageRank中心性 196
6.4.5 比较度中心性和PageRank结果 196
6.4.6 变体 197
6.5 基于路径的中心性指标 201
6.5.1 接近度中心性 202
6.5.2 中介中心性 205
6.5.3 比较中心性指标 206
6.6 将中心性算法应用于欺诈检测 208
6.6.1 使用Neo4j检测欺诈 208
6.6.2 使用中心性指标评估欺诈 209
6.6.3 中心性算法的其他应用 212
6.7 小结 213
6.8 思考题 213
6.9 延伸阅读 213
第7章 社区检测和相似性度量 215
7.1 技术要求 215
7.2 社区检测及其应用 216
7.2.1 识别节点聚类 216
7.2.2 社区检测方法的应用 217
7.2.3 社区检测技术的简单总结 219
7.3 检测图组件并可视化社区 220
7.3.1 弱连接组件 222
7.3.2 强连接组件 223
7.3.3 在图中写入GDS结果 224
7.3.4 使用neovis.js可视化图 226
7.3.5 使用NEuler 228
7.4 运行标签传播算法 231
7.4.1 定义标签传播 231
7.4.2 在Python中实现标签传播 233
7.4.3 使用GDS中的标签传播算法 235
7.4.4 将结果写入图 237
7.5 了解Louvain算法 238
7.5.1 定义模块度 238
7.5.2 重现Louvain算法的步骤 240
7.5.3 GDS中的Louvain算法 241
7.5.4 中间步骤 243
7.5.5 Zachary的空手道俱乐部图算法比较示例 244
7.6 Louvain算法的局限性和重叠社区检测 245
7.6.1 Louvain算法的局限性 245
7.6.2 Louvain算法的替代方案 247
7.6.3 重叠社区检测 247
7.6.4 动态网络 248
7.7 测量节点之间的相似性 249
7.7.1 基于集合的相似性 249
7.7.2 基于向量的相似性 253
7.8 小结 255
7.9 思考题 256
7.10 延伸阅读 256
第3篇 基于图的机器学习
第8章 在机器学习中使用基于图的特征 259
8.1 技术要求 259
8.2 构建数据科学项目 260
8.2.1 问题定义—提出正确的问题 261
8.2.2 本章引入的问题 263
8.2.3 获取和清洗数据 263
8.2.4 特征工程 273
8.2.5 构建模型 274
8.3 基于图的机器学习步骤 278
8.3.1 建立(知识)图 279
8.3.2 提取基于图的特征 284
8.4 通过Pandas和scikit-learn使用基于图的特征 285
8.4.1 创建投影图 285
8.4.2 运行一种或多种算法 286
8.4.3 删除投影图 286
8.4.4 提取数据 286
8.5 使用Neo4j Python驱动程序自动创建基于图的特征 287
8.5.1 发现Neo4j Python驱动程序 287
8.5.2 使用Python自动创建基于图的特征 290
8.5.3 将数据从Neo4j导出到Pandas 296
8.5.4 训练scikit-learn模型 298
8.6 小结 301
8.7 思考题 302
8.8 延伸阅读 302
第9章 预测关系 303
9.1 技术要求 303
9.2 使用链接预测的原因 304
9.2.1 动态图 304
9.2.2 应用领域 305
9.3 使用Neo4j创建链接预测指标 309
9.3.1 基于社区的指标 310
9.3.2 与路径相关的指标 311
9.3.3 使用局部邻居信息 313
9.3.4 其他指标 315
9.4 使用ROC曲线建立链接预测模型 315
9.4.1 将数据导入Neo4j 316
9.4.2 拆分图并计算每条边的分数 317
9.4.3 衡量二元分类模型的性能 318
9.4.4 使用scikit-learn建立更复杂的模型 329
9.4.5 将链接预测结果保存到Neo4j中 329
9.4.6 预测二分图中的关系 330
9.5 小结 334
9.6 思考题 334
9.7 延伸阅读 334
第10章 图嵌入—从图到矩阵 337
10.1 技术要求 337
10.2 关于图嵌入 338
10.2.1 嵌入的意义 338
10.2.2 图嵌入技术概述 343
10.3 基于邻接矩阵的嵌入算法 344
10.3.1 邻接矩阵和图拉普拉斯算子 345
10.3.2 特征向量嵌入 345
10.3.3 局部线性嵌入 345
10.3.4 基于相似度的嵌入 346
10.3.5 高阶邻近保留嵌入 346
10.3.6 使用Python计算节点嵌入向量 347
10.4 从人工神经网络中提取嵌入向量 351
10.4.1 人工神经网络简介 351
10.4.2 Skip-Gram模型 354
10.4.3 DeepWalk节点嵌入算法 357
10.5 图神经网络 362
10.5.1 扩展CNN和RNN的原理以构建GNN 362
10.5.2 消息传播和汇总 363
10.5.3 GNN的应用 364
10.5.4 在实践中使用GNN 366
10.6 图算法的发展 367
10.7 小结 368
10.8 思考题 369
10.9 延伸阅读 369
第4篇 生产环境中的Neo4j
第11章 在Web应用程序中使用Neo4j 373
11.1 技术要求 373
11.2 使用Python和图对象映射器创建全栈Web应用程序 373
11.2.1 关于neomodel 374
11.2.2 使用Flask和neomodel构建Web应用程序 379
11.3 通过示例了解GraphQL API 388
11.3.1 端点 389
11.3.2 返回的属性 390
11.3.3 查询参数 391
11.3.4 突变 393
11.4 使用GRANDstack开发React应用程序 394
11.4.1 关于GRANDstack 394
11.4.2 创建API 395
11.4.3 关于突变 399
11.4.4 构建用户界面 402
11.5 小结 410
11.6 思考题 410
11.7 延伸阅读 411
第12章 Neo4j扩展 413
12.1 技术要求 413
12.2 衡量GDS性能 413
12.2.1 通过估算过程估算内存使用量 414
12.2.2 估计算法的内存使用量 416
12.2.3 使用stats运行模式 417
12.2.4 测量某些算法的时间性能 417
12.3 为大数据配置Neo4j 4.0 418
12.3.1 Neo4j 4.0之前的设置 418
12.3.2 Neo4j 4.0分片技术 419
12.4 小结 423
猜您喜欢