IsolationForest всегда предсказывает 1
Я работаю над проектом по обнаружению
out-of-domain
ввод текста с помощью функции и. Ниже приведены мои работы в обобщенном виде:
ОБУЧЕНИЕ
В tfidf:
- Подгонка и преобразование набора данных в домене с помощью.
- Установите tfidftransformer () вместе с my и сохраните трансформатор (чтобы использовать его во время тестирования).
- Поэтому преобразуйте обучающие данные, используя
tfidftransformer()
- Сохраните оба
CountVectorizer()
сvocabulary_
а такжеTfidfTransformer()
объект, использующийpickle
для использования тестового времени.
На изолированном лесу:
- Соберите преобразованный набор данных в домене и обучите
IsolationForest()
детектор новизны. - Сохраните модель, используя
joblib
.
- Соберите преобразованный набор данных в домене и обучите
ТЕСТИРОВАНИЕ:
- Загрузите все сохраненные модели.
- Получите функцию преобразования tfidf текущего входного текста вне домена после репликации всех шагов (только преобразований), аналогичных шагу обучения.
- Прогнозируйте, находится ли он вне домена или нет, используя сохраненную модель.
Но то, что я обнаружил, даже если разреженная матрица tf-idf сильно различается для каждого из моих тестовых входных данных, всегда предсказывающая 1.
Что, наверное, не так?
NB: я также пробовал вводить фиктивные векторы для моделирования, имитируя выходные данные трансформатора, чтобы убедиться, что модуль отвечает за это или нет, но независимо от того, какой случайный вектор я предоставляю, я всегда получаю 1 как результат
IsolationForest
. Также обратите внимание, что,
tf-idf
имеет много функций (токенов), в моем случае - 48015.