Я пишу скрипт, который использует алгоритм «Local Outlier Factor» для «обнаружения новизны». В этом случае нам нужно «подогнать» «чистый / обучающий» фрейм данных, прежде чем делать прогнозы. Чтобы алгоритм работал, нам нужно закодировать значения в кадре данных, например, «vrrp» в «0» и «udp» в «2» и так далее. Для этой цели я использую функцию sklearn LabelEncoder (), которая позволяет мне передавать закодированный кадр данных в алгоритм.
encoder = LabelEncoder()
dataEnc = dataEnc.apply(encoder.fit_transform)
...
dataframeEnc = dataframeEnc.apply(encoder.fit_transform)
Где «dataEnc» - это обучающий набор данных, а «dataframeEnc» - набор данных для составления прогнозов. .
Проблема возникает, когда я пытаюсь делать предсказания с новым кадром данных: закодированные значения «обучения» не совпадают с закодированными значениями «предсказания» кадра данных для того же исходного значения.
Моя цель - сохранить результирующие закодированные значения со ссылкой на исходные значения при кодировании нового кадра данных.
При кодировании фрейма данных "Training" при кодировании значения '10 .67.21.254 ',например, он всегда кодируется как «23». Однако при кодировании нового фрейма данных (валидация данных) это же значение приведет к другому кодированному значению, в моем случае это «1».
В качестве примера того, что я ожидаю, является следующее:
10.67.21.254 234.1.2.88 0 0 udp 3.472 KB 62
Что кодирует это:
23 153 0 0 4 1254 61 0
Ожидается, что для тех же исходных значений он будет кодироваться в те же кодированные значения, однако, что я получаю после его кодированияснова:
1 1 0 0 1 2 2 0
Я полагаю, что это делает присвоение новых значений для каждой строки в наборе данных на основе других значений того же набора данных.
Тогда у меня возникает вопрос: какмогу ли я убедиться, что при кодировании значений нового набора данных (прогнозирования) я получаю те же закодированные значения, что и в предыдущем (обучающем) наборе данных?