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
Метод, используемый каждым базовым оценщиком.
- 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{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_iffeature_names_in_определен.
Если
passthroughявляетсяFalse, тогда только именаestimatorsиспользуются для генерации выходных имен признаков.
- Возвращает:
- feature_names_outndarray из str объектов
Преобразованные имена признаков.
- 6332()[источник]#
Получить маршрутизацию метаданных этого объекта.
Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.
Добавлено в версии 1.6.
- Возвращает:
- маршрутизацияMetadataRouter
A
MetadataRouterИнкапсуляция информации о маршрутизации.
- get_params(глубокий=True)[источник]#
Получить параметры оценщика из ансамбля.
Возвращает параметры, заданные в конструкторе, а также оценщики, содержащиеся в
estimatorsпараметр.- Параметры:
- глубокийbool, по умолчанию=True
Установка значения True получает различные оценки и параметры оценок.
- Возвращает:
- paramsdict
Имена параметров и оценщиков, сопоставленные с их значениями, или имена параметров, сопоставленные с их значениями.
- 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. Учтите, что это будет учитывать только неопределенность в конечном оценщике.Если
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{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": Вывод PolarsNone: Конфигурация преобразования не изменена
Добавлено в версии 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)
Выходы предсказаний для каждого оценивателя.