Spec-Zone.ru › scikit-learn

StackingClassifier

classsklearn.ensemble.StackingClassifier(estimators, final_estimator=None, *, cv=None, stack_method='auto', n_jobs=None, passthrough=False, verbose=0)[source]

Стек оценщиков с конечным классификатором.

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

Обратите внимание, что estimators_ обучаются на полном X, в то время как final_estimator_ обучается с использованием прогнозов на основе перекрестной проверки базовых оценщиков, используя cross_val_predict.

Дополнительную информацию см. в Руководстве пользователя.

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

Параметры:
estimatorsсписок из (строка, оценщик)

Базовые оценщики, которые будут объединены в стек. Каждый элемент списка определяется как кортеж из строки (т.е. имя) и экземпляра оценщика. Оценщик может быть установлен в «drop» с помощью set_params.

Тип оценщика, как правило, ожидается как классификатор. Однако в некоторых случаях можно передать регрессор (например, для порядковой регрессии).

final_estimatorоценщик, по умолчанию=None

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

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

Определяет стратегию разделения на перекрестную проверку, используемую в cross_val_predict для обучения final_estimator. Возможные входные данные для cv:

  • None, для использования по умолчанию 5-кратной перекрестной проверки,
  • целое число, для указания числа блоков в (слоистой) KFold,
  • объект, используемый в качестве генератора перекрестной проверки,
  • итерируемый объект, возвращающий разделения обучения и тестирования,
  • "prefit", для предположения, что estimators уже подготовлены. В этом случае оценщики не будут переобучаться.

Для целочисленных/None входных данных, если оценщик является классификатором, а y — бинарный или многоклассовый, используется StratifiedKFold. Во всех остальных случаях используется KFold. Эти разделители инициализируются shuffle=False, поэтому разделения будут одинаковыми при каждом вызове.

Подробные сведения о различных стратегиях перекрестной проверки, которые могут быть здесь использованы, см. в Руководстве пользователя.

Если передано «prefit», предполагается, что все estimators уже подготовлены. final_estimator_ обучается на прогнозах estimators на полном наборе обучающих данных и не являются прогнозами перекрестной проверки. Обратите внимание, что если модели были обучены на одних и тех же данных для обучения модели стекинга, существует очень высокий риск переобучения.

Добавлен в версии 1.1: Вариант «prefit» был добавлен в 1.1

Примечание

Большее количество разделений не принесет пользы, если количество обучающих выборок достаточно велико. Действительно, время обучения увеличится. cv не используется для оценки модели, а только для прогнозирования.

stack_method{‘auto’, ‘predict_proba’, ‘decision_function’, ‘predict’}, по умолчанию=’auto’

Методы, вызываемые для каждого базового оценщика. Они могут быть:

  • если ‘auto’, будет пытаться вызвать для каждого оценщика 'predict_proba', 'decision_function' или 'predict' в этом порядке.
  • в противном случае, один из 'predict_proba', 'decision_function' или 'predict' . Если метод не реализован оценщиком, будет выдано сообщение об ошибке.
n_jobsцелое число, по умолчанию=None

Количество задач для параллельной обработки fit всех estimators. None означает 1, если не в контексте joblib.parallel_backend . -1 означает использование всех процессоров. См. Словарь для получения дополнительной информации.

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

Когда False, только прогнозы оценщиков будут использованы в качестве обучающих данных для final_estimator. Когда True, final_estimator обучается на прогнозах, а также на исходных обучающих данных.

verboseцелое число, по умолчанию=0

Уровень подробности.

Атрибуты:
classes_массив формы (n_classes,) или список массивов, если y является типа "multilabel-indicator".

Метки классов.

estimators_список оценщиков

Элементы параметра estimators, подготовленные на обучающих данных. Если оценщик был установлен на 'drop', он не будет отображаться в estimators_. При cv="prefit", estimators_ устанавливается на estimators и не переобучается.

named_estimators_Bunch

Атрибут для доступа к любым подготовленным под-оценщикам по имени.

n_features_in_целое число

Количество признаков, увиденных во время fit.

feature_names_in_массив формы (n_features_in_,)

Имена признаков, увиденных во время fit. Определяются только если базовые оценщики экспонируют такой атрибут при подготовке.

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

final_estimator_оценщик

Классификатор, обученный на выводах estimators_ и ответственный за конечные прогнозы.

stack_method_список строк

Метод, используемый каждым базовым оценщиком.

См. также

StackingRegressor

Стек оценщиков с конечным регрессором.

Примечания

Когда predict_proba используется каждым оценщиком (т.е. в большинстве случаев для stack_method='auto' или специально для stack_method='predict_proba'), первый столбец, предсказанный каждым оценщиком, будет отброшен в случае задачи бинарной классификации. Действительно, оба признака будут идеально коллинеарны.

В некоторых случаях (например, порядковая регрессия), можно передать регрессоры в качестве первого слоя StackingClassifier. Однако обратите внимание, что y будут внутренне закодированы в числовом порядке возрастания или лексикографическом порядке. Если этот порядок не подходит, необходимо вручную закодировать классы в желаемом порядке.

Ссылки

[1]

Wolpert, David H. «Stacked generalization.» Neural networks 5.2 (1992): 241-259.

Примеры

>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.svm import LinearSVC
>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.preprocessing import StandardScaler
>>> from sklearn.pipeline import make_pipeline
>>> from sklearn.ensemble import StackingClassifier
>>> X, y = load_iris(return_X_y=True)
>>> estimators = [
...     ('rf', RandomForestClassifier(n_estimators=10, random_state=42)),
...     ('svr', make_pipeline(StandardScaler(),
...                           LinearSVC(random_state=42)))
... ]
>>> clf = StackingClassifier(
...     estimators=estimators, final_estimator=LogisticRegression()
... )
>>> from sklearn.model_selection import train_test_split
>>> X_train, X_test, y_train, y_test = train_test_split(
...     X, y, stratify=y, random_state=42
... )
>>> clf.fit(X_train, y_train).score(X_test, y_test)
0.9...
decision_function(X)[source]

Функция принятия решения для выборок в X с использованием конечного оценщика.

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

Векторы обучения, где n_samples — число выборок, а n_features — число признаков.

Возвращает:
decisionsмассив формы (n_samples,), (n_samples, n_classes) или (n_samples, n_classes * (n_classes-1) / 2)

Функция принятия решения, вычисленная конечным оценщиком.

fit(X, y, *, sample_weight=None, **fit_params)[source]

Обучение оценщиков.

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Векторы обучения, где n_samples — количество примеров, а n_features — количество признаков.

yarray-like of shape (n_samples,)

Значения целевой переменной. Обратите внимание, что y будут кодироваться внутри в порядке возрастания или лексикографическом порядке. Если порядок важен (например, для порядковой регрессии), необходимо численно закодировать целевую переменную y перед вызовом fit.

sample_weightarray-like of shape (n_samples,), default=None

Веса примеров. Если None, то все примеры имеют равный вес. Обратите внимание, что это поддерживается только если все основанные оценщики поддерживают веса примеров.

**fit_paramsdict

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

Добавлен в версии 1.6: Доступен только если enable_metadata_routing=True, что можно задать, используя sklearn.set_config(enable_metadata_routing=True). См. Руководство по маршрутизации метаданных для получения дополнительной информации.

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

Возвращает обученную экземпляр оценщика.

fit_transform(X, y=None, **fit_params)[source]

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

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

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

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

yarray-like of shape (n_samples,) or (n_samples, n_outputs), default=None

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

**fit_paramsdict

Дополнительные параметры обучения.

Возвращает:
X_newndarray array of shape (n_samples, n_features_new)

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

get_feature_names_out(input_features=None)[source]

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

Параметры:
input_featuresarray-like of str or None, default=None

Входящие признаки. Имена входящих признаков используются только когда passthrough является True.

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

Если passthrough является False, то используются только имена estimators для генерации имён выходных признаков.

Возвращает:
feature_names_outndarray of str objects

Преобразованные имена признаков.

get_metadata_routing()[source]

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

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

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

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

MetadataRouter объект, содержащий информацию о маршрутизации.

get_params(deep=True)[source]

Получить параметры оценщика из ансамбля.

Возвращает параметры, заданные в конструкторе, а также оценщики, содержащиеся в параметре estimators.

Параметры:
deepbool, default=True

Установка в True получает различные оценщики и параметры оценщиков.

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

Параметры и имена оценщиков, сопоставленные со своими значениями, или имена параметров, сопоставленные со своими значениями.

propertyn_features_in_

Количество признаков, увиденных во время fit.

propertynamed_estimators

Словарь для доступа к любым обученным под-оценщикам по имени.

Возвращает:
Bunch
predict(X, **predict_params)[source]

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

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Векторы обучения, где n_samples — количество примеров, а n_features — количество признаков.

**predict_paramsdict of str -> obj

Параметры для predict вызываемые final_estimator. Обратите внимание, что это может быть использовано для возврата неопределённостей от некоторых оценщиков с return_std или return_cov. Имейте в виду, что это будет учитывать неопределённость только в конечном оценщике.

  • Если enable_metadata_routing=False (по умолчанию): Параметры напрямую передаются методу predict оценщика final_estimator.
  • Если enable_metadata_routing=True: Параметры безопасно передаются методу predict оценщика final_estimator. См. Руководство пользователя по маршрутизации метаданных для получения дополнительных сведений.

Изменено в версии 1.6: **predict_params можно передать через API маршрутизации метаданных.

Возвращаемое значение:
y_predndarray of shape (n_samples,) or (n_samples, n_output)

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

predict_proba(X)[source]

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

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Векторы обучения, где n_samples — количество примеров, а n_features — количество признаков.

Возвращаемое значение:
probabilitiesndarray of shape (n_samples, n_classes) or list of ndarray of shape (n_output,)

Вероятности классов входных примеров.

score(X, y, sample_weight=None)[source]

Возвращает среднюю точность на заданных тестовых данных и метках.

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

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

Тестовые примеры.

yarray-like of shape (n_samples,) or (n_samples, n_outputs)

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

sample_weightarray-like of shape (n_samples,), default=None

Веса примеров.

Возвращаемое значение:
scorefloat

Средняя точность self.predict(X) по отношению к y.

set_fit_request(*, sample_weight:bool|None|str='$UNCHANGED$') → StackingClassifier[source]

Запрос метаданных, передаваемых методу fit.

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

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

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

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

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

Примечание

Этот метод актуален только в том случае, если этот оценщик используется в качестве под-оценщика мета-оценщика, например, внутри Pipeline. В противном случае он не оказывает влияния.

Параметры:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

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

Возвращаемое значение:
selfobject

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

set_output(*, transform=None)[source]

Установить контейнер вывода.

См. Введение в API set_output для примера использования API.

Параметры:
transform{“default”, “pandas”, “polars”}, default=None

Настройка вывода transform и fit_transform.

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

Добавлен в версии 1.4: "polars" опция была добавлена.

Возвращаемое значение:
selfestimator instance

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

set_params(**params)[source]

Установите параметры оценщика из ансамбля.

Допустимые ключи параметров можно перечислить с помощью get_params(). Обратите внимание, что вы можете напрямую установить параметры оценщиков, содержащихся в estimators.

Параметры:
**paramsименованные аргументы

Конкретные параметры, используя, например, set_params(parameter_name=new_value). Кроме того, для установки параметров оценщика также можно установить отдельные оценщики или удалить их, установив их в «drop».

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

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

set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') → StackingClassifier[source]

Запрос метаданных, передаваемых методу score.

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

Варианты для каждого параметра:

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

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

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

Примечание

Этот метод актуален только в том случае, если этот оценщик используется в качестве под-оценщика мета-оценщика, например, внутри Pipeline. В противном случае он не оказывает никакого влияния.

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

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

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

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

transform(X)[source]

Возвращает метки классов или вероятности для X для каждого оценщика.

Параметры:
X{array-like, sparse matrix} формы (n_samples, n_features)

Векторы обучения, где n_samples — количество выборок, а n_features — количество признаков.

Возвращает:
y_predsмассив формы (n_samples, n_estimators) или (n_samples, n_classes * n_estimators)

Выходные данные прогнозов для каждого оценщика.

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

Основные моменты выпуска scikit-learn 0.22

© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.ensemble.StackingClassifier.html

Spec-Zone.ru

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