主页 > 比特派钱包和imtoken哪个安全 > 使用 Python 检测比特币交易的网络可视化分析

使用 Python 检测比特币交易的网络可视化分析

用Python侦测比特币交易的网络可视化分析

今天,我将介绍如何利用网络科学的大数据挖掘技术来探索比特币交易的网络情况,尤其是大规模网络分析的思路。

一般来说,网络分析主要使用Ucinet、Netdraw、Gephi、Cytoscape、NodeXL等,但节点或边的数量往往有限,大多只能处理5000万到10万个节点或边。 当然,我们不应该期望能够呈现出数百万个节点和网络的整体可视化。

对于大规模的网络分析,我们需要寻找新的编程思路。 这里我们选择Python编程。 IPython Notebook 是我最喜欢的学习编程环境。 特别是Graphlab包提供了SGraph数据包和分析工具包等一系列算法。

网络科学已经成为大数据挖掘最具代表性的算法和分析思想。 无论是跟踪网络交易行为、个性化推荐、计算PageRank、中心性度量等,我们都需要一套完整的网络分析思想,很多复杂的网络科学概念都会涉及到,但今天主要介绍Python的过程分析比特币交易,检测特征节点的异常交易,并通过案例可视化这一交易过程。

首先,我找到了一个比特币交易数据集,Bitcoin.csv,大小为 75 兆字节。

使用 Jupther Notebook 操作:

我们首先加载必要的算法包并设置环境,表征输出结果在Notebook中。

用Python侦测比特币交易的网络可视化分析

接下来我们加载比特币交易数据集Bitcoin.csv,(也可以直接从云服务器下载)

用Python侦测比特币交易的网络可视化分析

整个交易数据包含了近200万笔交易记录,数据结构非常简单,就是在什么时候源ID=Src,目标ID=Dst,在某个时间戳timestamp有一笔交易,交易比特币的价格=比特币。

比特币挖矿源代码分析_比特币狂人分析微博_比特币案例分析题问题

200万的可视化本身就是一个大数据分析的问题,光靠Excel是搞不定的,但是在这里可以非常快速的处理和可视化。

用Python侦测比特币交易的网络可视化分析

从可视化表中我们可以看到,源交易ID有68万个,目标ID近86万个,同时也展示了比特币btc交易的统计数据。 对数据量和统计数据有一个基本的了解。

接下来我们需要从时间戳变量中提取年、月和日字段。

用Python侦测比特币交易的网络可视化分析

我们有比特币交易数据,但是在交易的实际交割日比特币是多少,我们需要找到比特币交易数据集,我们找到并下载这个交易时段的数据集Martet-price.csv。 载入...

用Python侦测比特币交易的网络可视化分析

该数据集确定交易期间比特币的收盘价。

接下来比特币案例分析题问题,我们将交易日的交易日、月、日和交易的收盘价对应的两个数据集进行组合。提前从时间戳中提取年、月、日

用Python侦测比特币交易的网络可视化分析

至此数据准备就完成了。

比特币案例分析题问题_比特币狂人分析微博_比特币挖矿源代码分析

接下来我们需要探索数据的交易,可以用Python的matplotlib包进行图形化分析。

用Python侦测比特币交易的网络可视化分析

获取月交易量、单用户ID交易量和交易分布图(省略部分算法)

用Python侦测比特币交易的网络可视化分析

交易最大值出现在2011年2-7月

用Python侦测比特币交易的网络可视化分析

源用户和目的用户的交易分布

用Python侦测比特币交易的网络可视化分析

具有大致幂律分布的长尾分布,表明大多数交易发生在 1 次左右。

接下来,我们需要将交易数据集构造成图SGraph存储结构,以便进行network=graph的网络分析算法。

用Python侦测比特币交易的网络可视化分析

比特币案例分析题问题_比特币挖矿源代码分析_比特币狂人分析微博

一共约有88万个节点(vertices),约196万条边(edges)

用Python侦测比特币交易的网络可视化分析

用Python侦测比特币交易的网络可视化分析

网络分析中的一个重要统计量是度分布。 通过计算出度、入度和总度的分布,可以看出度分布基本服从幂律分布。

幂律分布的基本原理:越重要的事情发生的可能性越小,有少数个别节点发挥重要作用。

用Python侦测比特币交易的网络可视化分析

我们很容易查出top=5的离群交易ID,离群和入度都比较异常

我们还可以看看比特币交易量最大的top5

用Python侦测比特币交易的网络可视化分析

我们还可以计算出一笔交易ID=307659的专门指定的P2P交易的主例。

接下来我们使用Pagerank算法计算网络交易的Pagerank值。

比特币案例分析题问题_比特币狂人分析微博_比特币挖矿源代码分析

用Python侦测比特币交易的网络可视化分析

Pagerank是Google的网页排名算法:网页的价值是通过链接到该网页的网页的权重来计算的。

用Python侦测比特币交易的网络可视化分析

接下来我们进入比特币交易网络分析和路径可视化。 我们不可能将整个网络可视化(不过我们也发现了用javascript展示大规模网络数据的可能性,还没学完)

用Python侦测比特币交易的网络可视化分析

指定 ID=9264 的节点,在网络上看到一次这个 ID 的交易。

用Python侦测比特币交易的网络可视化分析

选择特定节点过滤的比特币交易网络的交易对象和交易价值

用Python侦测比特币交易的网络可视化分析

交易账户的特定网络可视化

用Python侦测比特币交易的网络可视化分析

比特币挖矿源代码分析_比特币案例分析题问题_比特币狂人分析微博

特色账户特征交易网络

用Python侦测比特币交易的网络可视化分析

突出两个特征节点的交易网络。

用Python侦测比特币交易的网络可视化分析

筛选后账户节点的交易行为。

用Python侦测比特币交易的网络可视化分析

账户节点的比特币交易路径和资金交易行为。

用Python侦测比特币交易的网络可视化分析

两个账户交易日期的网络路径可视化。

通过上面的操作可以看出数据结构非常简单,分析思路和算法语法都可以模仿。 比如我们可以拿到微信群抢红包的数据,就可以进行相关的网络挖掘。

如果有人建个群,招500人玩抢红包比特币案例分析题问题,留着数据分析,会很有意思。 如果数据量足够大,红包算法甚至可以逆转。

当然我学习这个算法主要是对手机通行列表进行处理,分析的原理是一样的。