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'. Если метод не реализован оценщиком, будет выдано сообщение об ошибке.
- если ‘auto’, будет пытаться вызвать для каждого оценщика
- 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_список строк
-
Метод, используемый каждым базовым оценщиком.
-
classes_массив формы (n_classes,) или список массивов, если
См. также
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)
-
Выходные данные прогнозов для каждого оценщика.
Примеры из галереи
© 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