Spec-Zone.ru › scikit-learn

ClassifierChain

classsklearn.multioutput.ClassifierChain(estimator, *, order=None, cv=None, chain_method='predict', random_state=None, verbose=False)[исходный код]

Модель для многометочной классификации, которая выстраивает бинарные классификаторы в цепочку.

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

Пример использования ClassifierChain и преимуществ его ансамбля см. в примере ClassifierChain на наборе данных дрожжей.

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

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

Параметры:
estimatorоцениватель

Базовый оцениватель, на основе которого строится цепочка классификаторов.

orderмассивоподобный объект формы (n_outputs,) или ‘random’, по умолчанию None

Если None, порядок будет определяться порядком столбцов в матрице меток Y.:

order = [0, 1, 2, ..., Y.shape[1] - 1]

Порядок цепочки можно задать явно, передав список целых чисел. Например, для цепочки длины 5.:

order = [1, 3, 2, 4, 0]

означает, что первая модель в цепочке будет делать предсказания для столбца 1 матрицы Y, вторая модель — для столбца 3 и т. д.

Если order равен random, будет использоваться случайный порядок.

cvцелое число, генератор перекрёстной проверки или итерируемый объект, по умолчанию None

Определяет, следует ли использовать предсказания, полученные с помощью перекрёстной проверки, или истинные метки для результатов предыдущих оценивателей в цепочке. Возможные значения cv:

  • None — использовать истинные метки при обучении,
  • целое число — задать количество фолдов в (Stratified)KFold,
  • разбиение для перекрёстной проверки,
  • итерируемый объект, возвращающий разбиения (train, test) в виде массивов индексов.
chain_method{‘predict’, ‘predict_proba’, ‘predict_log_proba’, ‘decision_function’} или список таких строк, по умолчанию ’predict’

Метод предсказания, используемый оценивателями в цепочке для получения признаков-предсказаний предыдущих оценивателей в цепочке.

  • если str — название метода;
  • если передан список из str — названия методов в порядке предпочтения. Используется первый метод из списка, реализованный в base_estimator.

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

random_stateцелое число, экземпляр RandomState или None, необязательно (по умолчанию None)

Если order='random', определяет генерацию случайных чисел для порядка цепочки. Кроме того, управляет начальным значением генератора случайных чисел, передаваемым каждому base_estimator на каждой итерации построения цепочки. Поэтому параметр используется только в том случае, если base_estimator предоставляет random_state. Передайте целое число, чтобы получать воспроизводимые результаты при нескольких вызовах функции. См. глоссарий.

verboseлогическое значение, по умолчанию False

Если True, по мере завершения каждой модели выводится ход выполнения цепочки.

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

Атрибуты:
classes_список

Список массивов длины len(estimators_), содержащих метки классов для каждого оценивателя в цепочке.

estimators_список

Список копий base_estimator.

order_список

Порядок меток в цепочке классификаторов.

chain_method_строка

Метод предсказания, используемый оценивателями в цепочке для получения признаков-предсказаний.

n_features_in_целое число

Количество признаков, обнаруженных во время fit. Определён только в том случае, если базовый base_estimator предоставляет такой атрибут при обучении.

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

feature_names_in_ndarray формы (n_features_in_,)

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

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

См. также

RegressorChain

Аналогичный объект для регрессии.

MultiOutputClassifier

Классифицирует каждый выход независимо, а не с помощью цепочки.

Литература

Jesse Read, Bernhard Pfahringer, Geoff Holmes, Eibe Frank, «Classifier Chains for Multi-label Classification», 2009.

Примеры

>>> from sklearn.datasets import make_multilabel_classification
>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.multioutput import ClassifierChain
>>> X, Y = make_multilabel_classification(
...    n_samples=12, n_classes=3, random_state=0
... )
>>> X_train, X_test, Y_train, Y_test = train_test_split(
...    X, Y, random_state=0
... )
>>> base_lr = LogisticRegression(solver='lbfgs', random_state=0)
>>> chain = ClassifierChain(base_lr, order='random', random_state=0)
>>> chain.fit(X_train, Y_train).predict(X_test)
array([[1., 1., 0.],
       [1., 0., 0.],
       [0., 1., 0.]])
>>> chain.predict_proba(X_test)
array([[0.8387, 0.9431, 0.4576],
       [0.8878, 0.3684, 0.2640],
       [0.0321, 0.9935, 0.0626]])
decision_function(X)[исходный код]

Вычислить decision_function моделей в цепочке.

Параметры:
Xмассивоподобный объект формы (n_samples, n_features)

Входные данные.

Возвращает:
Y_decisionмассивоподобный объект формы (n_samples, n_classes)

Возвращает функцию принятия решения для каждого образца каждой модели в цепочке.

fit(X, Y, **fit_params)[исходный код]

Обучить модель на матрице данных X и целевых значениях Y.

Параметры:
X{массивоподобный объект, разреженная матрица} формы (n_samples, n_features)

Входные данные.

Yмассивоподобный объект формы (n_samples, n_classes)

Целевые значения.

**fit_paramsсловарь вида string -> object

Параметры, передаваемые методу fit каждого шага.

Доступно, только если enable_metadata_routing=True. См. Руководство пользователя.

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

Возвращает:
selfобъект

Экземпляр класса.

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

Получить настройки маршрутизации метаданных этого объекта.

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

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

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

MetadataRouter, содержащий сведения о маршрутизации.

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

Получить параметры этого оценивателя.

Параметры:
deepлогическое значение, по умолчанию True

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

Возвращает:
paramsсловарь

Названия параметров и соответствующие им значения.

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

Выполнить предсказание для матрицы данных X с помощью модели ClassifierChain.

Параметры:
X{массивоподобный объект, разреженная матрица} формы (n_samples, n_features)

Входные данные.

Возвращает:
Y_predмассивоподобный объект формы (n_samples, n_classes)

Предсказанные значения.

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

Предсказать логарифмы оценок вероятностей.

Параметры:
X{массивоподобный объект, разреженная матрица} формы (n_samples, n_features)

Входные данные.

Возвращает:
Y_log_probмассивоподобный объект формы (n_samples, n_classes)

Предсказанные логарифмы вероятностей.

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

Предсказать оценки вероятностей.

Параметры:
X{массивоподобный объект, разреженная матрица} формы (n_samples, n_features)

Входные данные.

Возвращает:
Y_probмассивоподобный объект формы (n_samples, n_classes)

Предсказанные вероятности.

score(X, y, sample_weight=None)[исходный код]

Вернуть точность на переданных данных и метках.

В многометочной классификации это точность по подмножеству — строгая метрика, поскольку для каждого образца требуется правильно предсказать весь набор меток.

Параметры:
Xмассивоподобный объект формы (n_samples, n_features)

Тестовые образцы.

yмассивоподобный объект формы (n_samples,) или (n_samples, n_outputs)

Истинные метки для X.

sample_weightмассивоподобный объект формы (n_samples,), по умолчанию None

Веса образцов.

Возвращает:
scoreвещественное число

Средняя точность self.predict(X) относительно y.

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

Задать параметры этого оценивателя.

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

Параметры:
**paramsсловарь

Параметры оценивателя.

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

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

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

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

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

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

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

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

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

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

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

Возвращает:
selfобъект

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

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

Многометочная классификация с использованием цепочки классификаторов

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

Spec-Zone.ru

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