用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

相关文章
|
29天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
257 55
|
2月前
|
人工智能 边缘计算 物联网
蜂窝网络未来发展趋势的分析
蜂窝网络未来发展趋势的分析
84 2
|
2月前
|
数据采集 缓存 定位技术
网络延迟对Python爬虫速度的影响分析
网络延迟对Python爬虫速度的影响分析
|
2月前
|
Python
Python中的异步编程:使用asyncio和aiohttp实现高效网络请求
【10月更文挑战第34天】在Python的世界里,异步编程是提高效率的利器。本文将带你了解如何使用asyncio和aiohttp库来编写高效的网络请求代码。我们将通过一个简单的示例来展示如何利用这些工具来并发地处理多个网络请求,从而提高程序的整体性能。准备好让你的Python代码飞起来吧!
103 2
|
2月前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
129 6
|
19天前
|
存储 安全 物联网
浅析Kismet:无线网络监测与分析工具
Kismet是一款开源的无线网络监测和入侵检测系统(IDS),支持Wi-Fi、Bluetooth、ZigBee等协议,具备被动监听、实时数据分析、地理定位等功能。广泛应用于安全审计、网络优化和频谱管理。本文介绍其安装配置、基本操作及高级应用技巧,帮助用户掌握这一强大的无线网络安全工具。
51 9
浅析Kismet:无线网络监测与分析工具
|
1月前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
176 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
22天前
|
数据采集 机器学习/深度学习 人工智能
基于AI的网络流量分析:构建智能化运维体系
基于AI的网络流量分析:构建智能化运维体系
102 13
|
2月前
|
网络安全 Python
Python网络编程小示例:生成CIDR表示的IP地址范围
本文介绍了如何使用Python生成CIDR表示的IP地址范围,通过解析CIDR字符串,将其转换为二进制形式,应用子网掩码,最终生成该CIDR块内所有可用的IP地址列表。示例代码利用了Python的`ipaddress`模块,展示了从指定CIDR表达式中提取所有IP地址的过程。
62 6
|
2月前
|
机器学习/深度学习 自然语言处理 语音技术
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
85 8