一. 相关知识
(一) PageRank 算法
PageRank 算法是 google 公司的创始人拉里·佩奇和谢尔·盖布林于1998年提出的网页搜索优化算法.
详细内容请见百度百科: google pagerank.
如果你了解了该算法, 就能明白上一段的超链接从本页面链出, 链入百度百科的 PageRank 算法页面增加了该页面的PR值.
(二) Python 的 PageRank 算法实现
Python 的常用数据分析机器学习库 sklearn 中并没有 PageRank 算法, 但有一个关于图论和网络建模的工具叫 NetworkX, 它是用 Python 语言开发的工具, 内置了常用的图与网络分析算法, 可以方便我们进行网络数据分析.
简单的实现流程可以参考: https://github.com/Nana0606/machine_learning/blob/master/pagerank/pagerank_nx.py, 代码里包含相应的注释, 最后输出值为字典类型, 键为节点名, 值为对应的 PR值.
(三) 数据介绍
数据来自希拉里邮件门的部分泄露数据, 事件的相关介绍请看: 希拉里邮件门.
数据集由三个文件组成: Aliases.csv, Emails.csv 和 Persons.csv, 其中 Emails 文件记录了所有公开邮件的内容, 发送者和接收者的信息. Persons 文件统计了邮件中所有人物的姓名及对应的 ID. 因为姓名存在别名的情况, 为了将邮件中的人物进行统一, 我们还需要用 Aliases 文件来查询别名和人物的对应关系.
数据集包括9306封邮件和513个人名, 本例通过邮件中的发送者和接收者来绘制整个关系网络. 因为涉及到的人物很多, 需要先通过 PageRank 算法计算每个人物在邮件关系网络中的权重, 再筛选出最有价值的人物来进行关系网络图的绘制.
二. 数据分析
(一) 数据预处理
首先使用 pandas 读入三个 csv 文件.
在 Emails 文件中, 我们需要用到信息为 'MetadataTo'(收件人) 与 'MetadataFrom'