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.

0 ответов

Другие вопросы по тегам