Spec-Zone.ru › scikit-learn

Примечание

Перейти в конец, чтобы скачать полный код примера или запустить этот пример в браузере через JupyterLite или Binder.

Знакомство с API set_output

В этом примере демонстрируется API set_output для настройки преобразователей, возвращающих DataFrame pandas. set_output можно настроить для каждого оценщика, вызвав метод set_output, или глобально, задав set_config(transform_output="pandas"). Подробности см. в SLEP018.

Сначала загрузим набор данных iris в виде DataFrame, чтобы продемонстрировать API set_output.

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

X, y = load_iris(as_frame=True, return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=0)
X_train.head()
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)
60 5.0 2.0 3.5 1.0
1 4.9 3.0 1.4 0.2
8 4.4 2.9 1.4 0.2
93 5.0 2.3 3.3 1.0
106 4.9 2.5 4.5 1.7


Чтобы настроить оценщик, например preprocessing.StandardScaler, для возврата DataFrame, вызовите set_output. Для работы этой возможности необходимо установить pandas.

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler().set_output(transform="pandas")

scaler.fit(X_train)
X_test_scaled = scaler.transform(X_test)
X_test_scaled.head()
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)
39 -0.894264 0.798301 -1.271411 -1.327605
12 -1.244466 -0.086944 -1.327407 -1.459074
48 -0.660797 1.462234 -1.271411 -1.327605
23 -0.894264 0.576989 -1.159419 -0.933197
81 -0.427329 -1.414810 -0.039497 -0.275851


set_output можно вызвать после fit, чтобы впоследствии настроить transform.

scaler2 = StandardScaler()

scaler2.fit(X_train)
X_test_np = scaler2.transform(X_test)
print(f"Default output type: {type(X_test_np).__name__}")

scaler2.set_output(transform="pandas")
X_test_df = scaler2.transform(X_test)
print(f"Configured pandas output type: {type(X_test_df).__name__}")
Default output type: ndarray
Configured pandas output type: DataFrame

В pipeline.Pipeline параметр set_output настраивает все этапы на возврат DataFrame.

from sklearn.feature_selection import SelectPercentile
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline

clf = make_pipeline(
    StandardScaler(), SelectPercentile(percentile=75), LogisticRegression()
)
clf.set_output(transform="pandas")
clf.fit(X_train, y_train)
Pipeline(steps=[('standardscaler', StandardScaler()),
                ('selectpercentile', SelectPercentile(percentile=75)),
                ('logisticregression', LogisticRegression())])
В среде Jupyter повторно выполните эту ячейку, чтобы отобразить HTML-представление, или доверьте этому блокноту.
На GitHub HTML-представление не отображается; попробуйте открыть эту страницу с помощью nbviewer.org.
Параметры
steps steps: список кортежей

Список кортежей (имя этапа, оценщик), которые последовательно объединяются
в цепочку. Для совместимости с API scikit-learn все этапы
должны определять `fit`. Все этапы, кроме последнего, также должны определять `transform`. Дополнительные сведения см. в разделе
:ref:`Объединение оценщиков <combining_estimators>`.
[('standardscaler', ...), ('selectpercentile', ...), ...]
transform_input transform_input: список строк, по умолчанию None

Имена параметров :term:`метаданных`, которые конвейер должен преобразовать
перед передачей этапу, который их использует.

Это позволяет этапам конвейера преобразовывать некоторые входные аргументы ``fit`` (кроме ``X``) до этапа, которому они требуются.
Требование задаётся с помощью :ref:`маршрутизации метаданных <metadata_routing>`.
Например, так можно передать проверочный набор через конвейер.

Этот параметр можно задать, только если включена маршрутизация метаданных. Её можно
включить с помощью ``sklearn.set_config(enable_metadata_routing=True)``.

.. добавлено в версии:: 1.6
None
memory memory: строка или объект с интерфейсом joblib.Memory, по умолчанию None

Используется для кэширования обученных преобразователей конвейера. Последний этап
никогда не кэшируется, даже если он является преобразователем. По умолчанию кэширование
не выполняется. Если указана строка, она задаёт путь к
каталогу кэширования. При включении кэширования перед обучением создаются копии преобразователей.
Поэтому нельзя напрямую проверить экземпляр преобразователя, переданный
конвейеру. Чтобы изучить оценщики внутри конвейера, используйте атрибут ``named_steps``
или ``steps``. Кэширование преобразователей полезно, если обучение занимает много времени. См.
:ref:`sphx_glr_auto_examples_neighbors_plot_caching_nearest_neighbors.py`
пример включения кэширования.
None
verbose verbose: bool, по умолчанию False

Если значение True, по завершении каждого этапа выводится затраченное на него время.
False
Обученные атрибуты
Имя Тип Значение
classes_ classes_: ndarray формы (n_classes,)

Метки классов. Существует только в том случае, если последний этап конвейера — классификатор.
ndarray[int64](3,) [0,1,2]
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. добавлено в версии:: 1.0
ndarray[object](4,) ['sepal length (cm)','sepal width (cm)','petal length (cm)', 'petal width (cm)']
n_features_in_ n_features_in_: int

Количество признаков, обнаруженных во время :term:`обучения`. Определено только в том случае, если
первый базовый оценщик в `steps` предоставляет такой атрибут
при обучении.

.. добавлено в версии:: 0.24
int 4
Параметры
copy copy: bool, по умолчанию=True

Если False, попытаться избежать копирования и вместо этого выполнить масштабирование на месте.
Это не всегда гарантированно выполняется на месте; например, если данные
не являются массивом NumPy или разреженной матрицей CSR из scipy, всё ещё может
быть возвращена копия.
True
with_mean with_mean: bool, по умолчанию=True

Если True, центрировать данные перед масштабированием.
Это не работает (и вызывает исключение) при применении к
разреженным матрицам, поскольку их центрирование требует создания плотной
матрицы, которая в типичных случаях может оказаться слишком большой для размещения в
памяти.
True
with_std with_std: bool, по умолчанию=True

Если True, масштабировать данные до единичной дисперсии (или, что эквивалентно,
единичного стандартного отклонения).
True
Обученные атрибуты
Имя Тип Значение
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

Имена признаков, обнаруженных во время :term:`fit`. Определяется только в том случае, если `X`
содержит имена признаков, все из которых являются строками.

.. versionadded:: 1.0
ndarray[object](4,) ['sepal length (cm)','sepal width (cm)','petal length (cm)', 'petal width (cm)']
mean_ mean_: ndarray формы (n_features,) или None

Среднее значение каждого признака в обучающем наборе.
Равно ``None``, если ``with_mean=False`` и ``with_std=False``.
ndarray[float64](4,) [5.87,3.04,3.77,1.21]
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 4
n_samples_seen_ n_samples_seen_: int или ndarray формы (n_features,)

Количество образцов, обработанных оценивателем для каждого признака.
Если пропущенных образцов нет, ``n_samples_seen`` будет целым числом,
иначе — массивом типа int. Если используются
`sample_weights`, значение будет числом с плавающей запятой (если пропущенных данных нет)
или массивом типа float, содержащим сумму учтённых на данный момент весов.
Сбрасывается при новых вызовах fit, но увеличивается при последовательных
вызовах ``partial_fit``.
float64 112
scale_ scale_: ndarray формы (n_features,) или None

Относительный коэффициент масштабирования данных для каждого признака, обеспечивающий нулевое среднее и единичную
дисперсию. Обычно он вычисляется с помощью `np.sqrt(var_)`. Если дисперсия
равна нулю, добиться единичной дисперсии невозможно, поэтому данные остаются
без изменений, а коэффициент масштабирования равен 1. `scale_` равен `None`,
если `with_std=False`.

.. versionadded:: 0.17
*scale_*
ndarray[float64](4,) [0.86,0.45,1.79,0.76]
var_ var_: ndarray формы (n_features,) или None

Дисперсия каждого признака в обучающем наборе. Используется для вычисления
`scale_`. Равно ``None``, если ``with_mean=False`` и
``with_std=False``.
ndarray[float64](4,) [0.73,0.2 ,3.19,0.58]
4 признака
sepal length (cm)
sepal width (cm)
petal length (cm)
petal width (cm)
Параметры
percentile percentile: int, по умолчанию=10

Процент признаков, которые нужно оставить.
75
score_func score_func: вызываемый объект, по умолчанию=f_classif

Функция, принимающая два массива X и y и возвращающая пару массивов
(scores, pvalues) или один массив со значениями оценок.
По умолчанию используется f_classif (см. раздел «См. также» ниже). Функция по умолчанию работает только
с задачами классификации.

.. versionadded:: 0.18
<function f_c...x7841675185c0>
Обученные атрибуты
Имя Тип Значение
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

Имена признаков, обнаруженных во время :term:`fit`. Определяется только в том случае, если `X`
содержит имена признаков, все из которых являются строками.

.. versionadded:: 1.0
ndarray[object](4,) ['sepal length (cm)','sepal width (cm)','petal length (cm)', 'petal width (cm)']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 4
pvalues_ pvalues_: массивоподобный объект формы (n_features,)

p-значения оценок признаков; None, если `score_func` вернула только оценки.
ndarray[float64](4,) [0.,0.,0.,0.]
scores_ scores_: массивоподобный объект формы (n_features,)

Оценки признаков.
ndarray[float64](4,) [ 95. , 37.25,763.25,765.64]
3 признака
sepal length (cm)
petal length (cm)
petal width (cm)
Параметры
penalty penalty: {'l1', 'l2', 'elasticnet', None}, по умолчанию='l2'

Задаёт норму штрафа:

- `None`: штраф не применяется;
- `'l2'`: применяется штрафной член L2; это вариант по умолчанию;
- `'l1'`: применяется штрафной член L1;
- `'elasticnet'`: применяются штрафные члены L1 и L2.

.. warning::
Некоторые штрафы могут быть несовместимы с отдельными решателями. См. параметр
`solver` ниже, чтобы узнать о совместимости штрафа и
решателя.

.. versionadded:: 0.19
Штраф L1 с решателем SAGA (поддерживает сочетание 'multinomial' и L1)

.. deprecated:: 1.8
Параметр `penalty` устарел в версии 1.8 и будет удалён в версии 1.10.
Вместо него используйте `l1_ratio` и `C`. Задайте `l1_ratio=0` для `penalty='l2'`,
`l1_ratio=1` для `penalty='l1'`, любое значение `l1_ratio` от 0 до 1
для `penalty='elasticnet'` и `C=np.inf` для `penalty=None`.
'deprecated'
C C: float, по умолчанию=1.0

Обратная сила регуляризации; должно быть положительным числом с плавающей запятой.
Как и в методе опорных векторов, меньшие значения соответствуют более сильной
регуляризации. При `C=np.inf` логистическая регрессия не имеет штрафа.
Пример влияния настройки параметра `C`
при штрафе L1 см. здесь:
:ref:`sphx_glr_auto_examples_linear_model_plot_logistic_path.py`.
1.0
l1_ratio l1_ratio: float, по умолчанию=0.0

Параметр смешивания Elastic-Net, где `0 <= l1_ratio <= 1`. Значение
`l1_ratio=1` задаёт только штраф L1, а `l1_ratio=0` — только штраф L2.
Любое значение от 0 до 1 задаёт штраф Elastic-Net вида
`l1_ratio * L1 + (1 - l1_ratio) * L2`.

.. warning::
Некоторые значения `l1_ratio`, то есть некоторые штрафы, могут быть несовместимы с отдельными
решателями. См. параметр `solver` ниже, чтобы узнать о совместимости штрафа и решателя.

.. versionchanged:: 1.8
Значение по умолчанию изменено с None на 0.0.

.. deprecated:: 1.8
Значение `None` устарело и будет удалено в версии 1.10. Всегда используйте
`l1_ratio`, чтобы задать тип штрафа.
0.0
dual dual: bool, по умолчанию=False

Двойная (с ограничениями) или прямая (регуляризованная; см. также
:ref:`это уравнение <regularized-logistic-loss>`) формулировка. Двойная формулировка
реализована только для штрафа L2 с решателем liblinear. Предпочтительно использовать `dual=False`,
если n_samples > n_features.
False
tol tol: float, по умолчанию=1e-4

Допуск для критерия остановки.
0.0001
fit_intercept fit_intercept: bool, по умолчанию=True

Определяет, нужно ли добавлять к функции принятия решения
константу (также называемую смещением или свободным членом).
True
intercept_scaling intercept_scaling: float, по умолчанию=1

Используется только при выборе решателя `liblinear`
и значении `True` у `self.fit_intercept`. В этом случае `x` становится
`[x, self.intercept_scaling]`,
то есть к вектору экземпляра добавляется «синтетический» признак с постоянным значением,
равным `intercept_scaling`.
Свободный член равен
``intercept_scaling * synthetic_feature_weight``.

.. note::
Вес синтетического признака, как и веса всех остальных признаков,
подвержен регуляризации L1 или L2.
Чтобы уменьшить влияние регуляризации на вес синтетического признака
(и, следовательно, на свободный член), нужно увеличить `intercept_scaling`.
1
class_weight class_weight: dict или 'balanced', по умолчанию=None

Веса классов в формате ``{class_label: weight}``.
Если параметр не задан, предполагается, что вес всех классов равен единице.

Режим "balanced" автоматически использует значения y для корректировки
весов, обратно пропорциональных частотам классов во входных данных,
по формуле ``n_samples / (n_classes * np.bincount(y))``.

Если задан sample_weight, эти веса будут перемножены с ним (он передаётся
через метод fit).

.. versionadded:: 0.17
*class_weight='balanced'*
None
random_state random_state: int, экземпляр RandomState, по умолчанию=None

Используется для перемешивания данных, если ``solver`` равен 'sag', 'saga' или 'liblinear'.
Подробности см. в :term:`глоссарии <random_state>`.
None
solver solver: {'lbfgs', 'liblinear', 'newton-cg', 'newton-cholesky', 'sag', 'saga'}, по умолчанию='lbfgs'

Алгоритм, используемый для решения задачи оптимизации. По умолчанию — 'lbfgs'.
При выборе решателя следует учитывать следующие особенности:

- 'lbfgs' — хороший вариант по умолчанию, поскольку он достаточно хорошо работает с широким
кругом задач.
- Для задач :term:`многоклассовой классификации` (`n_classes >= 3`) все решатели, кроме
'liblinear', минимизируют полную мультиномиальную функцию потерь; 'liblinear' вызовет
ошибку.
- 'newton-cholesky' хорошо подходит, если
`n_samples` >> `n_features * n_classes`, особенно для категориальных признаков с редкими категориями, закодированных методом one-hot. Учтите, что потребление памяти
этим решателем квадратично зависит от `n_features * n_classes`,
поскольку он явно вычисляет полную матрицу Гессе.
- Для небольших наборов данных хорошо подходит 'liblinear', а решатели 'sag'
и 'saga' работают быстрее на больших наборах;
- 'liblinear' по умолчанию поддерживает только бинарную классификацию. Для применения схемы
«один против остальных» в многоклассовой задаче его можно обернуть в
:class:`~sklearn.multiclass.OneVsRestClassifier`.

.. warning::
Выбор алгоритма зависит от выбранного штрафа (`l1_ratio=0`
для штрафа L2, `l1_ratio=1` для штрафа L1 и `0 < l1_ratio < 1` для
Elastic-Net), а также от поддержки (мультиномиальной) многоклассовой классификации:

================= ======================== ======================
solver l1_ratio мультиномиальная многоклассовая классификация
================= ======================== ======================
'lbfgs' l1_ratio=0 да
'liblinear' l1_ratio=1 или l1_ratio=0 нет
'newton-cg' l1_ratio=0 да
'newton-cholesky' l1_ratio=0 да
'sag' l1_ratio=0 да
'saga' 0<=l1_ratio<=1 да
================= ======================== ======================

.. note::
Быстрая сходимость 'sag' и 'saga' гарантируется только для признаков
с примерно одинаковым масштабом. Данные можно предварительно обработать с помощью
масштабировщика из :mod:`sklearn.preprocessing`.

.. seealso::
Дополнительные сведения о :class:`LogisticRegression`, в частности
таблицу :ref:`Table <logistic_regression_solvers>` со сводкой поддержки решателями различных штрафов,
см. в :ref:`руководстве пользователя <Logistic_regression>`.

.. versionadded:: 0.17
Решатель стохастического градиента по усреднённому градиенту (SAG). Поддержка мультиномиальной классификации появилась в
версии 0.18.
.. versionadded:: 0.19
Решатель SAGA.
.. versionchanged:: 0.22
В версии 0.22 решатель по умолчанию изменён с 'liblinear' на 'lbfgs'.
.. versionadded:: 1.2
Решатель newton-cholesky. Поддержка мультиномиальной классификации появилась в версии 1.6.
'lbfgs'
max_iter max_iter: int, по умолчанию=100

Максимальное количество итераций, выполняемых решателями для достижения сходимости.
100
verbose verbose: int, по умолчанию=0

Для решателей liblinear и lbfgs задайте любое положительное значение,
чтобы включить подробный вывод.
0
warm_start warm_start: bool, по умолчанию=False

Если задано значение True, результат предыдущего вызова fit используется в качестве
начального приближения; в противном случае предыдущий результат просто удаляется.
Не используется для решателя liblinear. См. :term:`глоссарий <warm_start>`.

.. versionadded:: 0.17
*warm_start* для поддержки решателей *lbfgs*, *newton-cg*, *sag*, *saga*.
False
n_jobs n_jobs: int, по умолчанию=None

Не оказывает никакого эффекта.

.. deprecated:: 1.8
Параметр `n_jobs` устарел в версии 1.8 и будет удалён в версии 1.10.
None
Обученные атрибуты
Имя Тип Значение
classes_ classes_: ndarray формы (n_classes, )

Список меток классов, известных классификатору.
ndarray[int64](3,) [0,1,2]
coef_ coef_: ndarray или матрица CSR формы (1, n_features) или (n_classes, n_features)

Коэффициенты признаков в функции принятия решения.

Для бинарной задачи `coef_` имеет форму (1, n_features).

По умолчанию создаётся плотный массив, но его можно преобразовать в
разреженный формат (CSR) с помощью :meth:`sparsify` (это может быть полезно
при регуляризации L1, когда многие коэффициенты равны нулю), а затем обратно в
плотный с помощью :meth:`densify`.
ndarray[float64](3, 3) [[-0.47,-2.21,-2.06], [ 0.11, 0.31,-0.5 ], [ 0.36, 1.89, 2.55]]
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

Имена признаков, обнаруженных во время :term:`fit`. Определяется только в том случае, если `X`
содержит имена признаков, все из которых являются строками.

.. versionadded:: 1.0
ndarray[object](3,) ['sepal length (cm)','petal length (cm)','petal width (cm)']
intercept_ intercept_: ndarray формы (1,) или (n_classes,)

Свободный член (также называемый смещением), добавляемый к функции принятия решения.

Если для `fit_intercept` задано значение False, свободный член равен нулю.
Для бинарной задачи `intercept_` имеет форму (1,).
ndarray[float64](3,) [-0.88, 1.91,-1.02]
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 3
n_iter_ n_iter_: ndarray формы (1, )

Фактическое количество итераций для всех классов.

.. versionchanged:: 0.20

В SciPy <= 1.0.0 количество итераций lbfgs могло превышать
``max_iter``. Теперь ``n_iter_`` будет содержать значение не больше ``max_iter``.
ndarray[int32](1,) [13]


Каждый преобразователь в конвейере настроен на возврат DataFrame. Это означает, что последний шаг логистической регрессии содержит имена входных признаков.

clf[-1].feature_names_in_
array(['sepal length (cm)', 'petal length (cm)', 'petal width (cm)'],
      dtype=object)

Примечание

Если использовать метод set_params, преобразователь будет заменён новым, для которого задан формат вывода по умолчанию.

clf.set_params(standardscaler=StandardScaler())
clf.fit(X_train, y_train)
clf[-1].feature_names_in_
array(['x0', 'x2', 'x3'], dtype=object)

Чтобы сохранить предполагаемое поведение, предварительно примените set_output к новому преобразователю

scaler = StandardScaler().set_output(transform="pandas")
clf.set_params(standardscaler=scaler)
clf.fit(X_train, y_train)
clf[-1].feature_names_in_
array(['sepal length (cm)', 'petal length (cm)', 'petal width (cm)'],
      dtype=object)

Далее загрузим набор данных Titanic, чтобы продемонстрировать set_output с помощью compose.ColumnTransformer и разнородными данными.

from sklearn.datasets import fetch_openml

X, y = fetch_openml("titanic", version=1, as_frame=True, return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y)

API set_output можно настроить глобально с помощью set_config, установив transform_output в значение "pandas".

from sklearn import set_config
from sklearn.compose import ColumnTransformer
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import OneHotEncoder, StandardScaler

set_config(transform_output="pandas")

num_pipe = make_pipeline(SimpleImputer(), StandardScaler())
num_cols = ["age", "fare"]
ct = ColumnTransformer(
    (
        ("numerical", num_pipe, num_cols),
        (
            "categorical",
            OneHotEncoder(
                sparse_output=False, drop="if_binary", handle_unknown="ignore"
            ),
            ["embarked", "sex", "pclass"],
        ),
    ),
    verbose_feature_names_out=False,
)
clf = make_pipeline(ct, SelectPercentile(percentile=50), LogisticRegression())
clf.fit(X_train, y_train)
clf.score(X_test, y_test)
/home/circleci/project/sklearn/preprocessing/_encoders.py:262: UserWarning: Found unknown categories in columns [0] during transform. These unknown categories will be encoded as all zeros
  warnings.warn(msg, UserWarning)

0.7835365853658537

При глобальной конфигурации все преобразователи возвращают DataFrame. Это позволяет легко построить график коэффициентов логистической регрессии с соответствующими именами признаков.

import pandas as pd

log_reg = clf[-1]
coef = pd.Series(log_reg.coef_.ravel(), index=log_reg.feature_names_in_)
_ = coef.sort_values().plot.barh()
plot set output

Чтобы продемонстрировать работу config_context ниже, сначала вернём transform_output значение по умолчанию.

set_config(transform_output="default")

При настройке типа выходных данных с помощью config_context учитывается конфигурация, действующая в момент вызова transform или fit_transform. Настройка этих параметров только при создании или обучении преобразователя не влияет на результат.

from sklearn import config_context

scaler = StandardScaler()
scaler.fit(X_train[num_cols])
StandardScaler()
В среде Jupyter повторно выполните эту ячейку, чтобы отобразить HTML-представление, или доверьте этому ноутбуку.
На GitHub HTML-представление не отображается. Попробуйте открыть эту страницу на nbviewer.org.
Параметры
copy copy: bool, default=True

Если False, попытаться избежать создания копии и выполнить масштабирование на месте.
Это не гарантируется для всех случаев; например, если данные представлены
не массивом NumPy или разреженной матрицей scipy.sparse CSR, может быть
возвращена копия.
True
with_mean with_mean: bool, default=True

Если True, центрировать данные перед масштабированием.
Это не работает (и вызывает исключение) для разреженных матриц,
так как центрирование требует создания плотной матрицы, которая
в типичных случаях может оказаться слишком большой для размещения в
памяти.
True
with_std with_std: bool, default=True

Если True, масштабировать данные до единичной дисперсии (или, что равносильно,
до единичного стандартного отклонения).
True
Обученные атрибуты
Имя Тип Значение
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

Имена признаков, обнаруженных во время :term:`fit`. Определён только в том случае, если `X`
содержит имена признаков, представленные строками.

.. versionadded:: 1.0
ndarray[object](2,) ['age','fare']
mean_ mean_: ndarray формы (n_features,) или None

Среднее значение каждого признака в обучающем наборе.
Равно ``None``, если ``with_mean=False`` и ``with_std=False``.
ndarray[float64](2,) [29.97,32.94]
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 2
n_samples_seen_ n_samples_seen_: int или ndarray формы (n_features,)

Количество образцов, обработанных оценивателем для каждого признака.
Если пропущенных образцов нет, ``n_samples_seen`` будет целым числом;
в противном случае это будет массив типа int. Если используются
`sample_weights`, значение будет иметь тип float (если пропущенных данных нет)
или представлять собой массив типа float, содержащий сумму весов, учтённых на данный момент.
Сбрасывается при новых вызовах fit, но увеличивается
при вызовах ``partial_fit``.
ndarray[float64](2,) [785.,980.]
scale_ scale_: ndarray формы (n_features,) или None

Относительный масштаб данных для каждого признака, обеспечивающий нулевое среднее и единичную
дисперсию. Обычно вычисляется с помощью `np.sqrt(var_)`. Если дисперсия
равна нулю, единичную дисперсию получить невозможно, поэтому данные остаются
без изменений, а коэффициент масштабирования равен 1. `scale_` равно `None`,
если ``with_std=False``.

.. versionadded:: 0.17
*scale_*
ndarray[float64](2,) [14.64,50.29]
var_ var_: ndarray формы (n_features,) или None

Дисперсия каждого признака в обучающем наборе. Используется для вычисления
`scale_`. Равно ``None``, если ``with_mean=False`` и
``with_std=False``.
ndarray[float64](2,) [ 214.37,2529.09]
2 признака
age
fare


with config_context(transform_output="pandas"):
    # the output of transform will be a Pandas DataFrame
    X_test_scaled = scaler.transform(X_test[num_cols])
X_test_scaled.head()
age fare
199 -0.407505 0.329470
325 0.002291 -0.396402
1013 NaN -0.494831
500 1.095080 -0.137902
355 0.412087 -0.396402


вне контекстного менеджера выходными данными будет массив NumPy

X_test_scaled = scaler.transform(X_test[num_cols])
X_test_scaled[:5]
array([[-0.4075046 ,  0.32947033],
       [ 0.00229114, -0.39640224],
       [        nan, -0.49483117],
       [ 1.09507978, -0.13790203],
       [ 0.41208688, -0.39640224]])

Общее время выполнения скрипта: (0 минут 0.168 секунды)

Launch binder
Launch JupyterLite

Download Jupyter notebook: plot_set_output.ipynb

Download Python source code: plot_set_output.py

Download zipped: plot_set_output.zip

Похожие примеры

Основные нововведения scikit-learn 1.2

ColumnTransformer для данных разных типов

Отображение конвейеров

Основные нововведения scikit-learn 1.4

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/auto_examples/miscellaneous/plot_set_output.html

Spec-Zone.ru

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