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.
Примеры из галереи
© 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