Python - Предложения по использованию модели в производстве 1 тест за раз - PullRequest
0 голосов
/ 21 сентября 2018

Я создал искусственную нейронную сеть с 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 Box с 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", поэтому они не были помечены или записаны в горячем виде.Мой большой вопрос: как мне обработать один тестовый объект, где его часть не была обучена?

Я видел примеры, использующие хеширование объектов, но я не уверен, как это применить или если это вообще решит эту проблему.Любая помощь или указатели будут с благодарностью.

1 Ответ

0 голосов
/ 12 октября 2018
#Create data frame with malicous test
testmalicious = {'ParentProcess': ['ParentProcess': ['C:\Windows\System32\services.exe'], 'ChildProcess': ['C:\Windows\System32\svch0st.exe'], 'Suspicous': [1]}
testmaliciousdf = pd.DataFrame(data=testmalicious)
testmaliciousdf = testmaliciousdf[['ParentProcess', 'ChildProcess', 'Suspicous']]
#Add the malicious to the end of dataframe
DBF1 = DBF2.append(testmaliciousdf)
DBF2 = DBF1.reset_index(drop=True)
#Location where mal_array sample is located - after label and one hot encoded pull out of training set
mal_array = X[368827:368828]
#Remove the last line of the array from training set
X=X[:-1]
#Remove the last line of the array from the y data
y=y[:-1]
#At the end test if suspicious or not
new_prediction = classifier.predict(sc.transform(mal_array))
new_prediction = (new_prediction > 0.5)
new_prediction
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...