Python 如何将数据转换为图像而不丢失数据

Python 如何将数据转换为图像而不丢失数据,python,matplotlib,seaborn,cnn,network-traffic,Python,Matplotlib,Seaborn,Cnn,Network Traffic,我看过很多论文,他们把网络数据转换成图像,我也在尝试同样的方法,我从kaggle那里得到了87个应用程序的网络数据。数据有三列“Source.IP”、“Destination.IP”和“Payload”,如下所示 当我把它转换成图像(热图)时,它看起来像这样 在x轴上是source.ips,在y轴上是dest ip,我想学习CNN的基于付费负载的流量矩阵分类。 我尝试生成热图,因为我使用pandas和matplotlib/seaborn来生成图表,因为重复的源/目标IP,我不得不旋转表格 g

我看过很多论文,他们把网络数据转换成图像,我也在尝试同样的方法,我从kaggle那里得到了87个应用程序的网络数据。数据有三列“Source.IP”、“Destination.IP”和“Payload”,如下所示

当我把它转换成图像(热图)时,它看起来像这样

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

g1 = true_ele.groupby(["Destination.IP","Source.IP"], as_index=False)['Payload'].mean()
table = g1.pivot(index='Destination.IP',columns='Source.IP',values='Payload')
为了删除重复数据,我决定按有效负载对源/目的IP进行分组,这不好,因为我丢失了数据


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

我认为Sankey图是一种很好的方法,可以在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之间的可视化示例。您可以决定这是否对深度学习有效。