Как кодировать строковую переменную типа Target в числовой тип, используя сопоставление подстрок или регулярное выражение - PullRequest
0 голосов
/ 04 ноября 2019

Я использую наборы данных CTU-13, состоящие из 13 сценариев для обнаружения ботнета. Здесь целевая переменная Label является переменной строкового типа. Кодирование метки для этой переменной просто создает около 52-60 уникальных числовых значений, числа варьируются в зависимости от сценария. Но я заметил, что если можно выполнить кодирование метки с использованием сопоставления подстрок или регулярного выражения, то мы можем просто закодировать до 3 чисел. Тогда проблемой будет проблема тринациональной классификации (3 класса). Затем при построении графика ROC определение показателя auc будет достаточно простым.
Например, отображение 3 различных случаев, таких как "% background%: 0,% normal%: 1,% botnet%: 2 может быть сделано. Тогда, если экземпляр String, такой как , в фоновый поток udp , то помечает его как 0, экземпляр как в обычные потоки tcp помечает его как 1и т. д. Есть ли какой-либо стандартный или индивидуальный способ кодирования, как указано выше?

1 Ответ

0 голосов
/ 07 ноября 2019

Наконец, я решил проблему, просто используя следующий код. Во-первых, три подстроки извлекаются с использованием метода "содержит строку". Затем просто пометьте кодировку информационного кадра, получив значения, как ожидалось.

cat_data.loc[cat_data.Label.str.contains('Normal')] = 'Normal'
cat_data.loc[cat_data.Label.str.contains('Background')] = 'Background'
cat_data.loc[cat_data.Label.str.contains('Botnet')] = 'Botnet' 
target = le.fit_transform(cat_data.Label)
...