因此,我有一个数据集,该数据集实质上是单个程序进行的Windows API
调用的列表。每行属于一个程序。同一行的连续单元是同一程序进行的API调用。我的问题是无法弄清楚如何encode
这类分类数据,以便我可以从中建立基于回归的ML
模型。
我尝试使用Pandas
方法get_dummies()
,但这似乎使事情变得混乱,因为似乎生成的列数呈指数增长。
我的数据集看起来像这样-
ROW [9822] GetStartupInfoA LockResource GetCommandLineA GetModuleFileNameA ShowWindow EnableWindow DestroyWindow lstrcpyW GetThreadLocale lstrcmpiW GlobalAlloc
如果有帮助,我还会列出唯一的API。
我的目标实质上是建立一个模型,以分析API调用并预测进行这些调用的程序是否良性。
答案 0 :(得分:0)
这是整数编码:
api_dict = {
'call_1': 1,
'call_2': 2,
'call_3': 3,
...}
#grab the corresponding value from the dictionary
`api_dict.get({api_name_here})`
我不确定您的数据结构如何安排,但假设它是列表的列表:
for row in sheet:
for cell in row:
cell = api_dict.get(value)
一种热编码类似,除了值将转换为二进制:
from keras.utils import to_categorical
data = ['cold', 'warm', 'hot'] # 3 possible values
encoded = to_categorical(data)
返回
[[1 0 0],[0 1 0],[0 0 1]]
〜2000个不同的值将转换为11位二进制数,这意味着为了表示所有不同的API调用,该函数将每个值转换为1或0的11个不同的列。保持数据尽可能中性。
如果使用我上面提供的算法,最终将以1-1替换,但是单元格中的值将是1-2000。这可能会影响模型的输出。
替代品: