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)[исходный код]

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

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

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

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

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

Параметры:
estimatorsсписок пар (str, estimator)

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

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

final_estimatorоцениватель, по умолчанию None

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

cvint, генератор кросс-валидации, итерируемый объект или “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_jobsint, по умолчанию None

Количество задач, выполняемых параллельно при fit всех estimators. None означает 1, если только выполнение не происходит в контексте joblib.parallel_backend. Значение -1 означает использование всех процессоров. Подробнее см. в Глоссарии.

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

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

verboseint, по умолчанию 0

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

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

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

estimators_список оценивателей

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

named_estimators_Bunch

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

n_features_in_int

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

feature_names_in_ndarray формы (n_features_in_,)

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

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

final_estimator_оцениватель

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

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

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

См. также

StackingRegressor

Стек оценивателей с финальным регрессором.

Примечания

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

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

Литература

[1]

Уолперт, Дэвид Х. «Многоуровневое обобщение». 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)[исходный код]

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

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

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

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

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

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

Обучить оцениватели.

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

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

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

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

**fit_paramsdict

Параметры, передаваемые базовым оценивателям.

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

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

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

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

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

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

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

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

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

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

**fit_paramsdict

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

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

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

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

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

Параметры:
input_featuresмассивоподобный объект из строк или None, по умолчанию 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 из строковых объектов

Названия преобразованных признаков.

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

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

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

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

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

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

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

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

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

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

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

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

Имена параметров и оценивателей, сопоставленные их значениям, либо имена параметров, сопоставленные их значениям.

propertynamed_estimators

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

Возвращает:
Bunch
predict(X, **predict_params)[исходный код]

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

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

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

**predict_paramsdict из 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 формы (n_samples,) или (n_samples, n_output)

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

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

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

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

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

Возвращает:
probabilitiesndarray формы (n_samples, n_classes) или список ndarray формы (n_output,)

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

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

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

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

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

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

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

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

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

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

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

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

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)[исходный код]

Задать параметры оценивателя из ансамбля.

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

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

Конкретные параметры, например set_params(parameter_name=new_value). Помимо параметров оценивателя, можно задавать отдельные оцениватели из списка оценивателей или удалять их, присваивая им значение ‘drop’.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Результаты предсказаний для каждого оценивателя.

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

Основные нововведения scikit-learn 0.22

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

Spec-Zone.ru

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