我创建了一个具有 4 个分类特征和二进制结果的人工神经网络,1 表示可疑或 0 表示非可疑:
ParentPath ParentExe
0 C:\Program Files (x86)\Wireless AutoSwitch wrlssw.exe
1 C:\Program Files (x86)\Wireless AutoSwitch WrlsAutoSW.exs
2 C:\Program Files (x86)\Wireless AutoSwitch WrlsAutoSW.exs
3 C:\Windows\System32 svchost.exe
4 C:\Program Files (x86)\Wireless AutoSwitch WrlsAutoSW.exs
ChildPath ChildExe Suspicious
C:\Windows\System32 conhost.exe 0
C:\Program Files (x86)\Wireless AutoSwitch wrlssw.exe 0
C:\Program Files (x86)\Wireless AutoSwitch wrlssw.exe 0
C:\Program Files\Common Files OfficeC2RClient.exe 0
C:\Program Files (x86)\Wireless AutoSwitch wrlssw.exe 1
C:\Program Files (x86)\Wireless AutoSwitch wrlssw.exe 0
我使用 sklearn 进行标签编码和数据的一种热编码:
#Import the dataset
X = DBF2.iloc[:, 0:4].values
#X = DBF2[['ParentProcess', 'ChildProcess']]
y = DBF2.iloc[:, 4].values#.ravel()
#Encoding categorical data
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
#Label Encode Parent Path
labelencoder_X_1 = LabelEncoder()
X[:, 0] = labelencoder_X_1.fit_transform(X[:, 0])
#Label Encode Parent Exe
labelencoder_X_2 = LabelEncoder()
X[:, 1] = labelencoder_X_2.fit_transform(X[:, 1])
#Label Encode Child Path
labelencoder_X_3 = LabelEncoder()
X[:, 2] = labelencoder_X_3.fit_transform(X[:, 2])
#Label Encode Child Exe
labelencoder_X_4 = LabelEncoder()
X[:, 3] = labelencoder_X_4.fit_transform(X[:, 3])
#Create dummy variables
onehotencoder = OneHotEncoder(categorical_features = [0,1,2,3])
X = onehotencoder.fit_transform(X)
我已将数据拆分为训练和测试集,并在我的 GPU 盒上使用 nvidia 1080 运行它。我已经调整了超参数,现在准备使用在生产环境中训练的模型,其中一个测试样本在一次。假设我只想测试一个样本:
ParentPath ParentExe ChildPath ChildExe
0 C:\Windows\Malicious badscipt.exe C:\Windows\System cmd.exe
我遇到的问题是训练集看到了正常的 ChildPath "C:\Windows\System" 和 ChildExe "cmd.exe",但是训练集没有看到 ParentPath "C:\Windows\ Malicous”或 ParentExe “badscipt.exe”,因此这些都没有被标记或热编码。 我的大问题是,当并非所有分类变量(在本例中为文件路径和文件名)都可以详尽枚举时,如何构建预测模型?
我见过使用特征散列的例子,但我不确定如何应用它,或者它是否能解决这个问题。任何帮助或指示将不胜感激。