【问题标题】:How to convert data into images without data loss如何在不丢失数据的情况下将数据转换为图像
【发布时间】:2020-11-20 14:24:20
【问题描述】:

我看过很多论文将网络数据转换为图像,我正在尝试做同样的事情,我从 kaggle 获得了 87 个应用程序的网络数据。数据有三列'Source.IP'、'Destination.IP'和'Payload'看起来像这样

当我将其转换为图像(热图)时,它看起来像这样

x 轴上是 source.ips,y 轴上是 dest ip,我想学习 CNN 以进行基于有效负载的流量矩阵分类。 我尝试生成热图,因为我使用 pandas 和 matplotlib/seaborn 来生成图表,由于重复的源/目标 ips,我不得不旋转表格。

g1 = true_ele.groupby(["Destination.IP","Source.IP"], as_index=False)['Payload'].mean()
table = g1.pivot(index='Destination.IP',columns='Source.IP',values='Payload')

为了删除重复项,我决定按有效负载对源/目标 ips 进行分组,这不好,因为我正在丢失数据。

我想问的是,有没有更好的方法来根据上面的数据生成图像,这样我就不会丢失数据,并且能够生成有意义的图像来学习 CNN。

【问题讨论】:

    标签: python matplotlib seaborn conv-neural-network network-traffic


    【解决方案1】:

    我认为作为 A-B 之间的量化可视化,桑基图是一种很好的方法。但我不确定这是否会导致深度学习。图中的数据由 A-B 和源之间的唯一标签组成,目标是标签的索引。

    import plotly.graph_objects as go
    
    fig = go.Figure(data=[go.Sankey(
        node = dict(
          pad = 15,
          thickness = 20,
          line = dict(color = "black", width = 0.5),
          label = (['172.19.1.46-s','10.200.7.7-d','10.200.7.7-s','172.19.1.46-d','50.31.185,39-s','10,200.7.217-d',
                    '50.31.185,39-s','10.200.7.217-d','192.168.72.43-s','10.200.7.6-s','172.19.1.56-d','192.168.72.47-s',
                    '10.200.7.6-d','68.67.178.197-s','10.200.7.4-s','192.168.180.51-d']),
          color = "blue"
        ),
        link = dict(
          source = [0,2,4,4,8,9,8,11,13,9,14.14,14], 
          target = [1,3,5,5,1,10,1,12,5,1,15,15,15],
          value = [22,2,3,1,5,136,5,3,10,7,32,5,3]
      ))])
    
    fig.update_layout(title_text="Basic Sankey Diagram", font_size=10)
    fig.show()
    

    【讨论】:

    • 在这样的图像上建模CNN真的可行吗?它不会影响模型性能吗?
    • 正如我在回复中评论的那样,我不太了解深度学习,我建议将其作为 A-B 之间的可视化示例。您可以决定这是否对深度学习有效。
    猜你喜欢
    • 2016-06-19
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 2014-02-06
    相关资源
    最近更新 更多