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

简介:

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

今天给大家介绍如何用网络科学的大数据挖掘技术探索比特币交易的网络情况,特别是针对尺度较大的网络分析思路。

一般来讲,网络分析主要采用Ucinet、Netdraw、Gephi、Cytoscape、NodeXL等,但是往往节点或边数量受到限制,大部分只能处理节点或边在5000-10万之间,当然我们也不要期望能够将百万级别的节点和网络呈现总体的可视化。

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

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

首先,俺找到了一个Bitcoin的交易数据集,Bitcoin.csv,75兆大小。

用Jupther Notebook来操作:

我们先加载必要的算法包和设定环境,表征输出结果在Notebook里。

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

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

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

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

200万的可视化本身就是一个大数据分析问题,只是单用Excel无法处理,在这里非常快可以处理和可视化。

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

从可视化表可以看到有68万的源交易ID,近86万的目标ID,比特币btc交易的统计量也显示出来。先对数据量和统计信息有个基本了解。

接下来我们要从timestamp时间戳变量抽取年、月、日字段。

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

我们有了比特币交易数据,但是交易的实际交割日的比特币相当多少美金,我们需要找到比特币交易数据集,我们找到和下载这个交易期的数据集Martet-price.csv。加载进来…

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

该数据集标识了交易期的bitcoin收盘价close-price。

下面我们将对应交易日期年、月、日的交易日与交易收盘价合并两个数据集。事先将时间戳抽取年、月、日

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

至此数据准备工作完成。

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

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

分别得到月交易量,单一用户ID交易量和交易分布图(省略部分算法)

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

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

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

source和destination用户的交易分布

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

具有粗略幂律分布的长尾分布,表明大部分交易频次在1次左右。

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

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

总共有约88万个节点(vertice)和约196万的边(edge)

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

网络分析的重要统计量是度degree分布,通过计算出度outdegree和入度indegree和总degree的分布,我们可以看出度分布基本上服从幂律分布特性。

幂律分布的基本要点:越重大的事情越很少发生,存在少数个别节点起着重要的作用。

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

我们很容易查看一下top=5,出度和入度比较异常的outliers交易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个人玩抢红包,把数据保留下来,进行分析也是非常有意思的事情。数据量足够大的话甚至可以反推红包算法了。

当然我主要学习这个算法后处理移动手机通过清单,分析的原理是一样的。


本文作者:沈浩

来源:51CTO

相关文章
|
14天前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
41 4
|
9天前
|
机器学习/深度学习 数据可视化 计算机视觉
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
这篇文章详细介绍了如何通过可视化深度学习中每层特征层来理解网络的内部运作,并使用ResNet系列网络作为例子,展示了如何在训练过程中加入代码来绘制和保存特征图。
28 1
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
|
8天前
|
数据可视化 数据处理 Python
如何使用Python实现一个基于均线的交易策略
【10月更文挑战第9天】本文介绍了如何使用Python实现一个基于均线的交易策略。主要步骤包括导入所需库(如`pandas`、`numpy`和`matplotlib`),加载股票或期货的历史数据,计算均线和其他指标,实现交易策略逻辑,以及可视化交易结果。示例代码展示了如何根据均线交叉点进行开仓、止损和止盈操作,并提供了注意事项,如数据来源、交易成本和风险管理。
24 7
|
11天前
|
机器学习/深度学习 数据可视化 Windows
深度学习笔记(七):如何用Mxnet来将神经网络可视化
这篇文章介绍了如何使用Mxnet框架来实现神经网络的可视化,包括环境依赖的安装、具体的代码实现以及运行结果的展示。
29 0
|
10天前
|
数据可视化 算法 Python
基于OpenFOAM和Python的流场动态模态分解:从数据提取到POD-DMD分析
本文介绍了如何利用Python脚本结合动态模态分解(DMD)技术,分析从OpenFOAM模拟中提取的二维切片数据,以深入理解流体动力学现象。通过PyVista库处理VTK格式的模拟数据,进行POD和DMD分析,揭示流场中的主要能量结构及动态特征。此方法为研究复杂流动系统提供了有力工具。
22 2
基于OpenFOAM和Python的流场动态模态分解:从数据提取到POD-DMD分析
|
11天前
|
机器学习/深度学习 数据可视化 Python
Python实用记录(三):通过netron可视化模型
使用Netron工具在Python中可视化神经网络模型,包括安装Netron、创建文件和运行文件的步骤。
17 2
Python实用记录(三):通过netron可视化模型
|
6天前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
25 2
|
10天前
|
数据采集 Web App开发 数据可视化
Python爬虫教程:Selenium可视化爬虫的快速入门
Python爬虫教程:Selenium可视化爬虫的快速入门
|
5天前
|
数据采集 数据可视化 数据挖掘
使用Python进行数据处理与可视化——以气温数据分析为例
【10月更文挑战第12天】使用Python进行数据处理与可视化——以气温数据分析为例
57 0
|
9天前
|
机器学习/深度学习 数据可视化 Linux
Seaborn可视化学习笔记(一):可视化神经网络权重分布情况
这篇文章是关于如何使用Seaborn库来可视化神经网络权重分布的教程,包括函数信息、测试代码和实际应用示例。
20 0