我需要使用tensorflow开发自动编码器,当我检查文档和教程时,我可以看到很多带有图像数据的例子和MNIST_data,这是预处理的数值数据。
在我的情况下,数据采用文本格式
等
uid orig_h orig_p trans_depth method host
======================================================================
5fg288 192.168.1.4 80 1 POST ex1.com
2fg888 192.168.1.3 80 2 GET ex2.com
那么如何将这些数据转换为数字格式,接受张量流。我在张量流教程中找不到任何例子,
我是张量流的初学者,请帮忙。
更新
根据下面的说明,我通过参考教程here
创建了矢量映射的单词pandas dataframe中的输入
host method orig_h orig_p trans_depth uid
0 ex1.com POST 192.168.1.4 80 1 5fg288
1 ex2.com GET 192.168.1.3 443 2 2fg888
并且
Bag of word ---> ['5fg288', '2fg888', '80', 'GET', '443', '1', 'ex2.com', '192.168.1.4', '192.168.1.3', '2', 'ex1.com', 'POST']
现在我的每个单元都有像
这样的值数组192.168.1.4 ---> [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0]
ex1.com ---> [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]
80 ----> [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
那么如何重塑这些数据以给出张量流
应该是
data = array([
[[0.0,...],[0.0,...],[0.0,...],[0.0,...],[0.0,...],[0.0,...]],
[[0.0,...],[0.0,...],[0.0,...],[0.0,...],[0.0,...],[0.0,...]]
])
这是每个要素作为浮点数组,单个样本中有6个要素。这可能吗,
答案 0 :(得分:2)
Tensorflow接受numpy格式的数据。可以使用df.as_matrix()
函数将Pandas数据帧转换为numpy。但问题的关键在于如何将这些不同的数据类型转换为神经网络(或任何机器学习方法)的连续数值表示。
下面链接的答案为sci-kit文档提供了一些有用的参考,这些文档讨论了很多细节,这里有很多不能重写的内容:
Machine learning with multiple feature types in python
在阅读该指南后,您的部分数据会很容易翻译,例如trans_depth
orig_p
和method
,这些数据似乎是分类数据。在这种情况下,您会将它们转换为{1,0}值的多个要素,以表示该类是否存在,例如,orig_p
可能表示为两个要素x1和x2。 x1=1
如果orig_p=80
,则为0;如果x2=1
则为orig_p=443
,否则为0。
您可能会对主机执行相同操作,但您可能需要考虑如何以及是否确实要使用主机。例如,如果您认为重要,那么您可以定义一个分类功能,仅标识.com
,.edu
,.org
等域,因为单个主机名可能太多而无法表示
您可能还会考虑根据某个数据库(如果存在这样的东西)将主机名集群到主机类别中,并使用主机名所属的群集作为分类功能。
对于orig_h
,您可以考虑按地区对IP进行分组,并为每个地区定义分类功能。
uid
看起来每个用户都是唯一的,因此您可能不会使用该列数据。
您需要考虑每个数据点。从我链接的文档开始,但总的来说,这是一个标准数据挖掘的问题,任何关于数据挖掘的好书对于进一步理解这些概念都是非常宝贵的,这里很容易通过谷歌在线查找搜索:
我还将包括以下参考资料,因为它们提供了我见过的最好的教程,并且他们对ML部分的介绍有一组非常有用的文章。它与问题略有相反,但我希望它有用。