Spec-Zone.ru › scikit-learn

TfidfTransformer

classsklearn.feature_extraction.text.TfidfTransformer(*, norm='l2', use_idf=True, smooth_idf=True, sublinear_tf=False)[исходный код]

Преобразует матрицу счётчиков в нормализованное представление tf или tf-idf.

Tf означает частоту термина, а tf-idf — произведение частоты термина на обратную частоту документа. Это распространённая схема взвешивания терминов в информационном поиске, которая также хорошо зарекомендовала себя в классификации документов.

Цель использования tf-idf вместо исходных частот встречаемости токена в документе — уменьшить влияние токенов, которые встречаются очень часто в корпусе и поэтому эмпирически менее информативны, чем признаки, встречающиеся в небольшой доле обучающего корпуса.

Формула, используемая для вычисления tf-idf термина t документа d в наборе документов: tf-idf(t, d) = tf(t, d) * idf(t), а idf вычисляется как idf(t) = log [ n / df(t) ] + 1 (если smooth_idf=False), где n — общее число документов в наборе, а df(t) — частота документа для t; частота документа — это число документов в наборе, содержащих термин t. Добавление «1» к idf в приведённом выше уравнении означает, что термины с нулевым idf, то есть термины, встречающиеся во всех документах обучающего набора, не будут полностью игнорироваться. (Обратите внимание, что приведённая выше формула idf отличается от стандартной записи в учебниках, где idf определяется как idf(t) = log [ n / (df(t) + 1) ]).

Если smooth_idf=True (значение по умолчанию), к числителю и знаменателю idf добавляется константа «1», как если бы был учтён дополнительный документ, содержащий каждый термин из коллекции ровно один раз. Это предотвращает деление на ноль: idf(t) = log [ (1 + n) / (1 + df(t)) ] + 1.

Кроме того, формулы, используемые для вычисления tf и idf, зависят от параметров, соответствующих следующей нотации SMART, принятой в информационном поиске:

По умолчанию tf — «n» (натуральная частота), «l» (логарифмическая), если sublinear_tf=True. Idf — «t», если задан use_idf, и «n» (нет) в противном случае. Нормализация — «c» (косинусная), если norm='l2', и «n» (нет), если norm=None.

Подробнее см. в руководстве пользователя.

Параметры:
norm{‘l1’, ‘l2’} или None, по умолчанию=’l2’

Каждая выходная строка будет иметь единичную норму одного из следующих типов:

  • ‘l2’: Сумма квадратов элементов вектора равна 1. После применения нормы l2 косинусное сходство двух векторов равно их скалярному произведению.
  • ‘l1’: Сумма абсолютных значений элементов вектора равна 1. См. normalize.
  • None: Без нормализации.
use_idfbool, по умолчанию=True

Включить перевзвешивание с учётом обратной частоты документа. Если False, idf(t) = 1.

smooth_idfbool, по умолчанию=True

Сгладить веса idf, прибавив единицу к частоте документов, как если бы был учтён дополнительный документ, содержащий каждый термин из коллекции ровно один раз. Предотвращает деление на ноль.

sublinear_tfbool, по умолчанию=False

Применить суб-линейное масштабирование tf, то есть заменить tf на 1 + log(tf).

Атрибуты:
idf_массив формы (n_features)

Вектор обратной частоты документа (IDF); определён только если use_idf имеет значение True.

Добавлено в версии 0.20.

n_features_in_int

Число признаков, обнаруженных во время обучения.

Добавлено в версии 1.0.

feature_names_in_ndarray формы (n_features_in_,)

Названия признаков, обнаруженных во время обучения. Определён только в том случае, если X содержит названия признаков, являющиеся строками.

Добавлено в версии 1.0.

См. также

CountVectorizer

Преобразует текст в разреженную матрицу счётчиков n-грамм.

TfidfVectorizer

Преобразует коллекцию исходных документов в матрицу признаков TF-IDF.

HashingVectorizer

Преобразует коллекцию текстовых документов в матрицу вхождений токенов.

Список литературы

[Yates2011]

R. Baeza-Yates и B. Ribeiro-Neto (2011). Modern Information Retrieval. Addison Wesley, стр. 68–74.

[MRS2008]

C.D. Manning, P. Raghavan и H. Schütze (2008). Introduction to Information Retrieval. Cambridge University Press, стр. 118–120.

Примеры

>>> from sklearn.feature_extraction.text import TfidfTransformer
>>> from sklearn.feature_extraction.text import CountVectorizer
>>> from sklearn.pipeline import Pipeline
>>> corpus = ['this is the first document',
...           'this document is the second document',
...           'and this is the third one',
...           'is this the first document']
>>> vocabulary = ['this', 'document', 'first', 'is', 'second', 'the',
...               'and', 'one']
>>> pipe = Pipeline([('count', CountVectorizer(vocabulary=vocabulary)),
...                  ('tfid', TfidfTransformer())]).fit(corpus)
>>> pipe['count'].transform(corpus).toarray()
array([[1, 1, 1, 1, 0, 1, 0, 0],
       [1, 2, 0, 1, 1, 1, 0, 0],
       [1, 0, 0, 1, 0, 1, 1, 1],
       [1, 1, 1, 1, 0, 1, 0, 0]])
>>> pipe['tfid'].idf_
array([1.        , 1.22314355, 1.51082562, 1.        , 1.91629073,
       1.        , 1.91629073, 1.91629073])
>>> pipe.transform(corpus).shape
(4, 8)
fit(X, y=None)[исходный код]

Обучает вектор idf (глобальные веса терминов).

Параметры:
Xразреженная матрица формы (n_samples, n_features)

Матрица счётчиков терминов/токенов.

yNone

Этот параметр не требуется для вычисления tf-idf.

Возвращает:
selfobject

Обученный преобразователь.

fit_transform(X, y=None, **fit_params)[исходный код]

Обучает преобразователь на данных, а затем преобразует их.

Обучает преобразователь на X и y с необязательными параметрами fit_params и возвращает преобразованную версию X.

Параметры:
Xarray-like формы (n_samples, n_features)

Входные образцы.

yarray-like формы (n_samples,) или (n_samples, n_outputs), по умолчанию=None

Целевые значения (None для преобразований без учителя).

**fit_paramsdict

Дополнительные параметры обучения. Передавайте их, только если оценщик принимает дополнительные параметры в своём методе fit.

Возвращает:
X_newndarray-массив формы (n_samples, n_features_new)

Преобразованный массив.

get_feature_names_out(input_features=None)[исходный код]

Возвращает названия выходных признаков для преобразования.

Параметры:
input_featuresarray-like из строк или None, по умолчанию=None

Входные признаки.

  • Если input_features равно None, то feature_names_in_ используется как входные названия признаков. Если feature_names_in_ не определён, генерируются следующие входные названия признаков: ["x0", "x1", ..., "x(n_features_in_ - 1)"].
  • Если input_features является array-like, то input_features должен совпадать с feature_names_in_, если определён feature_names_in_.
Возвращает:
feature_names_outndarray из строковых объектов

Совпадает с входными признаками.

get_metadata_routing()[исходный код]

Возвращает маршрутизацию метаданных этого объекта.

См. руководство пользователя, чтобы узнать, как работает механизм маршрутизации.

Возвращает:
routingMetadataRequest

Объект MetadataRequest, содержащий сведения о маршрутизации.

get_params(deep=True)[исходный код]

Возвращает параметры этого оценщика.

Параметры:
deepbool, по умолчанию=True

Если True, возвращает параметры этого оценщика и содержащихся в нём подобъектов, которые являются оценщиками.

Возвращает:
paramsdict

Сопоставление имён параметров с их значениями.

set_output(*, transform=None)[исходный код]

Задаёт контейнер для выходных данных.

Подробнее см. в руководстве пользователя, а пример использования API см. в разделе Знакомство с API set_output.

Параметры:
transform{“default”, “pandas”, “polars”}, по умолчанию=None

Настраивает формат выходных данных для transform и fit_transform.

  • "default": формат выходных данных преобразователя по умолчанию
  • "pandas": выходные данные в формате DataFrame
  • "polars": выходные данные в формате Polars
  • None: конфигурация преобразования не изменяется

Добавлено в версии 1.4: Добавлен параметр "polars".

Возвращает:
selfэкземпляр оценщика

Экземпляр оценщика.

set_params(**params)[исходный код]

Задаёт параметры этого оценщика.

Метод работает как с простыми оценщиками, так и с вложенными объектами (например, Pipeline). У последних параметры имеют вид <component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.

Параметры:
**paramsdict

Параметры оценщика.

Возвращает:
selfэкземпляр оценщика

Экземпляр оценщика.

set_transform_request(*, copy:bool|None|str='$UNCHANGED$') → TfidfTransformer[исходный код]

Настраивает, нужно ли запрашивать передачу метаданных в метод transform.

Обратите внимание: этот метод имеет значение только тогда, когда данный оценщик используется как подчинённый оценщик внутри метаоценщика и включена маршрутизация метаданных с помощью enable_metadata_routing=True (см. sklearn.set_config). Подробнее о работе механизма маршрутизации см. в руководстве пользователя.

Для каждого параметра доступны следующие варианты:

  • True: метаданные запрашиваются и передаются в transform, если они предоставлены. Если метаданные не предоставлены, запрос игнорируется.
  • False: метаданные не запрашиваются, и метаоценщик не будет передавать их в transform.
  • None: метаданные не запрашиваются, и метаоценщик вызовет ошибку, если пользователь их предоставит.
  • str: метаданные должны передаваться метаоценщику под указанным псевдонимом, а не под исходным именем.

Значение по умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменить запрос для одних параметров, не затрагивая остальные.

Добавлено в версии 1.3.

Параметры:
copystr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра copy в transform.

Возвращает:
selfobject

Обновлённый объект.

transform(X, copy=True)[исходный код]

Преобразует матрицу счётчиков в представление tf или tf-idf.

Параметры:
Xразреженная матрица формы (n_samples, n_features)

Матрица счётчиков терминов/токенов.

copybool, по умолчанию=True

Копировать ли X и выполнять операции над копией или выполнять операции на месте. copy=False действует только для разреженной матрицы CSR.

Возвращает:
vectorsразреженная матрица формы (n_samples, n_features)

Матрица «документ–термин» с весами tf-idf.

Примеры из галереи

Классификация текстового набора данных с частичным привлечением учителя

Кластеризация текстовых документов с помощью k-means

Сравнение FeatureHasher и DictVectorizer

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.feature_extraction.text.TfidfTransformer.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API