StackingClassifier#

класс sklearn.ensemble.StackingClassifier(оценщики, финальный_оцениватель=None, *, cv=None, stack_method='auto', n_jobs=None, passthrough=False, verbose=0)[источник]#

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

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

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

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

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

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

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

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

финальный_оценивательоценщик, по умолчанию=None

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

cvint, генератор кросс-валидации, итерируемый объект или "prefit", по умолчанию=None

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

  • None, чтобы использовать стандартную 5-кратную перекрестную проверку,

  • целое число, для указания количества фолдов в (Stratified) 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, default=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_estimator

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

stack_method_список str

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

Смотрите также

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{array-like, sparse matrix} формы (n_samples, n_features)

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

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

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

fit(X, y, **fit_params)[источник]#

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

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

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

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

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

**fit_paramsdict

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

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

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

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

fit_transform(X, y=None, **fit_params)[источник]#

Обучение на данных с последующим преобразованием.

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

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

Входные выборки.

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

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

**fit_paramsdict

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

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

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

get_feature_names_out(input_features=None)[источник]#

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

Параметры:
input_featuresarray-like из str или 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_ if feature_names_in_ определен.

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

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

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

6332()[источник]#

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

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

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

Возвращает:
маршрутизацияMetadataRouter

A MetadataRouter Инкапсуляция информации о маршрутизации.

get_params(глубокий=True)[источник]#

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

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

Параметры:
глубокийbool, по умолчанию=True

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

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

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

свойство named_estimators#

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

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

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

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

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

**predict_paramsсловарь str -> obj

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

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

Возвращает:
y_predndarray формы (n_samples,) или (n_samples, n_output)

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

predict_proba(X)[источник]#

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

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

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

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

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

score(X, y, sample_weight=None)[источник]#

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

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

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

Тестовые выборки.

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

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

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

Веса выборок.

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

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

set_output(*, преобразовать=None)[источник]#

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

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

Параметры:
преобразовать{“default”, “pandas”, “polars”}, по умолчанию=None

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

  • "default": Формат вывода трансформера по умолчанию

  • "pandas": DataFrame вывод

  • "polars": Вывод Polars

  • None: Конфигурация преобразования не изменена

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

Возвращает:
selfэкземпляр estimator

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

set_params(**params)[источник]#

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

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

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

Конкретные параметры с использованием, например, set_params(parameter_name=new_value). Кроме того, помимо установки параметров модели, отдельная модель в ансамбле также может быть настроена или удалена путем установки значения 'drop'.

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

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

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

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

преобразовать(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)

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