Spec-Zone.ru › scikit-learn

StackingRegressor

classsklearn.ensemble.StackingRegressor(estimators, final_estimator=None, *, cv=None, 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

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

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 используется не для оценки модели, а для предсказания.

n_jobsint, по умолчанию=None

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

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

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

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

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

Атрибуты:
estimators_список оценивателей

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

named_estimators_Bunch

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

n_features_in_int

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

feature_names_in_ndarray формы (n_features_in_,)

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

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

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

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

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

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

См. также

StackingClassifier

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

Список литературы

[1]

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

Примеры

>>> from sklearn.datasets import load_diabetes
>>> from sklearn.linear_model import RidgeCV
>>> from sklearn.svm import LinearSVR
>>> from sklearn.ensemble import RandomForestRegressor
>>> from sklearn.ensemble import StackingRegressor
>>> X, y = load_diabetes(return_X_y=True)
>>> estimators = [
...     ('lr', RidgeCV()),
...     ('svr', LinearSVR(random_state=42))
... ]
>>> reg = StackingRegressor(
...     estimators=estimators,
...     final_estimator=RandomForestRegressor(n_estimators=10,
...                                           random_state=42)
... )
>>> from sklearn.model_selection import train_test_split
>>> X_train, X_test, y_train, y_test = train_test_split(
...     X, y, random_state=42
... )
>>> reg.fit(X_train, y_train).score(X_test, y_test)
0.3...
fit(X, y, **fit_params)[исходный код]

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

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

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

yarray-like формы (n_samples,)

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

**fit_paramsdict

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

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

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

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

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

Обучить оцениватели и вернуть предсказания для X каждого оценивателя.

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

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

yarray-like формы (n_samples,)

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

**fit_paramsdict

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

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

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

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

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

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

Параметры:
input_featuresarray-like из строк или None, по умолчанию=None

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

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

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

Возвращает:
feature_names_outndarray из объектов str

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

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{array-like, разреженная матрица} формы (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)

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

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

Вернуть коэффициент детерминации на тестовых данных.

Коэффициент детерминации \(R^2\) определяется как \((1 - \frac{u}{v})\), где \(u\) — остаточная сумма квадратов ((y_true - y_pred)** 2).sum(), а \(v\) — общая сумма квадратов ((y_true - y_true.mean()) ** 2).sum(). Наилучшее возможное значение оценки — 1.0; она может быть отрицательной (поскольку модель может быть сколь угодно хуже). Постоянная модель, всегда предсказывающая ожидаемое значение y без учёта входных признаков, получит оценку \(R^2\), равную 0.0.

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

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

yarray-like формы (n_samples,) или (n_samples, n_outputs)

Истинные значения для X.

sample_weightarray-like формы (n_samples,), по умолчанию=None

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

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

\(R^2\) для self.predict(X) относительно y.

Примечания

Оценка \(R^2\), используемая при вызове score для регрессора, использует multioutput='uniform_average' начиная с версии 0.23, чтобы соответствовать значению по умолчанию для r2_score. Это влияет на метод score всех регрессоров с несколькими выходами (кроме MultiOutputRegressor).

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

Настроить, следует ли запрашивать передачу метаданных методу 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.

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

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

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

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

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

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

Возвращает:
y_predsndarray формы (n_samples, 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.StackingRegressor.html

Spec-Zone.ru

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