(11-3-03)检测以太坊区块链中的非法账户: 数据分析(2)

这篇具有很好参考价值的文章主要介绍了(11-3-03)检测以太坊区块链中的非法账户: 数据分析(2)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

11)再次获取数据集的列名,具体实现代码如下所示。

Index(['Address', 'FLAG', 'Avg min between sent tnx',
       'Avg min between received tnx',
       'Time Diff between first and last (Mins)', 'Sent tnx', 'Received Tnx',
       'Number of Created Contracts', 'Unique Received From Addresses',
       'Unique Sent To Addresses', 'min value received', 'max value received ',
       'avg val received', 'min val sent', 'max val sent', 'avg val sent',
       'min value sent to contract', 'max val sent to contract',
       'avg value sent to contract',
       'total transactions (including tnx to create contract',
       'total Ether sent', 'total ether received',
       'total ether sent contracts', 'total ether balance',
       ' Total ERC20 tnxs', ' ERC20 total Ether received',
       ' ERC20 total ether sent', ' ERC20 total Ether sent contract',
       ' ERC20 uniq sent addr', ' ERC20 uniq rec addr',
       ' ERC20 uniq sent addr.1', ' ERC20 uniq rec contract addr',
       ' ERC20 min val rec', ' ERC20 max val rec', ' ERC20 avg val rec',
       ' ERC20 min val sent', ' ERC20 max val sent', ' ERC20 avg val sent',
       ' ERC20 uniq sent token name', ' ERC20 uniq rec token name'],
      dtype='object')

12)根据指定的相关性阈值(0.7),选择相关性超过阈值的列,并将这些列的名称存储在 to_drop 列表中。最后,打印输出需要删除的列数。具体实现代码如下所示。

# 阈值设置为0.7
threshold = 0.7
# 选择相关性超过阈值的列
to_drop = [column for column in upper.columns if (any(upper[column] > threshold) or any(upper[column] < -(threshold)))]
# 打印要删除的列数
print('有 %d 列需要删除。' % (len(to_drop)))

执行后会输出:

There are 13 columns to remove.

13)列表to_drop 包含了根据相关性阈值需要删除的列的名称,可以通过输出 to_drop 列表来查看这些列的名称。具体实现代码如下所示。

to_drop

执行后将输出显示需要删除的列的名称;

['avg value sent to contract',
 'total transactions (including tnx to create contract',
 'total ether received',
 'total ether sent contracts',
 ' ERC20 uniq sent addr',
 ' ERC20 uniq rec addr',
 ' ERC20 max val rec',
 ' ERC20 avg val rec',
 ' ERC20 min val sent',
 ' ERC20 max val sent',
 ' ERC20 avg val sent',
 ' ERC20 uniq sent token name',
 ' ERC20 uniq rec token name']

(14)创建数值的热图,以可视化数据集中各个数值列之间的相关性。热图使用不同的颜色表示相关性的强度,正相关和负相关分别以不同的颜色显示,并在热图上标注相关性系数的数值。具体实现代码如下所示。

# 创建数值值的热图
# 创建一个与相关性矩阵相同大小的全零矩阵,并在上三角部分设置为True,以遮盖下三角部分
mask = np.zeros_like(corr)
mask[np.triu_indices_from(mask)] = True

# 使用白色背景风格创建图形
with sns.axes_style('white'):
    # 创建图形和轴对象
    fig, ax = plt.subplots(figsize=(30, 20))
    # 生成热图,显示相关性矩阵,使用RdYlGn颜色图,以0为中心,方形显示,标注数值
    sns.heatmap(corr, mask=mask, annot=True, cmap='RdYlGn', center=0, square=True, fmt='.2g')

执行后会绘制相关性矩阵的热图(heatmap),如图11-3所示。这种图以矩阵的形式展示各个数值列之间的相关性,使用不同颜色表示相关性的强度,正相关和负相关分别以不同的颜色显示。这种图表有助于可视化数据集中各个数值属性之间的关系,特别是相关性的强弱和方向。通过热图,可以快速识别哪些属性之间存在强相关性,从而帮助进一步的数据分析和建模工作。

(11-3-03)检测以太坊区块链中的非法账户: 数据分析(2),金融大模型,人工智能,数据分析,深度学习,python

11-3  相关性矩阵的热图

(15)根据 to_drop 列表删除指定的列,并通过输出 dataset.columns 来显示删除列后的列名,被删除的列将不再包含在数据集中。具体实现代码如下所示。

# 要删除的列
drop = ['total transactions (including tnx to create contract','max val sent to contract',' ERC20 avg val rec',' ERC20 max val rec', ' ERC20 avg val sent', ' ERC20 min val sent', ' ERC20 max val sent',' ERC20 uniq sent token name',' ERC20 uniq sent token name',' ERC20 uniq rec token name','max val sent to contract','avg value sent to contract']
# 删除指定的列
dataset.drop(to_drop, axis=1, inplace=True)
# 显示删除列后的列名
dataset.columns

执行后会输出:

Index(['Address', 'FLAG', 'Avg min between sent tnx',

       'Avg min between received tnx',

       'Time Diff between first and last (Mins)', 'Sent tnx', 'Received Tnx',

       'Number of Created Contracts', 'Unique Received From Addresses',

       'Unique Sent To Addresses', 'min value received', 'max value received ',

       'avg val received', 'min val sent', 'max val sent', 'avg val sent',

       'min value sent to contract', 'max val sent to contract',

       'total Ether sent', 'total ether balance', ' Total ERC20 tnxs',

       ' ERC20 total Ether received', ' ERC20 total ether sent',

       ' ERC20 total Ether sent contract', ' ERC20 uniq sent addr.1',

       ' ERC20 uniq rec contract addr', ' ERC20 min val rec'],

      dtype='object')

16)在删除指定的列后,数据集中的列数将发生变化,接下来可以使用以下代码来获取删除列后的列数:

len(dataset.columns)

执行后会输出:

27

17)绘制相关性矩阵的热图,用不同颜色表示不同属性之间的相关性强度。正相关和负相关分别以不同颜色显示,而且相关系数的数值也被标注在热图上,以帮助更好地理解数据属性之间的关系。具体实现代码如下所示。

# 计算数值列之间的相关性矩阵
corr = dataset.corr()

# 创建一个与相关性矩阵相同大小的全零矩阵,并在上三角部分设置为True,以遮盖下三角部分
mask = np.zeros_like(corr)
mask[np.triu_indices_from(mask)] = True

# 使用白色背景风格创建图形
with sns.axes_style('white'):
    # 创建图形和轴对象
    fig, ax = plt.subplots(figsize=(30, 20))
    # 生成热图,显示相关性矩阵,使用RdYlGn颜色图,以0为中心,方形显示,标注数值
    sns.heatmap(corr, mask=mask, annot=True, cmap='RdYlGn', center=0, square=True, fmt='.2g')

执行后会绘制数值属性相关性热图,如图11-4所示,

(11-3-03)检测以太坊区块链中的非法账户: 数据分析(2),金融大模型,人工智能,数据分析,深度学习,python

11-4  数值属性相关性热图

(18)绘制箱线图,可以分别绘制变量的箱线图以及带有 FLAG 对比的变量的箱线图。函数中的参数 variable 是要绘制箱线图的变量名称。此外,通过 columns 变量获取了数据集的列名。最后,获取数据集中从第三列开始(索引为2)的所有列名。具体实现代码如下所示。

# 绘制变量的箱线图
def box_plot(variable):
  plt.figure(figsize=(6,4))
  sns.boxplot(y=dataset[variable])
  plt.title("Boxplot for {}".format(variable))
  plt.show()

# 绘制带有 FLAG 对比的变量的箱线图
def box_plot_y(variable):
  plt.figure(figsize=(6,4))
  sns.boxplot(y=dataset[variable], x=dataset['FLAG'])
  plt.title("Boxplot for {} wrt Flag".format(variable))
  plt.show()

# 获取数据集的列名
columns = dataset.columns
columns

columns[2:]

执行后会输出:

Index(['Address', 'FLAG', 'Avg min between sent tnx',
       'Avg min between received tnx',
       'Time Diff between first and last (Mins)', 'Sent tnx', 'Received Tnx',
       'Number of Created Contracts', 'Unique Received From Addresses',
       'Unique Sent To Addresses', 'min value received', 'max value received ',
       'avg val received', 'min val sent', 'max val sent', 'avg val sent',
       'min value sent to contract', 'max val sent to contract',
       'total Ether sent', 'total ether balance', ' Total ERC20 tnxs',
       ' ERC20 total Ether received', ' ERC20 total ether sent',
       ' ERC20 total Ether sent contract', ' ERC20 uniq sent addr.1',
       ' ERC20 uniq rec contract addr', ' ERC20 min val rec'],
      dtype='object')

19)针对数据集中每个数值列的箱线图绘制,进行了单变量分析。具体实现代码如下所示。

# 单变量分析 - 绘制每个数值列的箱线图
for col in columns[2:]:
    box_plot(col)

上述代码通过循环遍历数据集中从第三列开始的每个数值列,并为每个列绘制了一个箱线图,例如列“Sent_tnx”的箱线图效果如图11-5所示。箱线图有助于显示数据的分布、中位数、上下四分位数以及异常值的情况,从而帮助了解每个变量的统计特性。

(11-3-03)检测以太坊区块链中的非法账户: 数据分析(2),金融大模型,人工智能,数据分析,深度学习,python

11-5  列“Sent_tnx”的箱线图

20)执行了带有 FLAG 对比的箱线图绘制,为数据集中从第三列开始的每个数值列绘制了箱线图。具体实现代码如下所示。

for col in columns[2:]:
  box_plot_y(col)

执行后会绘制与数据集中每个数值列相关的箱线图,并将它们与 FLAG 列进行了对比。具体绘制了多少个箱线图取决于数据集中数值列的数量,例如列“Sent_tnx”的带有 FLAG 对比的箱线图效果如图11-6所示。这些箱线图可以帮助您了解每个数值列在欺诈和非欺诈交易之间的分布情况和差异。

(11-3-03)检测以太坊区块链中的非法账户: 数据分析(2),金融大模型,人工智能,数据分析,深度学习,python

11-6  列“Sent_tnx”的带有 FLAG 对比的箱线图

(21)计算训练数据集中 "FLAG" 列值为 1 的占比,即欺诈交易的百分比。具体计算方式是将 "FLAG" 列中值为 1 的行数除以总行数,然后将结果乘以 100,得到百分比。具体实现代码如下所示。

fraud = (sum(dataset['FLAG'])/len(dataset['FLAG'].index))*100
fraud

在上述代码中,将计算的结果存储在变量fraud,然后使用第2行代码查看欺诈交易的百分比。执行后会输出:文章来源地址https://www.toymoban.com/news/detail-785099.html

22.14205873386851

未完待续

到了这里,关于(11-3-03)检测以太坊区块链中的非法账户: 数据分析(2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 科普|区块链中的Merkle Tree

    什么是Merkle Tree? - Merkle Tree也就是Merkle树,中文译名还有梅克尔树或默克尔树,因为这是一棵用哈希值搭建起来的树,树的所有节点都存储了哈希值,所以也叫哈希树,英文名为Hash Tree。默克尔树通常情况下看着是一棵倒置的树型结构,根节点在顶部,分叉向下,叶子节点

    2024年02月02日
    浏览(30)
  • 区块链中的交易是什么意思

    id:BSN_2021 公众号:BSN研习社 关于区块链,交易是一个绕不开的话题。区块链可以看做一个不断实时同步的分布式账本,在这个账本上,每一个动作都可以算作一笔“交易”。正是一笔笔交易,才构成了账本的全部。 关于交易,有很多基础术语需要我们了解。 交易/Transaction

    2024年02月06日
    浏览(45)
  • 区块链中的节点是什么意思?

    众所周知,我的好朋友阿强,一个币圈奇才,对所有可以一夜暴富的项目都有着出奇的热忱的一个敢于试错的勇士,今天他又又又又给我推荐了一个项目——美公链。 号称全面涵盖吃喝玩乐购,链上可视化数据消费补贴,消费增值,消费共享,消费股东为一体产业区块链的链

    2023年04月08日
    浏览(35)
  • QLearning在区块链中的应用

    非常感谢您的阅读。我将以专业的技术语言撰写这篇深入的技术博客文章。 区块链作为一种分布式账本技术,凭借其去中心化、不可篡改、透明公开等特性,在金融、供应链管理、数字资产交易等领域广受关注和应用。而强化学习算法Q-Learning作为一种有效的智能决策方法,近年

    2024年04月15日
    浏览(31)
  • 区块链中的货币与现金系统

    摘  要 : 区块链技术是近年来备受关注的一项新兴技术,它以去中心化、不可篡改和透明等特点,为各个领域的应用提供了全新的解决方案。区块链技术的发展不仅对传统金融、物流、能源等行业带来了深刻的变革,同时也推动了数字经济和数字社会的快速发展。在区块链技

    2024年02月04日
    浏览(42)
  • 区块链中的共识机制以及共识算法

    目录 什么是共识 什么是共识机制 共识机制类型 1、基于工作证明(Proof of Work PoW) PoW的特点

    2024年02月11日
    浏览(33)
  • 【区块链时代】如何用Python实现区块链中的区块结构(快速入手01)

    区块结构的详细介绍,容易入手: 【区块链时代】如何理解区块链中共识机制以及在区块链中分叉是如何解决的 结果如下: 在下一篇博客中将重点介绍节点之间通信过程中如何实现各个功能模块。

    2024年02月15日
    浏览(30)
  • 《区块链原理与技术》学习笔记(四) ——以太坊的基本架构、账户模型和智能合约

    《区块链原理与技术》学习笔记 第四部分 三、以太坊 1. 以太坊简介 1.1 以太坊发展的阶段 1.2 以太坊与比特币对比 2. 以太坊的基本架构及原理 2.1 基本概念 2.2 状态转移 2.3 基本架构 3. 账户模型与转账 3.1 账户模型 4. 智能合约 4.1 合约账户与数据存储 4.2 驱动智能合约 以太坊

    2024年02月13日
    浏览(34)
  • 区块链中的 Gas 费是什么?我一定要交么?

    经常使用以太坊等区块链的人,对于 Gas 这个词一定不陌生。那么,Gas 是什么呢? Gas 在英文中是指“燃料、汽油”的意思,在区块链当中,它也的确和“汽油”有着类似的功能。区块链是一个由无数节点共同构成的去中心化网络,在这个网络中,每一个节点都可以看做是一

    2024年02月11日
    浏览(29)
  • 浅析区块链中的数据可用性采样技术(DAS)

    任何一条区块链中,数据可用性都是一个必不可少的关键性内容。在当今区块链主流采用的欺诈证明的乐观系统或有效性证明系统中,都需要“数据可用性”进行验证,确保系统活跃性。 在早期的区块链项目中,用户需要下载整个数据块来确保数据可用性。简答来说,就是用

    2024年02月11日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包