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