Spec-Zone.ru › scikit-learn

Примечание

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

Создание признаков, связанных со временем

В этой записной книжке представлены различные стратегии использования признаков, связанных со временем, для задачи регрессии спроса на прокат велосипедов, который в значительной степени зависит от деловых циклов (дней, недель, месяцев) и годовых сезонных циклов.

В ходе работы мы расскажем, как выполнять периодическое создание признаков с помощью класса sklearn.preprocessing.SplineTransformer и его параметра extrapolation="periodic".

# Authors: The scikit-learn developers
# SPDX-License-Identifier: BSD-3-Clause

Исследование данных набора Bike Sharing Demand

Сначала загрузим данные из репозитория OpenML.

from sklearn.datasets import fetch_openml

bike_sharing = fetch_openml("Bike_Sharing_Demand", version=2, as_frame=True)
df = bike_sharing.frame

Чтобы получить общее представление о периодических закономерностях в данных, рассмотрим средний спрос по часам в течение недели.

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

import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(12, 4))
average_week_demand = df.groupby(["weekday", "hour"])["count"].mean()
average_week_demand.plot(ax=ax)
_ = ax.set(
    title="Average hourly bike demand during the week",
    xticks=[i * 24 for i in range(7)],
    xticklabels=["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
    xlabel="Time of the week",
    ylabel="Number of bike rentals",
)
Average hourly bike demand during the week

Целевая переменная задачи прогнозирования — абсолютное количество аренд велосипедов за каждый час:

df["count"].max()
np.int64(977)

Изменим масштаб целевой переменной (количества аренд велосипедов за час), чтобы прогнозировать относительный спрос. Так среднюю абсолютную ошибку будет проще интерпретировать как долю от максимального спроса.

Примечание

Метод fit используемых в этой записной книжке моделей минимизирует среднеквадратичную ошибку для оценки условного среднего. Однако абсолютная ошибка позволяет оценить условную медиану.

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

y = df["count"] / df["count"].max()
fig, ax = plt.subplots(figsize=(12, 4))
y.hist(bins=30, ax=ax)
_ = ax.set(
    xlabel="Fraction of rented fleet demand",
    ylabel="Number of hours",
)
plot cyclical feature engineering

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

X = df.drop("count", axis="columns")
X
season year month hour holiday weekday workingday weather temp feel_temp humidity windspeed
0 spring 0 1 0 False 6 False clear 9.84 14.395 0.81 0.0000
1 spring 0 1 1 False 6 False clear 9.02 13.635 0.80 0.0000
2 spring 0 1 2 False 6 False clear 9.02 13.635 0.80 0.0000
3 spring 0 1 3 False 6 False clear 9.84 14.395 0.75 0.0000
4 spring 0 1 4 False 6 False clear 9.84 14.395 0.75 0.0000
... ... ... ... ... ... ... ... ... ... ... ... ...
17374 spring 1 12 19 False 1 True misty 10.66 12.880 0.60 11.0014
17375 spring 1 12 20 False 1 True misty 10.66 12.880 0.60 11.0014
17376 spring 1 12 21 False 1 True clear 10.66 12.880 0.60 11.0014
17377 spring 1 12 22 False 1 True clear 10.66 13.635 0.56 8.9981
17378 spring 1 12 23 False 1 True clear 10.66 13.635 0.65 8.9981

17379 rows × 12 columns



Примечание

Если бы информация о времени содержалась только в столбце с датой или датой и временем, мы могли бы с помощью pandas разбить ее на час суток, день недели, день месяца и месяц года: https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#time-date-components

Теперь рассмотрим распределение категориальных переменных, начав с "weather":

X["weather"].value_counts()
weather
clear         11413
misty          4544
rain           1419
heavy_rain        3
Name: count, dtype: int64

Поскольку событий "heavy_rain" всего 3, мы не можем использовать эту категорию для обучения моделей машинного обучения с перекрестной проверкой. Вместо этого мы упростим представление, объединив их с категорией "rain".

X["weather"] = (
    X["weather"]
    .astype(object)
    .replace(to_replace="heavy_rain", value="rain")
    .astype("category")
)
X["weather"].value_counts()
weather
clear    11413
misty     4544
rain      1422
Name: count, dtype: int64

Как и ожидалось, переменная "season" имеет сбалансированное распределение:

X["season"].value_counts()
season
fall      4496
summer    4409
spring    4242
winter    4232
Name: count, dtype: int64

Перекрестная проверка с учетом времени

Поскольку набор данных представляет собой упорядоченный по времени журнал событий (почасовой спрос), для максимально реалистичной оценки модели прогнозирования спроса мы будем использовать разделитель для перекрестной проверки с учетом времени. Между обучающей и тестовой частями разбиений мы оставим промежуток в 2 дня. Кроме того, мы ограничим размер обучающего набора, чтобы повысить стабильность результатов фолдов перекрестной проверки.

1000 тестовых точек данных должно быть достаточно для оценки эффективности модели. Это чуть меньше полутора месяцев непрерывных тестовых данных:

from sklearn.model_selection import TimeSeriesSplit

ts_cv = TimeSeriesSplit(
    n_splits=5,
    gap=48,
    max_train_size=10000,
    test_size=1000,
)

Давайте вручную проверим различные разбиения, чтобы убедиться, что TimeSeriesSplit работает так, как мы ожидаем. Начнем с первого разбиения:

all_splits = list(ts_cv.split(X, y))
train_0, test_0 = all_splits[0]
X.iloc[test_0]
season year month hour holiday weekday workingday weather temp feel_temp humidity windspeed
12379 summer 1 6 0 False 2 True clear 22.14 25.760 0.68 27.9993
12380 summer 1 6 1 False 2 True misty 21.32 25.000 0.77 22.0028
12381 summer 1 6 2 False 2 True rain 21.32 25.000 0.72 19.9995
12382 summer 1 6 3 False 2 True rain 20.50 24.240 0.82 12.9980
12383 summer 1 6 4 False 2 True rain 20.50 24.240 0.82 12.9980
... ... ... ... ... ... ... ... ... ... ... ... ...
13374 fall 1 7 11 False 1 True clear 34.44 40.150 0.53 15.0013
13375 fall 1 7 12 False 1 True clear 34.44 39.395 0.49 8.9981
13376 fall 1 7 13 False 1 True clear 34.44 39.395 0.49 19.0012
13377 fall 1 7 14 False 1 True clear 36.08 40.910 0.42 7.0015
13378 fall 1 7 15 False 1 True clear 35.26 40.150 0.47 16.9979

1000 rows × 12 columns



X.iloc[train_0]
season year month hour holiday weekday workingday weather temp feel_temp humidity windspeed
2331 summer 0 4 1 False 2 True misty 25.42 31.060 0.50 6.0032
2332 summer 0 4 2 False 2 True misty 24.60 31.060 0.53 8.9981
2333 summer 0 4 3 False 2 True misty 23.78 27.275 0.56 8.9981
2334 summer 0 4 4 False 2 True misty 22.96 26.515 0.64 8.9981
2335 summer 0 4 5 False 2 True misty 22.14 25.760 0.68 8.9981
... ... ... ... ... ... ... ... ... ... ... ... ...
12326 summer 1 6 19 False 6 False clear 26.24 31.060 0.36 11.0014
12327 summer 1 6 20 False 6 False clear 25.42 31.060 0.35 19.0012
12328 summer 1 6 21 False 6 False clear 24.60 31.060 0.40 7.0015
12329 summer 1 6 22 False 6 False clear 23.78 27.275 0.46 8.9981
12330 summer 1 6 23 False 6 False clear 22.96 26.515 0.52 7.0015

10000 rows × 12 columns



Теперь рассмотрим последнее разбиение:

train_4, test_4 = all_splits[4]
X.iloc[test_4]
season year month hour holiday weekday workingday weather temp feel_temp humidity windspeed
16379 winter 1 11 5 False 2 True misty 13.94 16.665 0.66 8.9981
16380 winter 1 11 6 False 2 True misty 13.94 16.665 0.71 11.0014
16381 winter 1 11 7 False 2 True clear 13.12 16.665 0.76 6.0032
16382 winter 1 11 8 False 2 True clear 13.94 16.665 0.71 8.9981
16383 winter 1 11 9 False 2 True misty 14.76 18.940 0.71 0.0000
... ... ... ... ... ... ... ... ... ... ... ... ...
17374 spring 1 12 19 False 1 True misty 10.66 12.880 0.60 11.0014
17375 spring 1 12 20 False 1 True misty 10.66 12.880 0.60 11.0014
17376 spring 1 12 21 False 1 True clear 10.66 12.880 0.60 11.0014
17377 spring 1 12 22 False 1 True clear 10.66 13.635 0.56 8.9981
17378 spring 1 12 23 False 1 True clear 10.66 13.635 0.65 8.9981

1000 rows × 12 columns



X.iloc[train_4]
season year month hour holiday weekday workingday weather temp feel_temp humidity windspeed
6331 winter 0 9 9 False 1 True misty 26.24 28.790 0.89 12.9980
6332 winter 0 9 10 False 1 True misty 26.24 28.790 0.89 12.9980
6333 winter 0 9 11 False 1 True clear 27.88 31.820 0.79 15.0013
6334 winter 0 9 12 False 1 True misty 27.88 31.820 0.79 11.0014
6335 winter 0 9 13 False 1 True misty 28.70 33.335 0.74 11.0014
... ... ... ... ... ... ... ... ... ... ... ... ...
16326 winter 1 11 0 False 0 False misty 12.30 15.150 0.70 11.0014
16327 winter 1 11 1 False 0 False clear 12.30 14.395 0.70 12.9980
16328 winter 1 11 2 False 0 False clear 11.48 14.395 0.81 7.0015
16329 winter 1 11 3 False 0 False misty 12.30 15.150 0.81 11.0014
16330 winter 1 11 4 False 0 False misty 12.30 14.395 0.81 12.9980

10000 rows × 12 columns



Все в порядке. Теперь можно приступать к построению прогностических моделей!

Градиентный бустинг

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

Здесь мы используем современный HistGradientBoostingRegressor со встроенной поддержкой категориальных признаков. Поэтому нам нужно лишь установить categorical_features="from_dtype", чтобы признаки с категориальным dtype считались категориальными. Для справки мы извлекаем категориальные признаки из фрейма данных на основе dtype. Для этих признаков внутренние деревья используют специальное правило разбиения.

Числовые переменные не требуют предварительной обработки, и для простоты мы пробуем только гиперпараметры модели по умолчанию:

from sklearn.compose import ColumnTransformer
from sklearn.ensemble import HistGradientBoostingRegressor
from sklearn.model_selection import cross_validate
from sklearn.pipeline import make_pipeline

gbrt = HistGradientBoostingRegressor(categorical_features="from_dtype", random_state=42)
categorical_columns = X.columns[X.dtypes == "category"]
print("Categorical features:", categorical_columns.tolist())
Categorical features: ['season', 'holiday', 'workingday', 'weather']

Оценим модель градиентного бустинга с помощью средней абсолютной ошибки относительного спроса, усреднённой по 5 разбиениям временной кросс-валидации:

import numpy as np


def evaluate(model, X, y, cv, model_prop=None, model_step=None):
    cv_results = cross_validate(
        model,
        X,
        y,
        cv=cv,
        scoring=["neg_mean_absolute_error", "neg_root_mean_squared_error"],
        return_estimator=True,
    )
    if model_prop is not None:
        if model_step is not None:
            values = [
                getattr(m[model_step], model_prop) for m in cv_results["estimator"]
            ]
        else:
            values = [getattr(m, model_prop) for m in cv_results["estimator"]]
        print(f"Mean model.{model_prop} = {np.mean(values)}")
    mae = -cv_results["test_neg_mean_absolute_error"]
    rmse = -cv_results["test_neg_root_mean_squared_error"]
    print(
        f"Mean Absolute Error:     {mae.mean():.3f} +/- {mae.std():.3f}\n"
        f"Root Mean Squared Error: {rmse.mean():.3f} +/- {rmse.std():.3f}"
    )
    # To display the fitted estimator diagrams in the notebook.
    return cv_results["estimator"][0]


evaluate(gbrt, X, y, cv=ts_cv, model_prop="n_iter_")
Mean model.n_iter_ = 100.0
Mean Absolute Error:     0.044 +/- 0.003
Root Mean Squared Error: 0.068 +/- 0.005
HistGradientBoostingRegressor(random_state=42)
В среде Jupyter повторно выполните эту ячейку, чтобы отобразить HTML-представление, или доверьте выполнение блокноту.
На GitHub HTML-представление отобразить невозможно; попробуйте открыть эту страницу с помощью nbviewer.org.
Параметры
random_state random_state: int, экземпляр RandomState или None, по умолчанию=None

Генератор псевдослучайных чисел для управления подвыборкой в процессе
разбиения на бины и разделением данных на обучающую и проверочную выборки,
если включена ранняя остановка.
Передайте int, чтобы получать воспроизводимые результаты при нескольких вызовах функции.
См. :term:`Глоссарий <random_state>`.
42
loss loss: {'squared_error', 'absolute_error', 'gamma', 'poisson', 'quantile'}, по умолчанию='squared_error'

Функция потерь, используемая в процессе бустинга. Обратите внимание,
что потери "squared error", "gamma" и "poisson" фактически реализуют
«половину суммы квадратов ошибок», «половину гамма-девианса» и «половину
девианса Пуассона», что упрощает вычисление градиента. Кроме того,
для потерь "gamma" и "poisson" внутри используется логарифмическая связь; для
"gamma" требуется ``y > 0``, а для "poisson" — ``y >= 0``.
Для "quantile" используется функция потерь pinball.

.. versionchanged:: 0.23
Добавлен вариант 'poisson'.

.. versionchanged:: 1.1
Добавлен вариант 'quantile'.

.. versionchanged:: 1.3
Добавлен вариант 'gamma'.
'squared_error'
quantile quantile: float, по умолчанию=None

Если loss равен "quantile", этот параметр задаёт оцениваемую квантиль
и должен находиться в диапазоне от 0 до 1.
None
learning_rate learning_rate: float, по умолчанию=0.1

Скорость обучения, также называемая *сжатием*. Используется как
множитель для значений листьев. Используйте ``1``, чтобы отключить
сжатие.
0.1
max_iter max_iter: int, по умолчанию=100

Максимальное число итераций процесса бустинга, то есть
максимальное число деревьев.
100
max_leaf_nodes max_leaf_nodes: int или None, по умолчанию=31

Максимальное число листьев для каждого дерева. Должно быть строго
больше 1. Если задано None, максимальное ограничение отсутствует.
31
max_depth max_depth: int или None, по умолчанию=None

Максимальная глубина каждого дерева. Глубина дерева — это число
рёбер от корня до самого глубокого листа.
По умолчанию глубина не ограничивается.
None
min_samples_leaf min_samples_leaf: int, по умолчанию=20

Минимальное число образцов в каждом листе. Для небольших наборов данных,
содержащих менее нескольких сотен образцов, рекомендуется уменьшить это значение,
так как в противном случае будут построены только очень неглубокие деревья.
20
l2_regularization l2_regularization: float, по умолчанию=0

Параметр L2-регуляризации, штрафующий листья с малыми гессианами.
Для отключения регуляризации (по умолчанию) используйте ``0``.
0.0
max_features max_features: float, по умолчанию=1.0

Доля случайно выбранных признаков при разбиении каждого узла.
Это разновидность регуляризации: меньшие значения делают деревья более слабыми
моделями и могут предотвращать переобучение.
Если заданы ограничения взаимодействия в `interaction_cst`, при выборке учитываются
только разрешённые признаки.

.. versionadded:: 1.4
1.0
max_bins max_bins: int, по умолчанию=255

Максимальное число бинов для непустых значений. Перед
обучением каждый признак входного массива `X` разбивается на
бины с целочисленными значениями, что значительно ускоряет этап обучения.
Для признаков с небольшим числом уникальных значений может использоваться меньше
бинов, чем ``max_bins``. Помимо ``max_bins`` бинов,
всегда резервируется ещё один бин для пропущенных значений. Значение не должно превышать 255.
255
categorical_features categorical_features: array-like типа {bool, int, str} формы (n_features) или формы (n_categorical_features,), по умолчанию='from_dtype'

Указывает категориальные признаки.

- None: ни один признак не будет считаться категориальным.
- boolean array-like: булева маска, указывающая категориальные признаки.
- integer array-like: целочисленные индексы категориальных
признаков.
- str array-like: имена категориальных признаков (предполагается, что обучающие
данные содержат имена признаков).
- `"from_dtype"`: столбцы фрейма данных с dtype "Categorical" и "Enum"
считаются категориальными признаками. Входные данные должны быть фреймом данных,
поддерживаемым narwhals (или совместимым с ним): должна работать функция :func:`narwhals.from_native`.
Например, это относится к фреймам данных pandas и polars.

Для каждого категориального признака допускается не более `max_bins` уникальных
категорий. Отрицательные значения категориальных признаков, закодированных числовыми
dtype, считаются пропущенными. Все категориальные значения
преобразуются в числа с плавающей точкой. Это означает, что категориальные значения
1.0 и 1 считаются одной и той же категорией.

Подробнее см. в :ref:`Руководстве пользователя <categorical_support_gbdt>` и
:ref:`sphx_glr_auto_examples_ensemble_plot_gradient_boosting_categorical.py`.

.. versionadded:: 0.24

.. versionchanged:: 1.2
Добавлена поддержка имён признаков.

.. versionchanged:: 1.4
Добавлен вариант `"from_dtype"`.

.. versionchanged:: 1.6
Значение по умолчанию изменено с `None` на `"from_dtype"`.
'from_dtype'
monotonic_cst monotonic_cst: array-like целых чисел формы (n_features) или dict, по умолчанию=None

Монотонные ограничения для каждого признака задаются следующими
целочисленными значениями:

- 1: монотонное возрастание
- 0: без ограничений
- -1: монотонное убывание

Если передан dict с ключами str, ограничения монотонности задаются для признаков по имени.
Если передан массив, соответствие признаков и ограничений определяется по позиции. См.
:ref:`monotonic_cst_features_names` для примера использования.

Подробнее см. в :ref:`Руководстве пользователя <monotonic_cst_gbdt>`.

.. versionadded:: 0.23

.. versionchanged:: 1.2
Добавлена поддержка словаря ограничений с именами признаков в качестве ключей.
None
interaction_cst interaction_cst: {"pairwise", "no_interactions"} или последовательность списков/кортежей/множеств целых чисел, по умолчанию=None

Задаёт ограничения взаимодействия — наборы признаков, которые могут
взаимодействовать друг с другом при разбиении дочерних узлов.

Каждый элемент задаёт набор индексов признаков, которым разрешено
взаимодействовать друг с другом. Если число признаков превышает
указанное в этих ограничениях, они считаются включёнными в дополнительный набор.

Строки "pairwise" и "no_interactions" — это сокращённые обозначения,
соответственно разрешающие только попарные взаимодействия или запрещающие их полностью.

Например, для 5 признаков в целом `interaction_cst=[{0, 1}]`
эквивалентно `interaction_cst=[{0, 1}, {2, 3, 4}]`
и означает, что каждая ветвь дерева будет разбиваться либо только
по признакам 0 и 1, либо только по признакам 2, 3 и 4.

См. :ref:`этот пример<ice-vs-pdp>`, где показано использование `interaction_cst`.

.. versionadded:: 1.2
None
warm_start warm_start: bool, по умолчанию=False

Если задано ``True``, повторно используется результат предыдущего вызова fit
и в ансамбль добавляются новые оцениватели. Чтобы результаты были корректными,
оцениватель следует повторно обучать только на тех же данных.
См. :term:`Глоссарий <warm_start>`.
False
early_stopping early_stopping: 'auto' или bool, по умолчанию='auto'

При значении 'auto' ранняя остановка включается, если размер выборки превышает
10000 или если в `fit` переданы `X_val` и `y_val`. Если задано True, ранняя остановка
включена, в противном случае она отключена.

.. versionadded:: 0.23
'auto'
scoring scoring: str, вызываемый объект или None, по умолчанию='loss'

Метод оценки, используемый для ранней остановки. Применяется, только если включена
`early_stopping`. Возможные варианты:

- str: варианты см. в :ref:`scoring_string_names`.
- вызываемый объект: вызываемый объект-оценщик (например, функция) с сигнатурой
``scorer(estimator, X, y)``. Подробнее см. :ref:`scoring_callable`.
- `None`: используется :ref:`коэффициент детерминации <r2_score>`
(:math:`R^2`).
- 'loss': ранняя остановка проверяется по значению функции потерь.
'loss'
validation_fraction validation_fraction: int, float или None, по умолчанию=0.1

Доля (или абсолютный размер) обучающих данных, выделяемая в качестве
проверочных данных для ранней остановки. Если задано None, ранняя остановка выполняется на
обучающих данных.
Значение игнорируется, если ранняя остановка не выполняется, например при
`early_stopping=False`, или если в fit переданы `X_val` и `y_val`.
0.1
n_iter_no_change n_iter_no_change: int, по умолчанию=10

Используется для определения момента «ранней остановки». Процесс обучения
останавливается, если ни одна из последних ``n_iter_no_change`` оценок не лучше,
чем оценка, полученная ``n_iter_no_change - 1`` итераций назад, с учётом некоторого
допуска. Используется только при выполнении ранней остановки.
10
tol tol: float, по умолчанию=1e-7

Абсолютный допуск, используемый при сравнении оценок во время ранней
остановки. Чем выше допуск, тем вероятнее ранняя остановка: при большем допуске
последующим итерациям сложнее считаться улучшением относительно эталонной оценки.
1e-07
verbose verbose: int, по умолчанию=0

Уровень подробности вывода. Если значение не равно нулю, выводится информация о
процессе обучения. ``1`` выводит только сводную информацию, ``2`` — информацию для каждой
итерации.
0
Обученные атрибуты
Имя Тип Значение
do_early_stopping_ do_early_stopping_: bool

Указывает, используется ли ранняя остановка во время обучения.
bool False
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](12,) ['season','year','month',...,'feel_temp','humidity','windspeed']
is_categorical_ is_categorical_: ndarray формы (n_features, ) или None

Булева маска категориальных признаков. Равна ``None``, если категориальные
признаки отсутствуют.
ndarray[bool](12,) [ True,False,False,...,False,False,False]
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 12
n_iter_ n_iter_: int

Число итераций, выбранное при ранней остановке в зависимости от
параметра `early_stopping`. В противном случае соответствует max_iter.
int 100
n_trees_per_iteration_ n_trees_per_iteration_: int

Число деревьев, строящихся на каждой итерации. Для регрессоров
оно всегда равно 1.
int 1
train_score_ train_score_: ndarray формы (n_iter_+1,)

Оценки на обучающих данных для каждой итерации. Первый элемент
содержит оценку ансамбля до первой итерации. Оценки
вычисляются согласно параметру ``scoring``. Если ``scoring`` не равен
'loss', оценки вычисляются на подмножестве, содержащем не более 10 000
образцов. Пустой, если ранняя остановка не выполнялась.
ndarray[float64](0,) []
validation_score_ validation_score_: ndarray формы (n_iter_+1,)

Оценки на отложенных проверочных данных для каждой итерации. Первый
элемент содержит оценку ансамбля до первой итерации.
Оценки вычисляются согласно параметру ``scoring``. Пустой, если ранняя остановка
не выполнялась или если ``validation_fraction`` равен None.
ndarray[float64](0,) []


Мы видим, что задали max_iter достаточно большим, чтобы сработала ранняя остановка.

Средняя ошибка этой модели составляет около 4–5% от максимального спроса. Это очень хороший результат для первой попытки без настройки гиперпараметров! Нам нужно было лишь явно указать категориальные переменные. Обратите внимание, что временные признаки передаются без изменений, то есть без предварительной обработки. Однако для моделей на основе деревьев это не представляет большой проблемы: они могут обучаться немонотонной зависимости между порядковыми входными признаками и целевой переменной.

Как мы увидим далее, для моделей линейной регрессии это не так.

Наивная линейная регрессия

Как обычно для линейных моделей, категориальные переменные необходимо преобразовать в one-hot-представление. Для единообразия масштабируем числовые признаки к одному диапазону 0–1 с помощью MinMaxScaler, хотя в данном случае это не сильно влияет на результаты, поскольку признаки уже имеют сопоставимые масштабы:

from sklearn.linear_model import RidgeCV
from sklearn.preprocessing import MinMaxScaler, OneHotEncoder

one_hot_encoder = OneHotEncoder(handle_unknown="ignore", sparse_output=False)
alphas = np.logspace(-6, 6, 25)
naive_linear_pipeline = make_pipeline(
    ColumnTransformer(
        transformers=[
            ("categorical", one_hot_encoder, categorical_columns),
        ],
        remainder=MinMaxScaler(),
        verbose_feature_names_out=False,
    ),
    RidgeCV(alphas=alphas),
)


evaluate(
    naive_linear_pipeline, X, y, cv=ts_cv, model_prop="alpha_", model_step="ridgecv"
)
Mean model.alpha_ = 2.7298221281347037
Mean Absolute Error:     0.142 +/- 0.014
Root Mean Squared Error: 0.184 +/- 0.020
Pipeline(steps=[('columntransformer',
                 ColumnTransformer(remainder=MinMaxScaler(),
                                   transformers=[('categorical',
                                                  OneHotEncoder(handle_unknown='ignore',
                                                                sparse_output=False),
                                                  Index(['season', 'holiday', 'workingday', 'weather'], dtype='str'))],
                                   verbose_feature_names_out=False)),
                ('ridgecv',
                 RidgeCV(alphas=array([1.00000000e-06, 3.16227766e-06, 1.00000000e-05, 3.16227766e-05,
       1.00000000e-04, 3.16227766e-04, 1.00000000e-03, 3.16227766e-03,
       1.00000000e-02, 3.16227766e-02, 1.00000000e-01, 3.16227766e-01,
       1.00000000e+00, 3.16227766e+00, 1.00000000e+01, 3.16227766e+01,
       1.00000000e+02, 3.16227766e+02, 1.00000000e+03, 3.16227766e+03,
       1.00000000e+04, 3.16227766e+04, 1.00000000e+05, 3.16227766e+05,
       1.00000000e+06])))])
В среде Jupyter повторно выполните эту ячейку, чтобы отобразить HTML-представление, или доверьте выполнение ноутбуку.
На GitHub HTML-представление не отображается; попробуйте открыть эту страницу с помощью nbviewer.org.
Параметры
steps steps: список кортежей

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

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

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

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

.. versionadded:: 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
Обученные атрибуты
Имя Тип Значение
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](12,) ['season','year','month',...,'feel_temp','humidity','windspeed']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 12
Параметры
transformers transformers: список кортежей

Список кортежей (имя, преобразователь, столбцы), задающих
объекты-преобразователи, применяемые к подмножествам данных.

name : str
Как и в Pipeline и FeatureUnion, это позволяет задавать преобразователь и
его параметры с помощью ``set_params`` и искать их при настройке
по сетке.
transformer : {'drop', 'passthrough'} или оцениватель
Оцениватель должен поддерживать :term:`fit` и :term:`transform`.
Также допускаются специальные строки 'drop' и 'passthrough',
указывающие соответственно на удаление столбцов или их передачу без
преобразования.
columns : str, массивоподобный объект строк, int, массивоподобный объект int, массивоподобный объект bool, срез или вызываемый объект
Индексирует данные по второй оси. Целые числа интерпретируются как
позиционные индексы столбцов, а строки могут ссылаться на столбцы DataFrame
по имени. Если ``transformer`` ожидает X в виде одномерного массивоподобного
объекта (вектора), следует использовать скалярную строку или целое число;
в противном случае преобразователю будет передан двумерный массив.
Вызываемому объекту передаются входные данные `X`, и он может вернуть
любое из указанных выше значений. Для выбора нескольких столбцов по имени
или типу данных можно использовать :obj:`make_column_selector`.
[('categorical', ...)]
remainder remainder: {'drop', 'passthrough'} или оцениватель, по умолчанию 'drop'

По умолчанию преобразуются и объединяются в выходных данных только столбцы,
указанные в `transformers`, а неуказанные столбцы отбрасываются (по умолчанию
используется ``'drop'``).
Если задать ``remainder='passthrough'``, все оставшиеся столбцы, которые
не указаны в `transformers`, но присутствуют в данных, переданных
в `fit`, будут автоматически переданы дальше. Это подмножество столбцов
объединяется с результатами преобразователей. Для объектов DataFrame
дополнительные столбцы, отсутствовавшие при `fit`, исключаются из результата
`transform`.
Если в качестве ``remainder`` задать оцениватель, оставшиеся
неуказанные столбцы будут обработаны этим оценивателем ``remainder``. Он
должен поддерживать :term:`fit` и :term:`transform`.
Обратите внимание: для использования этой возможности порядок столбцов DataFrame
при :term:`обучении` и :term:`преобразовании` должен совпадать.
MinMaxScaler()
verbose_feature_names_out verbose_feature_names_out: bool, str или Callable[[str, str], str], по умолчанию True

- Если True, :meth:`ColumnTransformer.get_feature_names_out` добавляет к именам
всех признаков имя преобразователя, создавшего этот признак. Это эквивалентно
заданию `verbose_feature_names_out="{transformer_name}__{feature_name}"`.
- Если False, :meth:`ColumnTransformer.get_feature_names_out` не добавляет
префиксы к именам признаков и выдаёт ошибку, если имена признаков не уникальны.
- Если задано ``Callable[[str, str], str]``,
:meth:`ColumnTransformer.get_feature_names_out` переименовывает все признаки
с использованием имени преобразователя. Первый аргумент вызываемого объекта —
имя преобразователя, второй — имя признака. Возвращаемая строка становится
новым именем признака.
- Если задано ``str``, это должна быть строка, готовая к форматированию. Строка
форматируется с использованием двух полей: ``transformer_name`` и ``feature_name``.
например, ``"{feature_name}__{transformer_name}"``. Подробнее см. описание метода
стандартной библиотеки :meth:`str.format`.

.. versionadded:: 1.0

.. versionchanged:: 1.6
`verbose_feature_names_out` может быть вызываемым объектом или строкой для форматирования.
False
sparse_threshold sparse_threshold: float, по умолчанию 0.3

Если результаты разных преобразователей содержат разреженные матрицы,
они объединяются в разреженную матрицу, если общая плотность
ниже этого значения. Укажите ``sparse_threshold=0``, чтобы всегда получать
плотный массив. Если преобразованные данные состоят только из плотных данных,
результат объединения будет плотным, и этот параметр будет проигнорирован.
0.3
n_jobs n_jobs: int, по умолчанию None

Количество заданий, выполняемых параллельно.
``None`` означает 1, если только не используется контекст :obj:`joblib.parallel_backend`.
``-1`` означает использование всех процессоров. Подробнее см. :term:`глоссарий <n_jobs>`.
None
transformer_weights transformer_weights: dict, по умолчанию None

Множители весов признаков для каждого преобразователя. Результат преобразователя
умножается на соответствующие веса. Ключи — имена преобразователей,
значения — веса.
None
verbose verbose: bool, по умолчанию False

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

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

.. versionadded:: 1.0
ndarray[object](12,) ['season','year','month',...,'feel_temp','humidity','windspeed']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 12
named_transformers_ named_transformers_: :class:`~sklearn.utils.Bunch`

Атрибут только для чтения, предоставляющий доступ к любому преобразователю по заданному имени.
Ключи — имена преобразователей, значения — обученные объекты-преобразователи.
Bunch {'categorical...inMaxScaler()}
output_indices_ output_indices_: dict

Словарь, сопоставляющий каждому имени преобразователя срез, который
соответствует индексам в преобразованном результате. Это полезно для проверки того,
какой преобразователь отвечает за каждый преобразованный
признак или признаки.

.. versionadded:: 1.0
dict {'ca...al': slice(0, 11, None), 're...er': slice(11, 19, None)}
sparse_output_ sparse_output_: bool

Логический флаг, указывающий, является ли результат ``transform``
разреженной матрицей или плотным массивом numpy. Это зависит от результатов
отдельных преобразователей и параметра `sparse_threshold`.
bool False
transformers_ transformers_: list

Коллекция обученных преобразователей в виде кортежей (имя,
обученный_преобразователь, столбец). `обученный_преобразователь` может быть оценивателем
или `'drop'`; значение `'passthrough'` заменяется эквивалентным объектом
:class:`~sklearn.preprocessing.FunctionTransformer`. Если столбцы не были выбраны,
здесь будет находиться необученный преобразователь. Если остались столбцы,
последний элемент — кортеж вида:
('remainder', transformer, remaining_columns), соответствующий параметру
``remainder``. Если остались столбцы, то
``len(transformers_)==len(transformers)+1``, иначе
``len(transformers_)==len(transformers)``.

.. versionadded:: 1.7
Формат оставшихся столбцов теперь по возможности соответствует формату других
преобразователей: если все столбцы были заданы именами столбцов (`str`),
оставшиеся столбцы хранятся как имена столбцов; если все столбцы были заданы
массивами масок (`bool`), оставшиеся столбцы также хранятся в этом формате; во всех
остальных случаях оставшиеся столбцы хранятся как индексы (`int`).
list [('ca...al', OneHotEncoder..._output=False), Index(['seaso..., dtype='str')), ('re...er', MinMaxScaler(), ['year', 'month', 'hour', 'weekday', ...])]
Index(['season', 'holiday', 'workingday', 'weather'], dtype='str')
Параметры
sparse_output sparse_output: bool, по умолчанию=True

Если значение равно ``True``, возвращается разреженная матрица/массив SciPy
в формате «сжатых разреженных строк» (CSR).

.. добавлено в версии:: 1.2
`sparse` переименован в `sparse_output`
False
handle_unknown handle_unknown: {'error', 'ignore', 'infrequent_if_exist', 'warn'}, по умолчанию='error'

Задает способ обработки неизвестных категорий во время :meth:`transform`.

- 'error' : вызывает ошибку, если во время преобразования обнаружена неизвестная категория.
- 'ignore' : если во время преобразования обнаружена неизвестная категория,
соответствующие ей столбцы с унитарным кодированием будут заполнены нулями.
При обратном преобразовании неизвестная категория будет обозначена как None.
- 'infrequent_if_exist' : если во время преобразования обнаружена неизвестная категория,
соответствующие ей столбцы с унитарным кодированием будут сопоставлены с редкой
категорией, если она существует. Редкая категория будет помещена на последнюю
позицию в кодировании. При обратном преобразовании неизвестная категория будет
сопоставлена с категорией, обозначенной `'infrequent'`, если она существует. Если
категория `'infrequent'` не существует, то :meth:`transform` и
:meth:`inverse_transform` обработают неизвестную категорию так же, как при
`handle_unknown='ignore'`. Редкие категории определяются на основе
`min_frequency` и `max_categories`. Подробнее см. в
:ref:`руководстве пользователя <encoder_infrequent_categories>`.
- 'warn' : если во время преобразования обнаружена неизвестная категория,
выдается предупреждение, после чего кодирование выполняется так, как описано для
`handle_unknown="infrequent_if_exist"`.

.. изменено в версии:: 1.1
Параметр `'infrequent_if_exist'` добавлен для автоматической обработки неизвестных
и редких категорий.

.. добавлено в версии:: 1.6
Параметр `"warn"` добавлен в версии 1.6.
'ignore'
categories categories: 'auto' или список массивоподобных объектов, по умолчанию='auto'

Категории (уникальные значения) для каждого признака:

- 'auto' : автоматически определяет категории по обучающим данным.
- list : ``categories[i]`` содержит категории, ожидаемые в i-м
столбце. Для одного признака нельзя смешивать переданные категории-строки и
числовые значения; числовые значения должны быть отсортированы.

Используемые категории можно найти в атрибуте ``categories_``.

.. добавлено в версии:: 0.20
'auto'
drop drop: {'first', 'if_binary'} или массивоподобный объект формы (n_features,), по умолчанию=None

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

Однако удаление одной категории нарушает симметрию исходного представления и поэтому
может приводить к смещению в последующих моделях, например в моделях линейной
классификации или регрессии со штрафом.

- None : сохранить все признаки (значение по умолчанию).
- 'first' : удалить первую категорию для каждого признака. Если присутствует только одна
категория, признак будет удален полностью.
- 'if_binary' : удалить первую категорию для каждого признака с двумя
категориями. Признаки с 1 или более чем 2 категориями
остаются без изменений.
- array : ``drop[i]`` — категория признака ``X[:, i]``, которую
следует удалить.

Если для объединения редких категорий заданы `max_categories` или `min_frequency`,
удаление выполняется после объединения.

.. добавлено в версии:: 0.21
Параметр `drop` добавлен в версии 0.21.

.. изменено в версии:: 0.23
Параметр `drop='if_binary'` добавлен в версии 0.23.

.. изменено в версии:: 1.1
Добавлена поддержка удаления редких категорий.
None
dtype dtype: числовой тип, по умолчанию=np.float64

Требуемый тип данных выходных значений.
<class 'numpy.float64'>
min_frequency min_frequency: int или float, по умолчанию=None

Задает минимальную частоту, ниже которой категория считается редкой.

- Если задано `int`, категории с меньшей кардинальностью будут считаться
редкими.

- Если задано `float`, редкими будут считаться категории с кардинальностью меньше
`min_frequency * n_samples`.

.. добавлено в версии:: 1.1
Подробнее см. в :ref:`руководстве пользователя <encoder_infrequent_categories>`.
None
max_categories max_categories: int, по умолчанию=None

Задает верхний предел числа выходных признаков для каждого входного
признака при обработке редких категорий. Если есть редкие
категории, `max_categories` включает категорию, представляющую редкие
категории, наряду с часто встречающимися категориями. Если задано `None`,
число выходных признаков не ограничено.

.. добавлено в версии:: 1.1
Подробнее см. в :ref:`руководстве пользователя <encoder_infrequent_categories>`.
None
feature_name_combiner feature_name_combiner: "concat" или вызываемый объект, по умолчанию="concat"

Вызываемый объект с сигнатурой `def callable(input_feature, category)`, возвращающий
строку. Используется для создания имен признаков, возвращаемых методом
:meth:`get_feature_names_out`.

`"concat"` объединяет имя закодированного признака и категорию с помощью
`feature + "_" + str(category)`. Например, для признака X со значениями 1, 6, 7 создаются
имена признаков `X_1, X_6, X_7`.

.. добавлено в версии:: 1.3
'concat'
Обученные атрибуты
Имя Тип Значение
categories_ categories_: список массивов

Категории каждого признака, определенные во время обучения
(в порядке признаков в X и в соответствии с выходными данными
``transform``). Включает категорию, указанную в ``drop``
(если она задана).
list [array(['fall'... dtype=object), array(['False... dtype=object), array(['False... dtype=object), array(['clear... dtype=object)]
drop_idx_ drop_idx_: массив формы (n_features,)

- ``drop_idx_[i]`` — индекс в ``categories_[i]`` категории,
которую следует удалить для каждого признака.
- ``drop_idx_[i] = None``, если для признака с индексом ``i`` не нужно удалять
категорию, например, когда задано `drop='if_binary'`, а признак не является бинарным.
- ``drop_idx_ = None``, если следует сохранить все преобразованные признаки.

Если редкие категории включены путем задания для `min_frequency` или
`max_categories` значения, отличного от значения по умолчанию, и `drop_idx[i]` соответствует
редкой категории, удаляется вся редкая категория.

.. изменено в версии:: 0.23
Добавлена возможность содержать значения `None`.
NoneType None
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. добавлено в версии:: 1.0
ndarray[object](4,) ['season','holiday','workingday','weather']
n_features_in_ n_features_in_: int

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

.. добавлено в версии:: 1.0
int 4
11 признаков
season_fall
season_spring
season_summer
season_winter
holiday_False
holiday_True
workingday_False
workingday_True
weather_clear
weather_misty
weather_rain
['year', 'month', 'hour', 'weekday', 'temp', 'feel_temp', 'humidity', 'windspeed']
Параметры
feature_range feature_range: кортеж (min, max), по умолчанию=(0, 1)

Требуемый диапазон преобразованных данных.
(0, ...)
copy copy: bool, по умолчанию=True

Задайте False, чтобы выполнять нормализацию строк на месте и избегать
копирования (если входные данные уже представлены массивом numpy).
True
clip clip: bool, по умолчанию=False

Задайте True, чтобы ограничивать преобразованные значения отложенных данных
заданным диапазоном `feature_range`.
Поскольку этот параметр ограничивает значения, `inverse_transform` может не
восстановить исходные данные.

.. примечание::
Установка `clip=True` не предотвращает дрейф признаков (изменение распределения
между обучающими и тестовыми данными). Преобразованные значения ограничиваются
диапазоном `feature_range`, что помогает избежать нежелательного поведения моделей,
чувствительных к выходу значений за допустимый диапазон (например, линейных моделей).
Используйте с осторожностью, так как ограничение может исказить распределение тестовых данных.

.. добавлено в версии:: 0.24
False
Обученные атрибуты
Имя Тип Значение
data_max_ data_max_: ndarray формы (n_features,)

Максимальное значение каждого признака, обнаруженное в данных

.. добавлено в версии:: 0.17
*data_max_*
ndarray[float64](8,) [ 1.,12.,23.,...,50., 1.,57.]
data_min_ data_min_: ndarray формы (n_features,)

Минимальное значение каждого признака, обнаруженное в данных

.. добавлено в версии:: 0.17
*data_min_*
ndarray[float64](8,) [0. ,1. ,0. ,...,0.76,0.16,0. ]
data_range_ data_range_: ndarray формы (n_features,)

Диапазон каждого признака ``(data_max_ - data_min_)``, обнаруженный в данных

.. добавлено в версии:: 0.17
*data_range_*
ndarray[float64](8,) [ 1. ,11. ,23. ,...,49.24, 0.84,57. ]
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. добавлено в версии:: 1.0
ndarray[object](8,) ['year','month','hour',...,'feel_temp','humidity','windspeed']
min_ min_: ndarray формы (n_features,)

Корректировка минимального значения для каждого признака. Эквивалентно
``min - X.min(axis=0) * self.scale_``
ndarray[float64](8,) [ 0. ,-0.09, 0. ,...,-0.02,-0.19, 0. ]
n_features_in_ n_features_in_: int

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

.. добавлено в версии:: 0.24
int 8
n_samples_seen_ n_samples_seen_: int

Число образцов, обработанных оценщиком.
При новых вызовах fit значение сбрасывается, но увеличивается при каждом вызове
``partial_fit``.
int 10000
scale_ scale_: ndarray формы (n_features,)

Относительный масштаб данных для каждого признака. Эквивалентно
``(max - min) / (X.max(axis=0) - X.min(axis=0))``

.. добавлено в версии:: 0.17
атрибут *scale_*.
ndarray[float64](8,) [1. ,0.09,0.04,...,0.02,1.19,0.02]
8 признаков
year
month
hour
weekday
temp
feel_temp
humidity
windspeed
19 признаков
season_fall
season_spring
season_summer
season_winter
holiday_False
holiday_True
workingday_False
workingday_True
weather_clear
weather_misty
weather_rain
year
month
hour
weekday
temp
feel_temp
humidity
windspeed
Параметры
alphas alphas: массивоподобный объект формы (n_alphas,), по умолчанию=(0.1, 1.0, 10.0)

Массив значений alpha для проверки.
Сила регуляризации; должна быть положительным числом с плавающей точкой. Регуляризация
улучшает обусловленность задачи и снижает дисперсию
оценок. Большие значения соответствуют более сильной регуляризации.
Alpha соответствует ``1 / (2C)`` в других линейных моделях, таких как
:class:`~sklearn.linear_model.LogisticRegression` или
:class:`~sklearn.svm.LinearSVC`.
При использовании перекрёстной проверки с исключением одного наблюдения значения alpha должны быть строго положительными.

Пример того, как сила регуляризации влияет на коэффициенты модели,
см. в :ref:`sphx_glr_auto_examples_linear_model_plot_ridge_coeffs.py`.
array([1.0000...00000000e+06])
fit_intercept fit_intercept: bool, по умолчанию=True

Следует ли вычислять свободный член для этой модели. Если задано
значение false, при вычислениях свободный член использоваться не будет
(т. е. предполагается, что данные центрированы).
True
scoring scoring: str, вызываемый объект, по умолчанию=None

Метод оценки для перекрёстной проверки. Возможные варианты:

- str: варианты см. в :ref:`scoring_string_names`.
- callable: вызываемый объект-оценщик (например, функция) с сигнатурой
``scorer(estimator, X, y)``. Подробнее см. в :ref:`scoring_callable`.
- `None`: отрицательная :ref:`среднеквадратичная ошибка <mean_squared_error>`, если cv равен
None (т. е. при перекрёстной проверке с исключением одного наблюдения), или
:ref:`коэффициент детерминации <r2_score>` (:math:`R^2`) в противном случае.
None
cv cv: int, генератор перекрёстной проверки или итерируемый объект, по умолчанию=None

Определяет стратегию разбиения для перекрёстной проверки.
Для cv допустимы следующие значения:

- None — использовать эффективную перекрёстную проверку с исключением одного наблюдения
- целое число — указать количество фолдов,
- :term:`разбиение для перекрёстной проверки`,
- итерируемый объект, возвращающий разбиения (train, test) в виде массивов индексов.

Для целочисленных значений и None, если ``y`` — бинарный или многоклассовый,
используется :class:`~sklearn.model_selection.StratifiedKFold`, иначе
используется :class:`~sklearn.model_selection.KFold`.

Описание различных стратегий перекрёстной проверки, которые можно использовать здесь,
см. в :ref:`руководстве пользователя <cross_validation>`.
None
gcv_mode gcv_mode: {'auto', 'svd', 'eigen'}, по умолчанию='auto'

Флаг, указывающий, какую стратегию использовать при выполнении
перекрёстной проверки с исключением одного наблюдения. Возможные варианты::

'auto' : то же, что и 'eigen'
'svd' : использовать сингулярное разложение матрицы X, если X является плотной,
в противном случае, если X разреженная, использовать 'eigen'
'eigen' : использовать спектральное разложение матрицы X X', если n_samples <= n_features,
или X' X, если n_features < n_samples

Режим 'auto' используется по умолчанию и предназначен для выбора более дешёвого
варианта в зависимости от формы и разреженности обучающих данных.
None
store_cv_results store_cv_results: bool, по умолчанию=False

Флаг, указывающий, следует ли сохранять значения перекрёстной проверки для
каждого alpha в атрибуте ``cv_results_`` (см.
ниже). Этот флаг совместим только с ``cv=None`` (т. е. при использовании
перекрёстной проверки с исключением одного наблюдения).

.. versionchanged:: 1.5
Имя параметра изменено с `store_cv_values` на `store_cv_results`.
False
alpha_per_target alpha_per_target: bool, по умолчанию=False

Флаг, указывающий, следует ли оптимизировать значение alpha (выбираемое из списка
параметра `alphas`) отдельно для каждой целевой переменной (в задачах с несколькими выходами:
несколькими целевыми переменными для прогнозирования). Если задано значение `True`, после
обучения атрибут `alpha_` будет содержать значение для каждой целевой переменной.
Если задано значение `False`, для всех целевых переменных используется одно значение alpha.
Этот флаг совместим только с ``cv=None`` (т. е. при использовании
перекрёстной проверки с исключением одного наблюдения).

.. versionadded:: 0.24
False
Обученные атрибуты
Имя Тип Значение
alpha_ alpha_: число с плавающей точкой или ndarray формы (n_targets,)

Оценённый параметр регуляризации или, если ``alpha_per_target=True``,
оценённый параметр регуляризации для каждой целевой переменной.
float 3.162
best_score_ best_score_: число с плавающей точкой или ndarray формы (n_targets,)

Оценка базового оценщика с наилучшим значением alpha или,
если ``alpha_per_target=True``, отдельная оценка для каждой целевой переменной.

.. versionadded:: 0.23
float64 -0.01722
coef_ coef_: ndarray формы (n_features) или (n_targets, n_features)

Вектор(ы) весов.
ndarray[float64](19,) [-0.03,-0.01, 0.01,..., 0.2 ,-0.16, 0.02]
intercept_ intercept_: число с плавающей точкой или ndarray формы (n_targets,)

Свободный член в функции принятия решения. Равен 0.0, если
``fit_intercept = False``.
float64 -0.07789
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 19


Радует, что выбранное alpha_ находится в указанном нами диапазоне.

Результаты неудовлетворительны: средняя ошибка составляет около 14% от максимального спроса. Это более чем втрое превышает среднюю ошибку модели градиентного бустинга. Можно предположить, что наивное исходное кодирование периодических временных признаков (простое масштабирование min-max) мешает модели линейной регрессии правильно использовать временную информацию: линейная регрессия не моделирует автоматически немонотонные зависимости между входными признаками и целевой переменной. Нелинейные члены необходимо создавать для входных данных.

Например, исходное числовое кодирование признака "hour" не позволяет линейной модели распознать, что увеличение часа утром с 6 до 8 должно сильно увеличить количество аренд велосипедов, тогда как увеличение на сопоставимую величину вечером с 18 до 20 должно сильно уменьшить прогнозируемое количество аренд велосипедов.

Временные шаги как категории

Поскольку временные признаки закодированы дискретным образом с использованием целых чисел (24 уникальных значения в признаке «часы»), мы можем рассматривать их как категориальные переменные, используя кодирование one-hot, и тем самым игнорировать любые предположения, связанные с упорядочиванием значений часа.

Использование кодирования one-hot для временных признаков предоставляет линейной модели гораздо больше возможностей, поскольку мы добавляем по одному дополнительному признаку для каждого дискретного временного уровня.

one_hot_linear_pipeline = make_pipeline(
    ColumnTransformer(
        transformers=[
            ("categorical", one_hot_encoder, categorical_columns),
            ("one_hot_time", one_hot_encoder, ["hour", "weekday", "month"]),
        ],
        remainder=MinMaxScaler(),
        verbose_feature_names_out=False,
    ),
    RidgeCV(alphas=alphas),
)

evaluate(one_hot_linear_pipeline, X, y, cv=ts_cv)
Mean Absolute Error:     0.099 +/- 0.011
Root Mean Squared Error: 0.131 +/- 0.011
Pipeline(steps=[('columntransformer',
                 ColumnTransformer(remainder=MinMaxScaler(),
                                   transformers=[('categorical',
                                                  OneHotEncoder(handle_unknown='ignore',
                                                                sparse_output=False),
                                                  Index(['season', 'holiday', 'workingday', 'weather'], dtype='str')),
                                                 ('one_hot_time',
                                                  OneHotEncoder(handle_unknown='ignore',
                                                                sparse_output=False),
                                                  ['hour', 'weekday',
                                                   'month'])],
                                   verbose_featur...
                 RidgeCV(alphas=array([1.00000000e-06, 3.16227766e-06, 1.00000000e-05, 3.16227766e-05,
       1.00000000e-04, 3.16227766e-04, 1.00000000e-03, 3.16227766e-03,
       1.00000000e-02, 3.16227766e-02, 1.00000000e-01, 3.16227766e-01,
       1.00000000e+00, 3.16227766e+00, 1.00000000e+01, 3.16227766e+01,
       1.00000000e+02, 3.16227766e+02, 1.00000000e+03, 3.16227766e+03,
       1.00000000e+04, 3.16227766e+04, 1.00000000e+05, 3.16227766e+05,
       1.00000000e+06])))])
В среде Jupyter повторно выполните эту ячейку, чтобы отобразить HTML-представление, или доверьте выполнение блокноту.
На GitHub HTML-представление не отображается; попробуйте загрузить эту страницу с помощью nbviewer.org.
Параметры
steps steps: список кортежей

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

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

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

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

.. versionadded:: 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
Обученные атрибуты
Имя Тип Значение
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](12,) ['season','year','month',...,'feel_temp','humidity','windspeed']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 12
Параметры
transformers transformers: список кортежей

Список кортежей (имя, преобразователь, столбцы), определяющих
объекты-преобразователи, которые будут применяться к подмножествам данных.

name : str
Как и в Pipeline и FeatureUnion, это позволяет задавать преобразователь
и его параметры с помощью ``set_params`` и выполнять поиск при настройке
гиперпараметров.
transformer : {'drop', 'passthrough'} или оценщик
Оценщик должен поддерживать :term:`fit` и :term:`transform`.
Также допустимы специальные строки 'drop' и 'passthrough',
указывающие соответственно, что столбцы нужно отбросить или передать
без преобразования.
columns : str, массивоподобный объект из str, int, массивоподобный объект из int, массивоподобный объект из bool, срез или вызываемый объект
Индексирует данные по второй оси. Целые числа интерпретируются как
позиционные номера столбцов, а строки могут ссылаться на столбцы DataFrame
по имени. Если ``transformer`` ожидает X в виде одномерного массивоподобного объекта (вектора),
следует использовать скалярную строку или целое число;
в противном случае преобразователю будет передан двумерный массив.
Вызываемому объекту передаются входные данные `X`; он может вернуть любое из
перечисленного выше. Для выбора нескольких столбцов по имени или типу данных можно использовать
:obj:`make_column_selector`.
[('categorical', ...), ('one_hot_time', ...)]
remainder remainder: {'drop', 'passthrough'} или оценщик, по умолчанию 'drop'

По умолчанию преобразуются и объединяются в выходных данных только указанные в `transformers` столбцы, а неуказанные
столбцы отбрасываются (значение по умолчанию — ``'drop'``).
Если задать ``remainder='passthrough'``, все оставшиеся столбцы, которые
не были указаны в `transformers`, но присутствовали в данных, переданных
в `fit`, будут автоматически переданы без изменений. Это подмножество столбцов
объединяется с результатами работы преобразователей. Для датафреймов
дополнительные столбцы, отсутствовавшие при `fit`, не включаются в выходные данные
`transform`.
Если в качестве ``remainder`` указать оценщик, оставшиеся
неуказанные столбцы будут обрабатываться этим оценщиком. Он
должен поддерживать :term:`fit` и :term:`transform`.
Обратите внимание: для использования этой возможности порядок столбцов DataFrame,
передаваемого в :term:`fit` и :term:`transform`, должен совпадать.
MinMaxScaler()
verbose_feature_names_out verbose_feature_names_out: bool, str или Callable[[str, str], str], по умолчанию True

- Если True, :meth:`ColumnTransformer.get_feature_names_out` добавляет к каждому имени признака префикс
с именем преобразователя, создавшего этот признак. Это эквивалентно заданию
`verbose_feature_names_out="{transformer_name}__{feature_name}"`.
- Если False, :meth:`ColumnTransformer.get_feature_names_out` не добавляет
префиксы к именам признаков и выдаёт ошибку, если имена признаков не уникальны.
- Если задано ``Callable[[str, str], str]``,
:meth:`ColumnTransformer.get_feature_names_out` переименовывает все признаки
с помощью имени преобразователя. Первый аргумент вызываемого объекта — это
имя преобразователя, а второй — имя признака. Возвращённая
строка станет новым именем признака.
- Если задано ``str``, это должна быть строка, готовая к форматированию. Указанная строка будет
форматироваться с использованием двух имён полей: ``transformer_name`` и ``feature_name``.
Например, ``"{feature_name}__{transformer_name}"``. Дополнительные сведения см. в описании метода
:meth:`str.format` из стандартной библиотеки.

.. versionadded:: 1.0

.. versionchanged:: 1.6
`verbose_feature_names_out` может принимать вызываемый объект или строку для форматирования.
False
sparse_threshold sparse_threshold: float, по умолчанию 0.3

Если результаты работы разных преобразователей содержат разреженные матрицы,
они будут объединены в разреженную матрицу, если общая плотность
ниже этого значения. Укажите ``sparse_threshold=0``, чтобы всегда возвращать
плотную матрицу. Если преобразованные данные полностью состоят из плотных данных,
результат объединения будет плотным, а этот параметр будет игнорироваться.
0.3
n_jobs n_jobs: int, по умолчанию None

Количество задач, выполняемых параллельно.
``None`` означает 1, если только не используется контекст :obj:`joblib.parallel_backend`.
``-1`` означает использование всех процессоров. Дополнительные сведения см. в :term:`глоссарии <n_jobs>`.
None
transformer_weights transformer_weights: dict, по умолчанию None

Множители весов признаков для каждого преобразователя. Результат работы
преобразователя умножается на эти веса. Ключи — имена преобразователей,
значения — веса.
None
verbose verbose: bool, по умолчанию False

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

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

.. versionadded:: 1.0
ndarray[object](12,) ['season','year','month',...,'feel_temp','humidity','windspeed']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 12
named_transformers_ named_transformers_: :class:`~sklearn.utils.Bunch`

Атрибут только для чтения, предоставляющий доступ к преобразователю по его имени.
Ключи — имена преобразователей, а значения — обученные объекты-преобразователи.
Bunch {'categorical...inMaxScaler()}
output_indices_ output_indices_: dict

Словарь, в котором каждому имени преобразователя соответствует срез, указывающий
на индексы в преобразованных выходных данных. Это позволяет
определить, какой преобразователь отвечает за какие преобразованные
признаки.

.. versionadded:: 1.0
dict {'ca...al': slice(0, 11, None), 'on...me': slice(11, 54, None), 're...er': slice(54, 59, None)}
sparse_output_ sparse_output_: bool

Логический флаг, указывающий, возвращает ли ``transform``
разреженную матрицу или плотный массив numpy; это зависит от результатов
работы отдельных преобразователей и параметра `sparse_threshold`.
bool False
transformers_ transformers_: list

Коллекция обученных преобразователей в виде кортежей (имя,
обученный_преобразователь, столбец). `fitted_transformer` может быть оценщиком
или `'drop'`; значение `'passthrough'` заменяется эквивалентным
:class:`~sklearn.preprocessing.FunctionTransformer`. Если столбцы не были выбраны,
здесь будет находиться необученный преобразователь. Если имеются
оставшиеся столбцы, последний элемент представляет собой кортеж вида:
('remainder', transformer, remaining_columns), соответствующий параметру
``remainder``. Если остались столбцы, то
``len(transformers_)==len(transformers)+1``, иначе
``len(transformers_)==len(transformers)``.

.. versionadded:: 1.7
Формат оставшихся столбцов теперь по возможности соответствует формату остальных
преобразователей: если все столбцы были заданы как имена столбцов (`str`),
оставшиеся столбцы сохраняются как имена; если все столбцы были заданы
как маски (`bool`), оставшиеся столбцы также сохраняются как маски; во всех остальных случаях
оставшиеся столбцы сохраняются как индексы (`int`).
list [('ca...al', OneHotEncoder..._output=False), Index(['seaso..., dtype='str')), ('on...me', OneHotEncoder..._output=False), ['hour', 'weekday', 'month']), ('re...er', MinMaxScaler(), ['year', 'temp', 'fe...mp', 'hu...ty', ...])]
Index(['season', 'holiday', 'workingday', 'weather'], dtype='str')
Параметры
sparse_output sparse_output: bool, по умолчанию=True

Если значение ``True``, возвращает разреженную матрицу или массив SciPy
в формате «Compressed Sparse Row» (CSR).

.. versionadded:: 1.2
`sparse` переименован в `sparse_output`
False
handle_unknown handle_unknown: {'error', 'ignore', 'infrequent_if_exist', 'warn'}, по умолчанию='error'

Задает способ обработки неизвестных категорий во время :meth:`transform`.

- 'error' : Вызывает ошибку, если при преобразовании обнаружена неизвестная категория.
- 'ignore' : Если во время преобразования обнаружена неизвестная категория,
все результирующие столбцы с унитарным кодированием для этого признака
будут заполнены нулями. При обратном преобразовании неизвестная категория
будет обозначена как None.
- 'infrequent_if_exist' : Если во время преобразования обнаружена неизвестная категория,
результирующие столбцы с унитарным кодированием для этого признака
будут соответствовать редкой категории, если она существует. Редкая
категория будет расположена на последней позиции кодирования. При обратном
преобразовании неизвестная категория будет сопоставлена с категорией,
обозначенной как `'infrequent'`, если она существует. Если категории
`'infrequent'` нет, :meth:`transform` и :meth:`inverse_transform`
будут обрабатывать неизвестную категорию так же, как при
`handle_unknown='ignore'`. Редкие категории определяются на основе
`min_frequency` и `max_categories`. Подробнее см. в
:ref:`руководстве пользователя <encoder_infrequent_categories>`.
- 'warn' : Если во время преобразования обнаружена неизвестная категория,
выдается предупреждение, а затем кодирование выполняется так, как описано для
`handle_unknown="infrequent_if_exist"`.

.. versionchanged:: 1.1
Параметр `'infrequent_if_exist'` добавлен для автоматической обработки неизвестных
и редких категорий.

.. versionadded:: 1.6
В версии 1.6 добавлен параметр `"warn"`.
'ignore'
categories categories: 'auto' или список объектов, подобных массиву, по умолчанию='auto'

Категории (уникальные значения) для каждого признака:

- 'auto' : Автоматически определяет категории по обучающим данным.
- list : ``categories[i]`` содержит категории, ожидаемые в i-м
столбце. Передаваемые категории не должны смешивать строки и числовые
значения в одном признаке; числовые значения должны быть отсортированы.

Используемые категории доступны в атрибуте ``categories_``.

.. versionadded:: 0.20
'auto'
drop drop: {'first', 'if_binary'} или объект, подобный массиву, формы (n_features,), по умолчанию=None

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

Однако удаление одной категории нарушает симметрию исходного
представления и поэтому может приводить к смещению в последующих моделях,
например в моделях классификации или регрессии с линейной регуляризацией.

- None : сохраняет все признаки (по умолчанию).
- 'first' : удаляет первую категорию каждого признака. Если присутствует только одна
категория, признак удаляется целиком.
- 'if_binary' : удаляет первую категорию каждого признака с двумя
категориями. Признаки с 1 или более чем 2 категориями
остаются без изменений.
- array : ``drop[i]`` — категория признака ``X[:, i]``,
которую следует удалить.

Если для группировки редких категорий настроен параметр `max_categories` или
`min_frequency`, удаление выполняется после
группировки.

.. versionadded:: 0.21
Параметр `drop` добавлен в версии 0.21.

.. versionchanged:: 0.23
Параметр `drop='if_binary'` добавлен в версии 0.23.

.. versionchanged:: 1.1
Добавлена поддержка удаления редких категорий.
None
dtype dtype: числовой тип, по умолчанию=np.float64

Желаемый тип данных результата.
<class 'numpy.float64'>
min_frequency min_frequency: int или float, по умолчанию=None

Задает минимальную частоту, ниже которой категория
считается редкой.

- Если задано `int`, редкими считаются категории с меньшей
кардинальностью.

- Если задано `float`, редкими считаются категории с кардинальностью меньше
`min_frequency * n_samples`.

.. versionadded:: 1.1
Подробнее см. в :ref:`руководстве пользователя <encoder_infrequent_categories>`.
None
max_categories max_categories: int, по умолчанию=None

Задает верхний предел количества выходных признаков для каждого входного
признака с учетом редких категорий. Если имеются редкие
категории, `max_categories` включает категорию, представляющую
редкие категории, наряду с частыми категориями. Если задано `None`,
количество выходных признаков не ограничено.

.. versionadded:: 1.1
Подробнее см. в :ref:`руководстве пользователя <encoder_infrequent_categories>`.
None
feature_name_combiner feature_name_combiner: "concat" или вызываемый объект, по умолчанию="concat"

Вызываемый объект с сигнатурой `def callable(input_feature, category)`, который возвращает
строку. Используется для создания имен признаков, возвращаемых методом
:meth:`get_feature_names_out`.

`"concat"` объединяет имя закодированного признака и категорию в формате
`feature + "_" + str(category)`. Например, для признака X со значениями 1, 6, 7 создаются
имена признаков `X_1, X_6, X_7`.

.. versionadded:: 1.3
'concat'
Обученные атрибуты
Имя Тип Значение
categories_ categories_: список массивов

Категории каждого признака, определенные во время обучения
(в порядке признаков в X и соответствующие выходным данным
``transform``). Сюда входит категория, указанная в ``drop``,
(если она задана).
list [array(['fall'... dtype=object), array(['False... dtype=object), array(['False... dtype=object), array(['clear... dtype=object)]
drop_idx_ drop_idx_: массив формы (n_features,)

- ``drop_idx_[i]`` — индекс категории в ``categories_[i]``,
которая удаляется для каждого признака.
- ``drop_idx_[i] = None``, если для признака с индексом ``i``
не удаляется ни одна категория, например если задано `drop='if_binary'`, а
признак не является бинарным.
- ``drop_idx_ = None``, если сохраняются все преобразованные признаки.

Если редкие категории включены путем установки `min_frequency` или
`max_categories` в значение, отличное от значения по умолчанию, и `drop_idx[i]` соответствует
редкой категории, удаляется вся редкая категория.

.. versionchanged:: 0.23
Добавлена возможность содержать значения `None`.
NoneType None
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](4,) ['season','holiday','workingday','weather']
n_features_in_ n_features_in_: int

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

.. versionadded:: 1.0
int 4
11 признаков
season_fall
season_spring
season_summer
season_winter
holiday_False
holiday_True
workingday_False
workingday_True
weather_clear
weather_misty
weather_rain
['hour', 'weekday', 'month']
Параметры
sparse_output sparse_output: bool, по умолчанию=True

Если значение ``True``, возвращает разреженную матрицу или массив SciPy
в формате «Compressed Sparse Row» (CSR).

.. versionadded:: 1.2
`sparse` переименован в `sparse_output`
False
handle_unknown handle_unknown: {'error', 'ignore', 'infrequent_if_exist', 'warn'}, по умолчанию='error'

Задает способ обработки неизвестных категорий во время :meth:`transform`.

- 'error' : Вызывает ошибку, если при преобразовании обнаружена неизвестная категория.
- 'ignore' : Если во время преобразования обнаружена неизвестная категория,
все результирующие столбцы с унитарным кодированием для этого признака
будут заполнены нулями. При обратном преобразовании неизвестная категория
будет обозначена как None.
- 'infrequent_if_exist' : Если во время преобразования обнаружена неизвестная категория,
результирующие столбцы с унитарным кодированием для этого признака
будут соответствовать редкой категории, если она существует. Редкая
категория будет расположена на последней позиции кодирования. При обратном
преобразовании неизвестная категория будет сопоставлена с категорией,
обозначенной как `'infrequent'`, если она существует. Если категории
`'infrequent'` нет, :meth:`transform` и :meth:`inverse_transform`
будут обрабатывать неизвестную категорию так же, как при
`handle_unknown='ignore'`. Редкие категории определяются на основе
`min_frequency` и `max_categories`. Подробнее см. в
:ref:`руководстве пользователя <encoder_infrequent_categories>`.
- 'warn' : Если во время преобразования обнаружена неизвестная категория,
выдается предупреждение, а затем кодирование выполняется так, как описано для
`handle_unknown="infrequent_if_exist"`.

.. versionchanged:: 1.1
Параметр `'infrequent_if_exist'` добавлен для автоматической обработки неизвестных
и редких категорий.

.. versionadded:: 1.6
В версии 1.6 добавлен параметр `"warn"`.
'ignore'
categories categories: 'auto' или список объектов, подобных массиву, по умолчанию='auto'

Категории (уникальные значения) для каждого признака:

- 'auto' : Автоматически определяет категории по обучающим данным.
- list : ``categories[i]`` содержит категории, ожидаемые в i-м
столбце. Передаваемые категории не должны смешивать строки и числовые
значения в одном признаке; числовые значения должны быть отсортированы.

Используемые категории доступны в атрибуте ``categories_``.

.. versionadded:: 0.20
'auto'
drop drop: {'first', 'if_binary'} или объект, подобный массиву, формы (n_features,), по умолчанию=None

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

Однако удаление одной категории нарушает симметрию исходного
представления и поэтому может приводить к смещению в последующих моделях,
например в моделях классификации или регрессии с линейной регуляризацией.

- None : сохраняет все признаки (по умолчанию).
- 'first' : удаляет первую категорию каждого признака. Если присутствует только одна
категория, признак удаляется целиком.
- 'if_binary' : удаляет первую категорию каждого признака с двумя
категориями. Признаки с 1 или более чем 2 категориями
остаются без изменений.
- array : ``drop[i]`` — категория признака ``X[:, i]``,
которую следует удалить.

Если для группировки редких категорий настроен параметр `max_categories` или
`min_frequency`, удаление выполняется после
группировки.

.. versionadded:: 0.21
Параметр `drop` добавлен в версии 0.21.

.. versionchanged:: 0.23
Параметр `drop='if_binary'` добавлен в версии 0.23.

.. versionchanged:: 1.1
Добавлена поддержка удаления редких категорий.
None
dtype dtype: числовой тип, по умолчанию=np.float64

Желаемый тип данных результата.
<class 'numpy.float64'>
min_frequency min_frequency: int или float, по умолчанию=None

Задает минимальную частоту, ниже которой категория
считается редкой.

- Если задано `int`, редкими считаются категории с меньшей
кардинальностью.

- Если задано `float`, редкими считаются категории с кардинальностью меньше
`min_frequency * n_samples`.

.. versionadded:: 1.1
Подробнее см. в :ref:`руководстве пользователя <encoder_infrequent_categories>`.
None
max_categories max_categories: int, по умолчанию=None

Задает верхний предел количества выходных признаков для каждого входного
признака с учетом редких категорий. Если имеются редкие
категории, `max_categories` включает категорию, представляющую
редкие категории, наряду с частыми категориями. Если задано `None`,
количество выходных признаков не ограничено.

.. versionadded:: 1.1
Подробнее см. в :ref:`руководстве пользователя <encoder_infrequent_categories>`.
None
feature_name_combiner feature_name_combiner: "concat" или вызываемый объект, по умолчанию="concat"

Вызываемый объект с сигнатурой `def callable(input_feature, category)`, который возвращает
строку. Используется для создания имен признаков, возвращаемых методом
:meth:`get_feature_names_out`.

`"concat"` объединяет имя закодированного признака и категорию в формате
`feature + "_" + str(category)`. Например, для признака X со значениями 1, 6, 7 создаются
имена признаков `X_1, X_6, X_7`.

.. versionadded:: 1.3
'concat'
Обученные атрибуты
Имя Тип Значение
categories_ categories_: список массивов

Категории каждого признака, определенные во время обучения
(в порядке признаков в X и соответствующие выходным данным
``transform``). Сюда входит категория, указанная в ``drop``,
(если она задана).
list [array([ 0, 1..., 21, 22, 23]), array([0, 1, 2, 3, 4, 5, 6]), array([ 1, 2..., 10, 11, 12])]
drop_idx_ drop_idx_: массив формы (n_features,)

- ``drop_idx_[i]`` — индекс категории в ``categories_[i]``,
которая удаляется для каждого признака.
- ``drop_idx_[i] = None``, если для признака с индексом ``i``
не удаляется ни одна категория, например если задано `drop='if_binary'`, а
признак не является бинарным.
- ``drop_idx_ = None``, если сохраняются все преобразованные признаки.

Если редкие категории включены путем установки `min_frequency` или
`max_categories` в значение, отличное от значения по умолчанию, и `drop_idx[i]` соответствует
редкой категории, удаляется вся редкая категория.

.. versionchanged:: 0.23
Добавлена возможность содержать значения `None`.
NoneType None
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](3,) ['hour','weekday','month']
n_features_in_ n_features_in_: int

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

.. versionadded:: 1.0
int 3
43 признака
hour_0
hour_1
hour_2
hour_3
hour_4
hour_5
hour_6
hour_7
hour_8
hour_9
hour_10
hour_11
hour_12
hour_13
hour_14
hour_15
hour_16
hour_17
hour_18
hour_19
hour_20
hour_21
hour_22
hour_23
weekday_0
weekday_1
weekday_2
weekday_3
weekday_4
weekday_5
weekday_6
month_1
month_2
month_3
month_4
month_5
month_6
month_7
month_8
month_9
month_10
month_11
month_12
['year', 'temp', 'feel_temp', 'humidity', 'windspeed']
Параметры
feature_range feature_range: кортеж (min, max), по умолчанию=(0, 1)

Требуемый диапазон преобразованных данных.
(0, ...)
copy copy: bool, по умолчанию=True

Установите False, чтобы выполнить нормализацию строк на месте и избежать
копирования (если входные данные уже являются массивом numpy).
True
clip clip: bool, по умолчанию=False

Установите True, чтобы ограничить преобразованные значения отложенных данных
указанным `feature_range`.
Поскольку этот параметр ограничивает значения, `inverse_transform` может не
восстановить исходные данные.

.. note::
Установка `clip=True` не предотвращает дрейф признаков (сдвиг распределения
между обучающими и тестовыми данными). Преобразованные значения ограничиваются
диапазоном `feature_range`, что помогает избежать нежелательного поведения моделей,
чувствительных к выходящим за диапазон входным данным (например, линейных моделей). Используйте с осторожностью,
поскольку ограничение может исказить распределение тестовых данных.

.. versionadded:: 0.24
False
Обученные атрибуты
Имя Тип Значение
data_max_ data_max_: ndarray формы (n_features,)

Максимум, наблюдавшийся в данных для каждого признака

.. versionadded:: 0.17
атрибут *data_max_*
ndarray[float64](5,) [ 1. ,39.36,50. , 1. ,57. ]
data_min_ data_min_: ndarray формы (n_features,)

Минимум, наблюдавшийся в данных для каждого признака

.. versionadded:: 0.17
атрибут *data_min_*
ndarray[float64](5,) [0. ,0.82,0.76,0.16,0. ]
data_range_ data_range_: ndarray формы (n_features,)

Диапазон для каждого признака ``(data_max_ - data_min_)``, наблюдавшийся в данных

.. versionadded:: 0.17
атрибут *data_range_*
ndarray[float64](5,) [ 1. ,38.54,49.24, 0.84,57. ]
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](5,) ['year','temp','feel_temp','humidity','windspeed']
min_ min_: ndarray формы (n_features,)

Смещение минимума для каждого признака. Эквивалентно
``min - X.min(axis=0) * self.scale_``
ndarray[float64](5,) [ 0. ,-0.02,-0.02,-0.19, 0. ]
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 5
n_samples_seen_ n_samples_seen_: int

Количество образцов, обработанных оценщиком.
Сбрасывается при новых вызовах fit, но увеличивается при последовательных
вызовах ``partial_fit``.
int 10000
scale_ scale_: ndarray формы (n_features,)

Относительное масштабирование данных для каждого признака. Эквивалентно
``(max - min) / (X.max(axis=0) - X.min(axis=0))``

.. versionadded:: 0.17
атрибут *scale_*
ndarray[float64](5,) [1. ,0.03,0.02,1.19,0.02]
5 признаков
year
temp
feel_temp
humidity
windspeed
59 признаков
season_fall
season_spring
season_summer
season_winter
holiday_False
holiday_True
workingday_False
workingday_True
weather_clear
weather_misty
weather_rain
hour_0
hour_1
hour_2
hour_3
hour_4
hour_5
hour_6
hour_7
hour_8
hour_9
hour_10
hour_11
hour_12
hour_13
hour_14
hour_15
hour_16
hour_17
hour_18
hour_19
hour_20
hour_21
hour_22
hour_23
weekday_0
weekday_1
weekday_2
weekday_3
weekday_4
weekday_5
weekday_6
month_1
month_2
month_3
month_4
month_5
month_6
month_7
month_8
month_9
month_10
month_11
month_12
year
temp
feel_temp
humidity
windspeed
Параметры
alphas alphas: array-like формы (n_alphas,), по умолчанию=(0.1, 1.0, 10.0)

Массив значений alpha для проверки.
Сила регуляризации; должна быть положительным числом с плавающей точкой. Регуляризация
улучшает обусловленность задачи и уменьшает дисперсию
оценок. Более высокие значения соответствуют более сильной регуляризации.
Alpha соответствует ``1 / (2C)`` в других линейных моделях, таких как
:class:`~sklearn.linear_model.LogisticRegression` или
:class:`~sklearn.svm.LinearSVC`.
При использовании перекрёстной проверки Leave-One-Out значения alpha должны быть строго положительными.

Пример того, как сила регуляризации влияет на коэффициенты модели,
см. в :ref:`sphx_glr_auto_examples_linear_model_plot_ridge_coeffs.py`.
array([1.0000...00000000e+06])
fit_intercept fit_intercept: bool, по умолчанию=True

Нужно ли вычислять свободный член для этой модели. Если задано
значение false, свободный член не будет использоваться в вычислениях
(то есть предполагается, что данные центрированы).
True
scoring scoring: str, callable, по умолчанию=None

Метод оценки для перекрёстной проверки. Варианты:

- str: варианты см. в :ref:`scoring_string_names`.
- callable: вызываемый объект оценщика (например, функция) с сигнатурой
``scorer(estimator, X, y)``. Подробности см. в :ref:`scoring_callable`.
- `None`: отрицательная :ref:`среднеквадратичная ошибка <mean_squared_error>`, если cv равен
None (то есть при перекрёстной проверке leave-one-out), или
:ref:`коэффициент детерминации <r2_score>` (:math:`R^2`) в противном случае.
None
cv cv: int, генератор перекрёстной проверки или итерируемый объект, по умолчанию=None

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

- None — использовать эффективную перекрёстную проверку Leave-One-Out
- целое число — задать количество блоков,
- :term:`разделитель CV`,
- итерируемый объект, выдающий разбиения (train, test) в виде массивов индексов.

Для целочисленных значений/None, если ``y`` является бинарным или многоклассовым,
используется :class:`~sklearn.model_selection.StratifiedKFold`, иначе
используется :class:`~sklearn.model_selection.KFold`.

Различные стратегии перекрёстной проверки, доступные здесь,
описаны в :ref:`руководстве пользователя <cross_validation>`.
None
gcv_mode gcv_mode: {'auto', 'svd', 'eigen'}, по умолчанию='auto'

Флаг, определяющий стратегию при выполнении
перекрёстной проверки Leave-One-Out. Возможные варианты::

'auto' : то же, что и 'eigen'
'svd' : использовать сингулярное разложение матрицы X, если X плотная;
если X разреженная, перейти к 'eigen'
'eigen' : использовать спектральное разложение X X', если n_samples <= n_features
или X' X, если n_features < n_samples

Режим 'auto' используется по умолчанию и должен выбирать более дешёвый
вариант в зависимости от формы и разреженности обучающих данных.
None
store_cv_results store_cv_results: bool, по умолчанию=False

Флаг, указывающий, нужно ли сохранять значения перекрёстной проверки, соответствующие
каждому alpha, в атрибуте ``cv_results_`` (см.
ниже). Этот флаг совместим только с ``cv=None`` (то есть при использовании
перекрёстной проверки Leave-One-Out).

.. versionchanged:: 1.5
Имя параметра изменено с `store_cv_values` на `store_cv_results`.
False
alpha_per_target alpha_per_target: bool, по умолчанию=False

Флаг, определяющий, нужно ли оптимизировать значение alpha (выбранное из списка параметров
`alphas`) отдельно для каждой целевой переменной (в случае нескольких выходов:
нескольких целевых переменных для предсказания). Если установлено значение `True`, после
обучения атрибут `alpha_` будет содержать значение для каждой целевой переменной.
Если установлено значение `False`, для всех целевых переменных используется одно значение alpha.
Этот флаг совместим только с ``cv=None`` (то есть при использовании
перекрёстной проверки Leave-One-Out).

.. versionadded:: 0.24
False
Обученные атрибуты
Имя Тип Значение
alpha_ alpha_: число с плавающей точкой или ndarray формы (n_targets,)

Оценённый параметр регуляризации или, если ``alpha_per_target=True``,
оценённый параметр регуляризации для каждой целевой переменной.
float 1
best_score_ best_score_: число с плавающей точкой или ndarray формы (n_targets,)

Оценка базового оценщика с наилучшим alpha или, если
``alpha_per_target=True``, оценка для каждой целевой переменной.

.. versionadded:: 0.23
float64 -0.008231
coef_ coef_: ndarray формы (n_features) или (n_targets, n_features)

Вектор(ы) весов.
ndarray[float64](59,) [ 0.01,-0.03, 0. ,..., 0.18,-0.07,-0.04]
intercept_ intercept_: число с плавающей точкой или ndarray формы (n_targets,)

Свободный член функции принятия решения. Устанавливается в 0.0, если
``fit_intercept = False``.
float64 0.04408
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 59


Средняя частота ошибок этой модели составляет 10%, что значительно лучше результата при использовании исходного (порядкового) кодирования временного признака. Это подтверждает наше предположение о том, что линейная регрессионная модель выигрывает от дополнительной гибкости, позволяющей не считать изменение времени монотонным.

Однако при этом появляется очень большое количество новых признаков. Если бы время суток было представлено в минутах с начала дня, а не в часах, кодирование one-hot создало бы 1440 признаков вместо 24. Это могло бы привести к значительному переобучению. Чтобы избежать этого, можно использовать sklearn.preprocessing.KBinsDiscretizer, чтобы заново разбить на интервалы уровни детализированных порядковых или числовых переменных, сохранив при этом преимущества кодирования one-hot, обеспечивающего немонотонную выразительность.

Наконец, мы также замечаем, что кодирование one-hot полностью игнорирует порядок уровней часа, хотя этот порядок может представлять собой интересное индуктивное смещение, которое стоит в некоторой степени сохранить. Далее мы попробуем исследовать гладкое немонотонное кодирование, которое локально сохраняет относительный порядок временных признаков.

Тригонометрические признаки

В качестве первой попытки можно попробовать закодировать каждый из этих периодических признаков с помощью преобразования синуса и косинуса с соответствующим периодом.

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

from sklearn.preprocessing import FunctionTransformer


def sin_transformer(period):
    return FunctionTransformer(
        lambda x: np.sin(x / period * 2 * np.pi), feature_names_out="one-to-one"
    )


def cos_transformer(period):
    return FunctionTransformer(
        lambda x: np.cos(x / period * 2 * np.pi), feature_names_out="one-to-one"
    )

Визуализируем влияние такого расширения признаков на синтетических данных о часах, немного экстраполировав их за пределы hour=23:

import pandas as pd

hour_df = pd.DataFrame(
    np.arange(26).reshape(-1, 1),
    columns=["hour"],
)
hour_df["hour_sin"] = sin_transformer(24).fit_transform(hour_df)["hour"]
hour_df["hour_cos"] = cos_transformer(24).fit_transform(hour_df)["hour"]
hour_df.plot(x="hour")
_ = plt.title("Trigonometric encoding for the 'hour' feature")
Trigonometric encoding for the 'hour' feature

Используем двумерную диаграмму рассеяния, закодировав часы цветом, чтобы нагляднее увидеть, как это представление отображает 24 часа суток в двумерное пространство, напоминающее своего рода аналоговые часы на 24 часа. Обратите внимание, что «25-й» час отображается как 1-й час из-за периодической природы представления с помощью синуса и косинуса.

fig, ax = plt.subplots(figsize=(7, 5))
sp = ax.scatter(hour_df["hour_sin"], hour_df["hour_cos"], c=hour_df["hour"])
ax.set(
    xlabel="sin(hour)",
    ylabel="cos(hour)",
)
_ = fig.colorbar(sp)
plot cyclical feature engineering

Теперь можно построить конвейер извлечения признаков, используя эту стратегию:

cyclic_cossin_transformer = ColumnTransformer(
    transformers=[
        ("categorical", one_hot_encoder, categorical_columns),
        ("month_sin", sin_transformer(12), ["month"]),
        ("month_cos", cos_transformer(12), ["month"]),
        ("weekday_sin", sin_transformer(7), ["weekday"]),
        ("weekday_cos", cos_transformer(7), ["weekday"]),
        ("hour_sin", sin_transformer(24), ["hour"]),
        ("hour_cos", cos_transformer(24), ["hour"]),
    ],
    remainder=MinMaxScaler(),
    verbose_feature_names_out=True,
)
cyclic_cossin_linear_pipeline = make_pipeline(
    cyclic_cossin_transformer,
    RidgeCV(alphas=alphas),
)
evaluate(cyclic_cossin_linear_pipeline, X, y, cv=ts_cv)
Mean Absolute Error:     0.125 +/- 0.014
Root Mean Squared Error: 0.166 +/- 0.020
Pipeline(steps=[('columntransformer',
                 ColumnTransformer(remainder=MinMaxScaler(),
                                   transformers=[('categorical',
                                                  OneHotEncoder(handle_unknown='ignore',
                                                                sparse_output=False),
                                                  Index(['season', 'holiday', 'workingday', 'weather'], dtype='str')),
                                                 ('month_sin',
                                                  FunctionTransformer(feature_names_out='one-to-one',
                                                                      func=<function sin_transformer.<locals>.<lambda> at 0x784...
                 RidgeCV(alphas=array([1.00000000e-06, 3.16227766e-06, 1.00000000e-05, 3.16227766e-05,
       1.00000000e-04, 3.16227766e-04, 1.00000000e-03, 3.16227766e-03,
       1.00000000e-02, 3.16227766e-02, 1.00000000e-01, 3.16227766e-01,
       1.00000000e+00, 3.16227766e+00, 1.00000000e+01, 3.16227766e+01,
       1.00000000e+02, 3.16227766e+02, 1.00000000e+03, 3.16227766e+03,
       1.00000000e+04, 3.16227766e+04, 1.00000000e+05, 3.16227766e+05,
       1.00000000e+06])))])
В среде Jupyter повторно выполните эту ячейку, чтобы отобразить HTML-представление, или доверьтесь ноутбуку.
На GitHub HTML-представление не отображается; попробуйте открыть эту страницу с помощью nbviewer.org.
Параметры
steps steps: list of tuples

Список кортежей (название шага, оцениватель), которые должны быть объединены в
последовательном порядке. Для совместимости с API scikit-learn каждый шаг
должен определять `fit`. Все шаги, кроме последнего, также должны определять `transform`. Подробнее см.
:ref:`Объединение оценивателей <combining_estimators>`.
[('columntransformer', ...), ('ridgecv', ...)]
transform_input transform_input: list of str, default=None

Названия параметров :term:`метаданных`, которые конвейер должен преобразовать
перед передачей шагу, использующему их.

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

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

.. versionadded:: 1.6
None
memory memory: str or object with the joblib.Memory interface, default=None

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

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

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

.. versionadded:: 1.0
ndarray[object](12,) ['season','year','month',...,'feel_temp','humidity','windspeed']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 12
Параметры
transformers transformers: list of tuples

Список кортежей (имя, преобразователь, столбцы), задающих
объекты-преобразователи, которые будут применяться к подмножествам данных.

name : str
Как и в Pipeline и FeatureUnion, это позволяет задавать преобразователь и
его параметры с помощью ``set_params`` и выполнять их поиск в сеточном
поиске.
transformer : {'drop', 'passthrough'} or estimator
Оцениватель должен поддерживать :term:`fit` и :term:`transform`.
Также допускаются специальные строки 'drop' и 'passthrough',
обозначающие удаление столбцов и передачу их без преобразования
соответственно.
columns : str, array-like of str, int, array-like of int, array-like of bool, slice or callable
Выбирает данные по второй оси. Целые числа интерпретируются как
позиционные индексы столбцов, а строки могут указывать на столбцы DataFrame
по имени. Если ``transformer`` ожидает, что X будет одномерным массивом (вектором),
следует использовать скалярную строку или целое число;
в противном случае преобразователю будет передан двумерный массив.
Вызываемая функция получает входные данные `X` и может возвращать любой из
перечисленных выше типов. Чтобы выбрать несколько столбцов по имени или типу данных, можно использовать
:obj:`make_column_selector`.
[('categorical', ...), ('month_sin', ...), ...]
remainder remainder: {'drop', 'passthrough'} or estimator, default='drop'

По умолчанию преобразуются и объединяются в выходных данных только указанные в `transformers` столбцы,
а неуказанные столбцы удаляются (значение по умолчанию — ``'drop'``).
Если задать ``remainder='passthrough'``, все оставшиеся столбцы, не указанные в `transformers`, но присутствовавшие в данных, переданных
в `fit`, будут автоматически передаваться без преобразования. Это подмножество столбцов
объединяется с результатами преобразователей. Для фреймов данных
дополнительные столбцы, отсутствовавшие при `fit`, не попадут в результат
`transform`.
Если задать для ``remainder`` оцениватель, к оставшимся
неуказанным столбцам будет применяться этот оцениватель. Он
должен поддерживать :term:`fit` и :term:`transform`.
Обратите внимание: для использования этой возможности порядок столбцов DataFrame
на входе :term:`fit` и :term:`transform` должен совпадать.
MinMaxScaler()
sparse_threshold sparse_threshold: float, default=0.3

Если выходные данные разных преобразователей содержат разреженные матрицы,
они будут объединены в разреженную матрицу, если общая плотность
ниже этого значения. Укажите ``sparse_threshold=0``, чтобы всегда возвращать
плотную матрицу. Если преобразованные выходные данные состоят только из плотных данных,
объединённый результат будет плотным, а этот параметр будет проигнорирован.
0.3
n_jobs n_jobs: int, default=None

Количество задач, выполняемых параллельно.
``None`` означает 1, если только не используется контекст :obj:`joblib.parallel_backend`.
``-1`` означает использование всех процессоров. Подробнее см. :term:`Глоссарий <n_jobs>`.
None
transformer_weights transformer_weights: dict, default=None

Множители весов признаков для каждого преобразователя. Результат работы
преобразователя умножается на соответствующий вес. Ключи — имена преобразователей,
значения — веса.
None
verbose verbose: bool, default=False

Если True, по завершении обучения каждого преобразователя будет
выводиться затраченное время.
False
verbose_feature_names_out verbose_feature_names_out: bool, str or Callable[[str, str], str], default=True

- Если True, :meth:`ColumnTransformer.get_feature_names_out` добавит к именам
всех признаков префикс с именем преобразователя, создавшего этот
признак. Это эквивалентно заданию
`verbose_feature_names_out="{transformer_name}__{feature_name}"`.
- Если False, :meth:`ColumnTransformer.get_feature_names_out` не будет
добавлять префиксы к именам признаков и выдаст ошибку, если имена признаков не
уникальны.
- Если задано ``Callable[[str, str], str]``,
:meth:`ColumnTransformer.get_feature_names_out` переименует все признаки
с использованием имени преобразователя. Первый аргумент вызываемой функции — имя
преобразователя, второй — имя признака. Возвращаемая
строка станет новым именем признака.
- Если задано ``str``, это должна быть строка, готовая к форматированию. Указанная строка будет
отформатирована с использованием двух полей: ``transformer_name`` и ``feature_name``.
например, ``"{feature_name}__{transformer_name}"``. Подробнее см. метод :meth:`str.format`
из стандартной библиотеки.

.. versionadded:: 1.0

.. versionchanged:: 1.6
`verbose_feature_names_out` может быть вызываемой функцией или строкой для форматирования.
True
Обученные атрибуты
Имя Тип Значение
feature_names_in_ feature_names_in_: ndarray of shape (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](12,) ['season','year','month',...,'feel_temp','humidity','windspeed']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 12
named_transformers_ named_transformers_: :class:`~sklearn.utils.Bunch`

Атрибут только для чтения, позволяющий получить доступ к любому преобразователю по заданному имени.
Ключи — имена преобразователей, а значения — обученные объекты-преобразователи.
Bunch {'categorical...inMaxScaler()}
output_indices_ output_indices_: dict

Словарь, сопоставляющий имя каждого преобразователя срезу, который
соответствует индексам в преобразованных выходных данных. Это полезно для
определения того, какой преобразователь отвечает за каждый преобразованный
признак или признаки.

.. versionadded:: 1.0
dict {'ca...al': slice(0, 11, None), 'ho...os': slice(16, 17, None), 'ho...in': slice(15, 16, None), 'mo...os': slice(12, 13, None), ...}
sparse_output_ sparse_output_: bool

Логический флаг, указывающий, является ли результат ``transform``
разреженной матрицей или плотным массивом numpy. Это зависит от результатов
отдельных преобразователей и параметра `sparse_threshold`.
bool False
transformers_ transformers_: list

Коллекция обученных преобразователей в виде кортежей (имя,
обученный_преобразователь, столбец). `fitted_transformer` может быть оценивателем
или `'drop'`; значение `'passthrough'` заменяется эквивалентным
:class:`~sklearn.preprocessing.FunctionTransformer`. Если столбцы не были выбраны,
здесь будет указан необученный преобразователь. Если
остались столбцы, последним элементом будет кортеж вида:
('remainder', transformer, remaining_columns), соответствующий параметру
``remainder``. Если остались столбцы, то
``len(transformers_)==len(transformers)+1``, иначе
``len(transformers_)==len(transformers)``.

.. versionadded:: 1.7
Формат оставшихся столбцов теперь старается соответствовать формату остальных
преобразователей: если все столбцы заданы как имена столбцов (`str`),
оставшиеся столбцы хранятся как имена столбцов; если все столбцы заданы
как массивы масок (`bool`), оставшиеся столбцы также хранятся в таком формате; во всех остальных случаях
оставшиеся столбцы хранятся как индексы (`int`).
list [('ca...al', OneHotEncoder..._output=False), Index(['seaso..., dtype='str')), ('mo...in', FunctionTrans...7841640b83b0>), ['month']), ('mo...os', FunctionTrans...7841640bb060>), ['month']), ('we...in', FunctionTrans...7841640b9380>), ['weekday']), ...]
Index(['season', 'holiday', 'workingday', 'weather'], dtype='str')
Параметры
sparse_output sparse_output: bool, default=True

Если ``True``, возвращает разреженную матрицу или массив SciPy
в формате «Compressed Sparse Row» (CSR).

.. versionadded:: 1.2
Параметр `sparse` переименован в `sparse_output`
False
handle_unknown handle_unknown: {'error', 'ignore', 'infrequent_if_exist', 'warn'}, default='error'

Определяет способ обработки неизвестных категорий при выполнении :meth:`transform`.

- 'error' : Вызывает ошибку, если при преобразовании обнаружена неизвестная категория.
- 'ignore' : Если при преобразовании обнаружена неизвестная категория,
соответствующие столбцы признака с унитарным кодированием будут
заполнены нулями. При обратном преобразовании неизвестная категория
будет обозначена как None.
- 'infrequent_if_exist' : Если при преобразовании обнаружена неизвестная
категория, соответствующие столбцы признака с унитарным кодированием
будут соответствовать редкой категории, если она существует. Редкая
категория будет отображаться в последнюю позицию кодирования. При
обратном преобразовании неизвестная категория будет отображаться как
категория `'infrequent'`, если она существует. Если категория
`'infrequent'` не существует, то :meth:`transform` и
:meth:`inverse_transform` обработают неизвестную категорию так же, как
при `handle_unknown='ignore'`. Редкие категории определяются на основе
`min_frequency` и `max_categories`. Подробнее см. в
:ref:`Руководстве пользователя <encoder_infrequent_categories>`.
- 'warn' : Если при преобразовании обнаружена неизвестная категория,
выдается предупреждение, а кодирование выполняется так, как описано для
`handle_unknown="infrequent_if_exist"`.

.. versionchanged:: 1.1
Добавлена поддержка `'infrequent_if_exist'` для автоматической обработки неизвестных
категорий и редких категорий.

.. versionadded:: 1.6
В версии 1.6 добавлен параметр `"warn"`.
'ignore'
categories categories: 'auto' or a list of array-like, default='auto'

Категории (уникальные значения) для каждого признака:

- 'auto' : Автоматически определять категории по обучающим данным.
- list : ``categories[i]`` содержит категории, ожидаемые в столбце с индексом i.
Передаваемые категории в рамках одного признака не должны сочетать строки
и числовые значения; числовые значения должны быть отсортированы.

Используемые категории можно получить из атрибута ``categories_``.

.. versionadded:: 0.20
'auto'
drop drop: {'first', 'if_binary'} or an array-like of shape (n_features,), default=None

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

Однако удаление одной категории нарушает симметрию исходного
представления и поэтому может привести к смещению в последующих моделях,
например в моделях классификации или регрессии с линейной функцией потерь.

- None : сохранить все признаки (по умолчанию).
- 'first' : удалить первую категорию каждого признака. Если присутствует
только одна категория, признак будет удален полностью.
- 'if_binary' : удалить первую категорию каждого признака с двумя
категориями. Признаки с одной или более чем двумя категориями
останутся без изменений.
- array : ``drop[i]`` — категория признака ``X[:, i]``,
которую следует удалить.

Если для группировки редких категорий заданы `max_categories` или `min_frequency`,
удаление выполняется после группировки.

.. versionadded:: 0.21
Параметр `drop` добавлен в версии 0.21.

.. versionchanged:: 0.23
В версии 0.23 добавлен параметр `drop='if_binary'`.

.. versionchanged:: 1.1
Добавлена поддержка удаления редких категорий.
None
dtype dtype: number type, default=np.float64

Требуемый тип данных результата.
<class 'numpy.float64'>
min_frequency min_frequency: int or float, default=None

Задает минимальную частоту, ниже которой категория считается редкой.

- Если задано `int`, редкими считаются категории с меньшим количеством элементов.

- Если задано `float`, редкими считаются категории, количество элементов в которых
меньше `min_frequency * n_samples`.

.. versionadded:: 1.1
Подробнее см. в :ref:`Руководстве пользователя <encoder_infrequent_categories>`.
None
max_categories max_categories: int, default=None

Задает верхний предел количества выходных признаков для каждого входного
признака при наличии редких категорий. Если редкие категории есть,
`max_categories` включает категорию, представляющую редкие категории,
а также частые категории. Если задано `None`,
количество выходных признаков не ограничено.

.. versionadded:: 1.1
Подробнее см. в :ref:`Руководстве пользователя <encoder_infrequent_categories>`.
None
feature_name_combiner feature_name_combiner: "concat" or callable, default="concat"

Функция с сигнатурой `def callable(input_feature, category)`, возвращающая
строку. Используется для создания имен признаков, возвращаемых методом
:meth:`get_feature_names_out`.

`"concat"` объединяет имя закодированного признака и категорию с помощью
`feature + "_" + str(category)`. Например, для признака X со значениями 1, 6, 7 будут созданы
имена признаков `X_1, X_6, X_7`.

.. versionadded:: 1.3
'concat'
Обученные атрибуты
Имя Тип Значение
categories_ categories_: list of arrays

Категории каждого признака, определенные во время обучения
(в порядке признаков в X и соответствующие результату
``transform``). Сюда входит категория, указанная в ``drop``
(если она задана).
list [array(['fall'... dtype=object), array(['False... dtype=object), array(['False... dtype=object), array(['clear... dtype=object)]
drop_idx_ drop_idx_: array of shape (n_features,)

- ``drop_idx_[i]`` — индекс категории в ``categories_[i]``,
которую следует удалить для каждого признака.
- ``drop_idx_[i] = None``, если для признака с индексом ``i``
не нужно удалять категорию, например, когда задано `drop='if_binary'`, а
признак не является бинарным.
- ``drop_idx_ = None``, если нужно сохранить все преобразованные признаки.

Если включены редкие категории (для `min_frequency` или
`max_categories` задано значение, отличное от значения по умолчанию), а `drop_idx[i]` соответствует
редкой категории, удаляется вся редкая категория.

.. versionchanged:: 0.23
Добавлена возможность содержать значения `None`.
NoneType None
feature_names_in_ feature_names_in_: ndarray of shape (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](4,) ['season','holiday','workingday','weather']
n_features_in_ n_features_in_: int

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

.. versionadded:: 1.0
int 4
11 признаков
season_fall
season_spring
season_summer
season_winter
holiday_False
holiday_True
workingday_False
workingday_True
weather_clear
weather_misty
weather_rain
['month']
Параметры
func func: callable, default=None

Функция, используемая для преобразования. Ей будут переданы
те же аргументы, что и transform, с передачей args и kwargs.
Если func равна None, то func будет тождественной функцией.
<function sin...x7841640b83b0>
feature_names_out feature_names_out: callable, 'one-to-one' or None, default=None

Определяет список имен признаков, возвращаемый методом
`get_feature_names_out`. Если задано 'one-to-one', выходные
имена признаков совпадают с входными. Если задана вызываемая функция,
она должна принимать два позиционных аргумента: этот
`FunctionTransformer` (`self`) и массивоподобный объект с именами входных признаков
(`input_features`). Она должна возвращать массивоподобный объект с именами выходных признаков.
Метод `get_feature_names_out` определен только в том случае,
если `feature_names_out` не равен None.

Подробнее см. в ``get_feature_names_out``.

.. versionadded:: 1.1
'one-to-one'
inverse_func inverse_func: callable, default=None

Функция, используемая для обратного преобразования. Ей будут
переданы те же аргументы, что и inverse transform, с передачей args и
kwargs. Если inverse_func равна None, то inverse_func
будет тождественной функцией.
None
validate validate: bool, default=False

Указывает, следует ли проверять входной массив X перед вызовом
``func``. Возможны следующие варианты:

- Если задано False, проверка входных данных не выполняется.
- Если задано True, X будет преобразован в двумерный массив NumPy или
разреженную матрицу. Если преобразование невозможно, будет
вызвано исключение.

.. versionchanged:: 0.22
Значение ``validate`` по умолчанию изменено с True на False.
False
accept_sparse accept_sparse: bool, default=False

Указывает, принимает ли func разреженную матрицу в качестве входных данных. Если validate
равен False, этот параметр не влияет на поведение. Иначе, если accept_sparse равен false,
при передаче разреженной матрицы будет вызвано исключение.
False
check_inverse check_inverse: bool, default=True

Проверять ли, что применение ``func``, а затем ``inverse_func`` возвращает
исходные входные данные. Может использоваться для проверки корректности: если
условие не выполняется, выдается предупреждение.

.. versionadded:: 0.20
True
kw_args kw_args: dict, default=None

Словарь дополнительных аргументов-ключевых слов, передаваемых в func.

.. versionadded:: 0.18
None
inv_kw_args inv_kw_args: dict, default=None

Словарь дополнительных аргументов-ключевых слов, передаваемых в inverse_func.

.. versionadded:: 0.18
None
Обученные атрибуты
Имя Тип Значение
feature_names_in_ feature_names_in_: ndarray of shape (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](1,) ['month']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 1
1 признак
month
['month']
Параметры
func func: callable, default=None

Вызываемый объект, используемый для преобразования. Ему будут переданы
те же аргументы, что и transform, с передачей args и kwargs.
Если func равен None, то func будет тождественной функцией.
<function cos...x7841640bb060>
feature_names_out feature_names_out: callable, 'one-to-one' or None, default=None

Определяет список имен признаков, возвращаемый методом
`get_feature_names_out`. Если значение равно 'one-to-one', то выходные
имена признаков будут совпадать с входными именами признаков. Если это
вызываемый объект, он должен принимать два позиционных аргумента: этот
`FunctionTransformer` (`self`) и массивоподобный объект с входными именами признаков
(`input_features`). Он должен возвращать массивоподобный объект с выходными именами
признаков. Метод `get_feature_names_out` определен только в том случае, если
`feature_names_out` не равен None.

Дополнительные сведения см. в ``get_feature_names_out``.

.. versionadded:: 1.1
'one-to-one'
inverse_func inverse_func: callable, default=None

Вызываемый объект, используемый для обратного преобразования. Ему будут
переданы те же аргументы, что и inverse transform, с передачей args и
kwargs. Если inverse_func равен None, то inverse_func
будет тождественной функцией.
None
validate validate: bool, default=False

Указывает, следует ли проверять входной массив X перед вызовом
``func``. Возможны следующие варианты:

- Если значение False, проверка входных данных не выполняется.
- Если значение True, X будет преобразован в двумерный массив NumPy или
разреженную матрицу. Если преобразование невозможно, будет вызвано
исключение.

.. versionchanged:: 0.22
Значение ``validate`` по умолчанию изменено с True на False.
False
accept_sparse accept_sparse: bool, default=False

Указывает, принимает ли func разреженную матрицу в качестве входных данных. Если validate равно
False, этот параметр не действует. В противном случае, если accept_sparse имеет значение false,
при передаче разреженных матриц будет вызвано исключение.
False
check_inverse check_inverse: bool, default=True

Следует ли проверять, что ``func``, за которой следует ``inverse_func``, возвращает
исходные входные данные. Этот параметр можно использовать для проверки корректности: если условие
не выполняется, выводится предупреждение.

.. versionadded:: 0.20
True
kw_args kw_args: dict, default=None

Словарь дополнительных именованных аргументов, передаваемых в func.

.. versionadded:: 0.18
None
inv_kw_args inv_kw_args: dict, default=None

Словарь дополнительных именованных аргументов, передаваемых в inverse_func.

.. versionadded:: 0.18
None
Атрибуты обученной модели
Имя Тип Значение
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](1,) ['month']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 1
1 признак
month
['weekday']
Параметры
func func: callable, default=None

Вызываемый объект, используемый для преобразования. Ему будут переданы
те же аргументы, что и transform, с передачей args и kwargs.
Если func равен None, то func будет тождественной функцией.
<function sin...x7841640b9380>
feature_names_out feature_names_out: callable, 'one-to-one' or None, default=None

Определяет список имен признаков, возвращаемый методом
`get_feature_names_out`. Если значение равно 'one-to-one', то выходные
имена признаков будут совпадать с входными именами признаков. Если это
вызываемый объект, он должен принимать два позиционных аргумента: этот
`FunctionTransformer` (`self`) и массивоподобный объект с входными именами признаков
(`input_features`). Он должен возвращать массивоподобный объект с выходными именами
признаков. Метод `get_feature_names_out` определен только в том случае, если
`feature_names_out` не равен None.

Дополнительные сведения см. в ``get_feature_names_out``.

.. versionadded:: 1.1
'one-to-one'
inverse_func inverse_func: callable, default=None

Вызываемый объект, используемый для обратного преобразования. Ему будут
переданы те же аргументы, что и inverse transform, с передачей args и
kwargs. Если inverse_func равен None, то inverse_func
будет тождественной функцией.
None
validate validate: bool, default=False

Указывает, следует ли проверять входной массив X перед вызовом
``func``. Возможны следующие варианты:

- Если значение False, проверка входных данных не выполняется.
- Если значение True, X будет преобразован в двумерный массив NumPy или
разреженную матрицу. Если преобразование невозможно, будет вызвано
исключение.

.. versionchanged:: 0.22
Значение ``validate`` по умолчанию изменено с True на False.
False
accept_sparse accept_sparse: bool, default=False

Указывает, принимает ли func разреженную матрицу в качестве входных данных. Если validate равно
False, этот параметр не действует. В противном случае, если accept_sparse имеет значение false,
при передаче разреженных матриц будет вызвано исключение.
False
check_inverse check_inverse: bool, default=True

Следует ли проверять, что ``func``, за которой следует ``inverse_func``, возвращает
исходные входные данные. Этот параметр можно использовать для проверки корректности: если условие
не выполняется, выводится предупреждение.

.. versionadded:: 0.20
True
kw_args kw_args: dict, default=None

Словарь дополнительных именованных аргументов, передаваемых в func.

.. versionadded:: 0.18
None
inv_kw_args inv_kw_args: dict, default=None

Словарь дополнительных именованных аргументов, передаваемых в inverse_func.

.. versionadded:: 0.18
None
Атрибуты обученной модели
Имя Тип Значение
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](1,) ['weekday']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 1
1 признак
weekday
['weekday']
Параметры
func func: callable, default=None

Вызываемый объект, используемый для преобразования. Ему будут переданы
те же аргументы, что и transform, с передачей args и kwargs.
Если func равен None, то func будет тождественной функцией.
<function cos...x7841640baa30>
feature_names_out feature_names_out: callable, 'one-to-one' or None, default=None

Определяет список имен признаков, возвращаемый методом
`get_feature_names_out`. Если значение равно 'one-to-one', то выходные
имена признаков будут совпадать с входными именами признаков. Если это
вызываемый объект, он должен принимать два позиционных аргумента: этот
`FunctionTransformer` (`self`) и массивоподобный объект с входными именами признаков
(`input_features`). Он должен возвращать массивоподобный объект с выходными именами
признаков. Метод `get_feature_names_out` определен только в том случае, если
`feature_names_out` не равен None.

Дополнительные сведения см. в ``get_feature_names_out``.

.. versionadded:: 1.1
'one-to-one'
inverse_func inverse_func: callable, default=None

Вызываемый объект, используемый для обратного преобразования. Ему будут
переданы те же аргументы, что и inverse transform, с передачей args и
kwargs. Если inverse_func равен None, то inverse_func
будет тождественной функцией.
None
validate validate: bool, default=False

Указывает, следует ли проверять входной массив X перед вызовом
``func``. Возможны следующие варианты:

- Если значение False, проверка входных данных не выполняется.
- Если значение True, X будет преобразован в двумерный массив NumPy или
разреженную матрицу. Если преобразование невозможно, будет вызвано
исключение.

.. versionchanged:: 0.22
Значение ``validate`` по умолчанию изменено с True на False.
False
accept_sparse accept_sparse: bool, default=False

Указывает, принимает ли func разреженную матрицу в качестве входных данных. Если validate равно
False, этот параметр не действует. В противном случае, если accept_sparse имеет значение false,
при передаче разреженных матриц будет вызвано исключение.
False
check_inverse check_inverse: bool, default=True

Следует ли проверять, что ``func``, за которой следует ``inverse_func``, возвращает
исходные входные данные. Этот параметр можно использовать для проверки корректности: если условие
не выполняется, выводится предупреждение.

.. versionadded:: 0.20
True
kw_args kw_args: dict, default=None

Словарь дополнительных именованных аргументов, передаваемых в func.

.. versionadded:: 0.18
None
inv_kw_args inv_kw_args: dict, default=None

Словарь дополнительных именованных аргументов, передаваемых в inverse_func.

.. versionadded:: 0.18
None
Атрибуты обученной модели
Имя Тип Значение
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](1,) ['weekday']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 1
1 признак
weekday
['hour']
Параметры
func func: callable, default=None

Вызываемый объект, используемый для преобразования. Ему будут переданы
те же аргументы, что и методу transform; args и kwargs будут переданы далее.
Если func равно None, то func будет тождественной функцией.
<function sin...x7841640b8300>
feature_names_out feature_names_out: callable, 'one-to-one' or None, default=None

Определяет список имён признаков, который будет возвращён методом
`get_feature_names_out`. Если значение — 'one-to-one', имена выходных
признаков будут совпадать с именами входных признаков. Если задан
вызываемый объект, он должен принимать два позиционных аргумента: этот
`FunctionTransformer` (`self`) и массивоподобный объект с именами входных признаков
(`input_features`). Он должен возвращать массивоподобный объект с именами выходных признаков.
Метод `get_feature_names_out` определён только в том случае, если
`feature_names_out` не равно None.

Подробнее см. ``get_feature_names_out``.

.. versionadded:: 1.1
'one-to-one'
inverse_func inverse_func: callable, default=None

Вызываемый объект, используемый для обратного преобразования. Ему будут
переданы те же аргументы, что и методу обратного преобразования; args и
kwargs будут переданы далее. Если inverse_func равно None, то inverse_func
будет тождественной функцией.
None
validate validate: bool, default=False

Указывает, следует ли проверять входной массив X перед вызовом
``func``. Возможны следующие варианты:

- Если значение False, проверка входных данных не выполняется.
- Если значение True, X будет преобразован в двумерный массив NumPy или
разреженную матрицу. Если преобразование невозможно, будет вызвано исключение.

.. versionchanged:: 0.22
Значение ``validate`` по умолчанию изменено с True на False.
False
accept_sparse accept_sparse: bool, default=False

Указывает, что func принимает на вход разреженную матрицу. Если validate равно
False, этот параметр не влияет на поведение. В противном случае, если accept_sparse равно False,
при передаче разреженной матрицы будет вызвано исключение.
False
check_inverse check_inverse: bool, default=True

Следует ли проверять, что применение ``func`` с последующим ``inverse_func`` возвращает
исходные входные данные. Этот параметр можно использовать для проверки корректности: будет выдано
предупреждение, если условие не выполнено.

.. versionadded:: 0.20
True
kw_args kw_args: dict, default=None

Словарь дополнительных именованных аргументов, передаваемых в func.

.. versionadded:: 0.18
None
inv_kw_args inv_kw_args: dict, default=None

Словарь дополнительных именованных аргументов, передаваемых в inverse_func.

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

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

.. versionadded:: 1.0
ndarray[object](1,) ['hour']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 1
1 признак
hour
['hour']
Параметры
func func: callable, default=None

Вызываемый объект, используемый для преобразования. Ему будут переданы
те же аргументы, что и методу transform; args и kwargs будут переданы далее.
Если func равно None, то func будет тождественной функцией.
<function cos...x7841640b9e80>
feature_names_out feature_names_out: callable, 'one-to-one' or None, default=None

Определяет список имён признаков, который будет возвращён методом
`get_feature_names_out`. Если значение — 'one-to-one', имена выходных
признаков будут совпадать с именами входных признаков. Если задан
вызываемый объект, он должен принимать два позиционных аргумента: этот
`FunctionTransformer` (`self`) и массивоподобный объект с именами входных признаков
(`input_features`). Он должен возвращать массивоподобный объект с именами выходных признаков.
Метод `get_feature_names_out` определён только в том случае, если
`feature_names_out` не равно None.

Подробнее см. ``get_feature_names_out``.

.. versionadded:: 1.1
'one-to-one'
inverse_func inverse_func: callable, default=None

Вызываемый объект, используемый для обратного преобразования. Ему будут
переданы те же аргументы, что и методу обратного преобразования; args и
kwargs будут переданы далее. Если inverse_func равно None, то inverse_func
будет тождественной функцией.
None
validate validate: bool, default=False

Указывает, следует ли проверять входной массив X перед вызовом
``func``. Возможны следующие варианты:

- Если значение False, проверка входных данных не выполняется.
- Если значение True, X будет преобразован в двумерный массив NumPy или
разреженную матрицу. Если преобразование невозможно, будет вызвано исключение.

.. versionchanged:: 0.22
Значение ``validate`` по умолчанию изменено с True на False.
False
accept_sparse accept_sparse: bool, default=False

Указывает, что func принимает на вход разреженную матрицу. Если validate равно
False, этот параметр не влияет на поведение. В противном случае, если accept_sparse равно False,
при передаче разреженной матрицы будет вызвано исключение.
False
check_inverse check_inverse: bool, default=True

Следует ли проверять, что применение ``func`` с последующим ``inverse_func`` возвращает
исходные входные данные. Этот параметр можно использовать для проверки корректности: будет выдано
предупреждение, если условие не выполнено.

.. versionadded:: 0.20
True
kw_args kw_args: dict, default=None

Словарь дополнительных именованных аргументов, передаваемых в func.

.. versionadded:: 0.18
None
inv_kw_args inv_kw_args: dict, default=None

Словарь дополнительных именованных аргументов, передаваемых в inverse_func.

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

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

.. versionadded:: 1.0
ndarray[object](1,) ['hour']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 1
1 признак
hour
['year', 'temp', 'feel_temp', 'humidity', 'windspeed']
Параметры
feature_range feature_range: tuple (min, max), default=(0, 1)

Заданный диапазон значений преобразованных данных.
(0, ...)
copy copy: bool, default=True

Установите значение False, чтобы нормализовать строки на месте и избежать
копирования (если входные данные уже являются массивом NumPy).
True
clip clip: bool, default=False

Установите значение True, чтобы ограничивать преобразованные значения отложенных данных
заданным диапазоном `feature_range`.
Поскольку этот параметр ограничивает значения, `inverse_transform` может оказаться
не в состоянии восстановить исходные данные.

.. note::
Установка `clip=True` не предотвращает дрейф признаков (сдвиг распределения
между обучающими и тестовыми данными). Преобразованные значения ограничиваются
диапазоном `feature_range`, что помогает избежать нежелательного поведения моделей,
чувствительных к выходящим за диапазон входным значениям (например, линейных моделей). Используйте с осторожностью,
поскольку ограничение может исказить распределение тестовых данных.

.. versionadded:: 0.24
False
Обученные атрибуты
Имя Тип Значение
data_max_ data_max_: ndarray формы (n_features,)

Максимальное значение каждого признака, обнаруженное в данных

.. versionadded:: 0.17
атрибут *data_max_*
ndarray[float64](5,) [ 1. ,39.36,50. , 1. ,57. ]
data_min_ data_min_: ndarray формы (n_features,)

Минимальное значение каждого признака, обнаруженное в данных

.. versionadded:: 0.17
атрибут *data_min_*
ndarray[float64](5,) [0. ,0.82,0.76,0.16,0. ]
data_range_ data_range_: ndarray формы (n_features,)

Диапазон каждого признака ``(data_max_ - data_min_)``, обнаруженный в данных

.. versionadded:: 0.17
атрибут *data_range_*
ndarray[float64](5,) [ 1. ,38.54,49.24, 0.84,57. ]
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](5,) ['year','temp','feel_temp','humidity','windspeed']
min_ min_: ndarray формы (n_features,)

Смещение минимума для каждого признака. Эквивалентно
``min - X.min(axis=0) * self.scale_``
ndarray[float64](5,) [ 0. ,-0.02,-0.02,-0.19, 0. ]
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 5
n_samples_seen_ n_samples_seen_: int

Количество обработанных оценивателем объектов.
Счётчик сбрасывается при новых вызовах fit, но увеличивается при каждом
вызове ``partial_fit``.
int 10000
scale_ scale_: ndarray формы (n_features,)

Относительный масштаб данных для каждого признака. Эквивалентно
``(max - min) / (X.max(axis=0) - X.min(axis=0))``

.. versionadded:: 0.17
атрибут *scale_*.
ndarray[float64](5,) [1. ,0.03,0.02,1.19,0.02]
5 признаков
year
temp
feel_temp
humidity
windspeed
22 признака
categorical__season_fall
categorical__season_spring
categorical__season_summer
categorical__season_winter
categorical__holiday_False
categorical__holiday_True
categorical__workingday_False
categorical__workingday_True
categorical__weather_clear
categorical__weather_misty
categorical__weather_rain
month_sin__month
month_cos__month
weekday_sin__weekday
weekday_cos__weekday
hour_sin__hour
hour_cos__hour
remainder__year
remainder__temp
remainder__feel_temp
remainder__humidity
remainder__windspeed
Параметры
alphas alphas: массивоподобный объект формы (n_alphas,), по умолчанию=(0.1, 1.0, 10.0)

Массив значений alpha, которые нужно проверить.
Сила регуляризации; должна быть положительным числом с плавающей точкой. Регуляризация
улучшает обусловленность задачи и уменьшает дисперсию
оценок. Большие значения соответствуют более сильной регуляризации.
Alpha соответствует ``1 / (2C)`` в других линейных моделях, таких как
:class:`~sklearn.linear_model.LogisticRegression` или
:class:`~sklearn.svm.LinearSVC`.
При использовании перекрёстной проверки Leave-One-Out значения alpha должны быть строго положительными.

Пример того, как сила регуляризации влияет на коэффициенты модели,
см. в :ref:`sphx_glr_auto_examples_linear_model_plot_ridge_coeffs.py`.
array([1.0000...00000000e+06])
fit_intercept fit_intercept: bool, по умолчанию=True

Вычислять ли свободный член для этой модели. Если установлено
значение false, свободный член не будет использоваться в вычислениях
(то есть предполагается, что данные центрированы).
True
scoring scoring: str, callable, по умолчанию=None

Метод оценки, используемый для перекрёстной проверки. Возможные варианты:

- str: варианты см. в :ref:`scoring_string_names`.
- callable: вызываемый объект-оценщик (например, функция) с сигнатурой
``scorer(estimator, X, y)``. Подробности см. в :ref:`scoring_callable`.
- `None`: отрицательная :ref:`среднеквадратичная ошибка <mean_squared_error>`, если cv равно
None (то есть при использовании перекрёстной проверки leave-one-out), или
:ref:`коэффициент детерминации <r2_score>` (:math:`R^2`) в противном случае.
None
cv cv: int, генератор перекрёстной проверки или итерируемый объект, по умолчанию=None

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

- None — для использования эффективной перекрёстной проверки Leave-One-Out
- целое число — для указания количества фолдов,
- :term:`разделитель CV`,
- итерируемый объект, выдающий разбиения (train, test) в виде массивов индексов.

Для значений integer/None, если ``y`` содержит два или несколько классов,
используется :class:`~sklearn.model_selection.StratifiedKFold`, иначе
используется :class:`~sklearn.model_selection.KFold`.

Различные стратегии перекрёстной проверки, доступные здесь,
описаны в :ref:`руководстве пользователя <cross_validation>`.
None
gcv_mode gcv_mode: {'auto', 'svd', 'eigen'}, по умолчанию='auto'

Флаг, указывающий, какую стратегию использовать при выполнении
перекрёстной проверки Leave-One-Out. Возможные варианты::

'auto' : то же, что 'eigen'
'svd' : использовать сингулярное разложение матрицы X, если X плотная;
для разреженной X использовать 'eigen'
'eigen' : использовать спектральное разложение X X', если n_samples <= n_features,
или X' X, если n_features < n_samples

Режим 'auto' используется по умолчанию и предназначен для выбора более быстрого
варианта в зависимости от формы и разреженности обучающих данных.
None
store_cv_results store_cv_results: bool, по умолчанию=False

Флаг, указывающий, следует ли сохранять значения перекрёстной проверки,
соответствующие каждому alpha, в атрибуте ``cv_results_`` (см.
ниже). Этот флаг совместим только с ``cv=None`` (то есть при использовании
перекрёстной проверки Leave-One-Out).

.. versionchanged:: 1.5
Имя параметра изменено с `store_cv_values` на `store_cv_results`.
False
alpha_per_target alpha_per_target: bool, по умолчанию=False

Флаг, указывающий, нужно ли отдельно подбирать значение alpha (из списка параметра
`alphas`) для каждой целевой переменной (в режиме нескольких выходов:
несколько целевых переменных для прогнозирования). Если задано значение `True`, после
обучения атрибут `alpha_` будет содержать значение для каждой целевой переменной.
Если задано значение `False`, для всех целевых переменных используется одно значение alpha.
Этот флаг совместим только с ``cv=None`` (то есть при использовании
перекрёстной проверки Leave-One-Out).

.. versionadded:: 0.24
False
Обученные атрибуты
Имя Тип Значение
alpha_ alpha_: float или ndarray формы (n_targets,)

Оценённый параметр регуляризации или, если ``alpha_per_target=True``,
оценённый параметр регуляризации для каждой целевой переменной.
float 1
best_score_ best_score_: float или ndarray формы (n_targets,)

Оценка базового оценщика с наилучшим значением alpha или,
если ``alpha_per_target=True``, оценка для каждой целевой переменной.

.. versionadded:: 0.23
float64 -0.01384
coef_ coef_: ndarray формы (n_features) или (n_targets, n_features)

Вектор(ы) весов.
ndarray[float64](22,) [-0. ,-0.04, 0.01,..., 0.18,-0.03,-0.03]
intercept_ intercept_: float или ndarray формы (n_targets,)

Свободный член в функции принятия решений. Устанавливается в 0.0, если
``fit_intercept = False``.
float64 0.04623
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 22


Качество нашей модели линейной регрессии с таким простым конструированием признаков немного выше, чем при использовании исходных порядковых временных признаков, но ниже, чем при использовании временных признаков, закодированных методом one-hot. В конце этой записной книжки мы подробнее рассмотрим возможные причины такого неудовлетворительного результата.

Периодические сплайновые признаки

Можно попробовать альтернативное кодирование периодических признаков, связанных со временем, с помощью сплайновых преобразований, используя достаточно большое число сплайнов. В результате число расширенных признаков будет больше, чем при синусно-косинусном преобразовании:

from sklearn.preprocessing import SplineTransformer


def periodic_spline_transformer(period, n_splines=None, degree=3):
    if n_splines is None:
        n_splines = period
    n_knots = n_splines + 1  # periodic and include_bias is True
    return SplineTransformer(
        degree=degree,
        n_knots=n_knots,
        knots=np.linspace(0, period, n_knots).reshape(n_knots, 1),
        extrapolation="periodic",
        include_bias=True,
    )

Теперь визуализируем влияние такого расширения признаков на синтетические данные о часах, выполнив небольшую экстраполяцию за пределы hour=23:

hour_df = pd.DataFrame(
    np.linspace(0, 26, 1000).reshape(-1, 1),
    columns=["hour"],
)
splines = periodic_spline_transformer(24, n_splines=12).fit_transform(hour_df)
splines_df = pd.DataFrame(
    splines,
    columns=[f"spline_{i}" for i in range(splines.shape[1])],
)
pd.concat([hour_df, splines_df], axis="columns").plot(x="hour", cmap=plt.cm.tab20b)
_ = plt.title("Periodic spline-based encoding for the 'hour' feature")
Periodic spline-based encoding for the 'hour' feature

Благодаря использованию параметра extrapolation="periodic" мы видим, что кодирование признаков остается гладким при экстраполяции за полночь.

Теперь можно построить прогнозирующий конвейер, используя эту альтернативную стратегию создания периодических признаков.

Для порядковых значений можно использовать меньше сплайнов, чем дискретных уровней. Благодаря этому сплайновое кодирование становится эффективнее кодирования one-hot, сохраняя при этом большую часть выразительности:

cyclic_spline_transformer = ColumnTransformer(
    transformers=[
        ("categorical", one_hot_encoder, categorical_columns),
        ("cyclic_month", periodic_spline_transformer(12, n_splines=6), ["month"]),
        ("cyclic_weekday", periodic_spline_transformer(7, n_splines=3), ["weekday"]),
        ("cyclic_hour", periodic_spline_transformer(24, n_splines=12), ["hour"]),
    ],
    remainder=MinMaxScaler(),
    verbose_feature_names_out=False,
)
cyclic_spline_linear_pipeline = make_pipeline(
    cyclic_spline_transformer,
    RidgeCV(alphas=alphas),
)
evaluate(cyclic_spline_linear_pipeline, X, y, cv=ts_cv)
Mean Absolute Error:     0.097 +/- 0.011
Root Mean Squared Error: 0.132 +/- 0.013
Pipeline(steps=[('columntransformer',
                 ColumnTransformer(remainder=MinMaxScaler(),
                                   transformers=[('categorical',
                                                  OneHotEncoder(handle_unknown='ignore',
                                                                sparse_output=False),
                                                  Index(['season', 'holiday', 'workingday', 'weather'], dtype='str')),
                                                 ('cyclic_month',
                                                  SplineTransformer(extrapolation='periodic',
                                                                    knots=array([[ 0.],
       [ 2.],
       [ 4.],
       [ 6.],
       [ 8.],
       [10.],
       [12.]]),
                                                                    n_knots...
                 RidgeCV(alphas=array([1.00000000e-06, 3.16227766e-06, 1.00000000e-05, 3.16227766e-05,
       1.00000000e-04, 3.16227766e-04, 1.00000000e-03, 3.16227766e-03,
       1.00000000e-02, 3.16227766e-02, 1.00000000e-01, 3.16227766e-01,
       1.00000000e+00, 3.16227766e+00, 1.00000000e+01, 3.16227766e+01,
       1.00000000e+02, 3.16227766e+02, 1.00000000e+03, 3.16227766e+03,
       1.00000000e+04, 3.16227766e+04, 1.00000000e+05, 3.16227766e+05,
       1.00000000e+06])))])
В среде Jupyter повторно выполните эту ячейку, чтобы отобразить представление HTML, или доверьте блокноту.
На GitHub представление HTML отобразить невозможно; попробуйте открыть эту страницу на nbviewer.org.
Параметры
steps steps: список кортежей

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

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

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

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

.. versionadded:: 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: логическое значение, по умолчанию False

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

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

.. versionadded:: 1.0
ndarray[object](12,) ['season','year','month',...,'feel_temp','humidity','windspeed']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 12
Параметры
transformers transformers: список кортежей

Список кортежей (имя, преобразователь, столбцы), задающих
объекты-преобразователи, которые будут применены к подмножествам данных.

name: str
Как и в Pipeline и FeatureUnion, это позволяет задавать преобразователь и
его параметры с помощью ``set_params`` и выполнять поиск при настройке сетки
параметров.
transformer: {'drop', 'passthrough'} или оцениватель
Оцениватель должен поддерживать :term:`fit` и :term:`transform`.
Также принимаются специальные строки 'drop' и 'passthrough',
указывающие соответственно на то, что столбцы нужно удалить
или передать без преобразования.
columns: str, массивоподобный объект из str, int, массивоподобный объект из int, массивоподобный объект из bool, slice или вызываемый объект
Индексирует данные по второй оси. Целые числа рассматриваются как
позиционные индексы столбцов, а строки могут ссылаться на столбцы DataFrame
по имени. Если ``transformer`` ожидает X в виде одномерного массивоподобного объекта (вектора),
следует использовать скалярную строку или целое число;
в противном случае преобразователю будет передан двумерный массив.
Вызываемому объекту передаются входные данные `X`; он может вернуть любое из
перечисленных выше значений. Для выбора нескольких столбцов по имени или типу данных можно использовать
:obj:`make_column_selector`.
[('categorical', ...), ('cyclic_month', ...), ...]
remainder remainder: {'drop', 'passthrough'} или оцениватель, по умолчанию 'drop'

По умолчанию преобразуются и объединяются в выходных данных только столбцы,
указанные в `transformers`, а неуказанные столбцы отбрасываются (значение по умолчанию — ``'drop'``).
Если задать ``remainder='passthrough'``, все оставшиеся столбцы, которые
не были указаны в `transformers`, но присутствовали в данных, переданных
в `fit`, будут автоматически переданы дальше. Это подмножество столбцов
объединяется с выходными данными преобразователей. Для фреймов данных
дополнительные столбцы, отсутствовавшие во время `fit`, исключаются из результата
`transform`.
Если присвоить ``remainder`` оцениватель, для оставшихся
неуказанных столбцов будет использоваться этот оцениватель. Он
должен поддерживать :term:`fit` и :term:`transform`.
Обратите внимание: для использования этой возможности столбцы DataFrame,
передаваемые в :term:`fit` и :term:`transform`, должны иметь одинаковый порядок.
MinMaxScaler()
verbose_feature_names_out verbose_feature_names_out: логическое значение, строка или Callable[[str, str], str], по умолчанию True

- Если значение равно True, :meth:`ColumnTransformer.get_feature_names_out` добавит в начало
всех имен признаков имя преобразователя, создавшего этот
признак. Это равнозначно заданию
`verbose_feature_names_out="{transformer_name}__{feature_name}"`.
- Если значение равно False, :meth:`ColumnTransformer.get_feature_names_out` не будет
добавлять префикс к именам признаков и вызовет ошибку, если имена признаков не уникальны.
- Если задано значение ``Callable[[str, str], str]``,
:meth:`ColumnTransformer.get_feature_names_out` переименует все признаки,
используя имя преобразователя. Первый аргумент вызываемого объекта — имя
преобразователя, второй — имя признака. Возвращенная
строка станет новым именем признака.
- Если задана строка, она должна быть готова к форматированию. Указанная строка будет
отформатирована с использованием двух имен полей: ``transformer_name`` и ``feature_name``.
например, ``"{feature_name}__{transformer_name}"``. Подробнее см. метод :meth:`str.format`
из стандартной библиотеки.

.. versionadded:: 1.0

.. versionchanged:: 1.6
`verbose_feature_names_out` может быть вызываемым объектом или форматируемой строкой.
False
sparse_threshold sparse_threshold: float, по умолчанию 0.3

Если выходные данные различных преобразователей содержат разреженные матрицы,
они будут объединены в разреженную матрицу, если общая плотность
ниже этого значения. Используйте ``sparse_threshold=0``, чтобы всегда возвращать
плотный массив. Если преобразованные выходные данные состоят только из плотных данных,
результат объединения будет плотным, и этот параметр будет проигнорирован.
0.3
n_jobs n_jobs: int, по умолчанию None

Число задач, выполняемых параллельно.
``None`` означает 1, если только не используется контекст :obj:`joblib.parallel_backend`.
``-1`` означает использование всех процессоров. Подробнее см. :term:`Глоссарий <n_jobs>`.
None
transformer_weights transformer_weights: dict, по умолчанию None

Множители для признаков каждого преобразователя. Выходные данные
преобразователя умножаются на эти веса. Ключи — имена преобразователей,
значения — веса.
None
verbose verbose: логическое значение, по умолчанию False

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

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

.. versionadded:: 1.0
ndarray[object](12,) ['season','year','month',...,'feel_temp','humidity','windspeed']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 12
named_transformers_ named_transformers_: :class:`~sklearn.utils.Bunch`

Атрибут только для чтения, позволяющий получить доступ к любому преобразователю по заданному имени.
Ключи — имена преобразователей, значения — обученные объекты-преобразователи.
Bunch {'categorical...inMaxScaler()}
output_indices_ output_indices_: dict

Словарь, сопоставляющий имена преобразователей со срезами, в которых
указаны индексы соответствующих преобразованных выходных данных. Это полезно для
определения того, какой преобразователь отвечает за каждый преобразованный
признак или признаки.

.. versionadded:: 1.0
dict {'ca...al': slice(0, 11, None), 'cy...ur': slice(20, 32, None), 'cy...th': slice(11, 17, None), 'cy...ay': slice(17, 20, None), ...}
sparse_output_ sparse_output_: bool

Логический флаг, указывающий, является ли результат ``transform``
разреженной матрицей или плотным массивом numpy; это зависит от выходных данных
отдельных преобразователей и параметра `sparse_threshold`.
bool False
transformers_ transformers_: список

Коллекция обученных преобразователей в виде кортежей (имя,
обученный_преобразователь, столбец). `fitted_transformer` может быть оценивателем
или `'drop'`; значение `'passthrough'` заменяется эквивалентным
:class:`~sklearn.preprocessing.FunctionTransformer`. Если столбцы не были выбраны,
здесь будет находиться необученный преобразователь. Если остались
столбцы, последним элементом будет кортеж вида:
('remainder', transformer, remaining_columns), соответствующий параметру
``remainder``. Если остались столбцы, то
``len(transformers_)==len(transformers)+1``, в противном случае
``len(transformers_)==len(transformers)``.

.. versionadded:: 1.7
Теперь формат оставшихся столбцов по возможности соответствует формату остальных
преобразователей: если все столбцы указаны как имена столбцов (`str`),
оставшиеся столбцы сохраняются как имена; если все столбцы заданы
как маски-массивы (`bool`), оставшиеся столбцы также сохраняются в таком формате;
во всех остальных случаях оставшиеся столбцы сохраняются как индексы (`int`).
list [('ca...al', OneHotEncoder..._output=False), Index(['seaso..., dtype='str')), ('cy...th', SplineTransfo... n_knots=7), ['month']), ('cy...ay', SplineTransfo... n_knots=4), ['weekday']), ('cy...ur', SplineTransfo... n_knots=13), ['hour']), ...]
Index(['season', 'holiday', 'workingday', 'weather'], dtype='str')
Параметры
sparse_output sparse_output: bool, значение по умолчанию=True

Если ``True``, возвращает разреженную матрицу/массив SciPy
в формате «Compressed Sparse Row» (CSR).

.. versionadded:: 1.2
`sparse` переименован в `sparse_output`
False
handle_unknown handle_unknown: {'error', 'ignore', 'infrequent_if_exist', 'warn'}, значение по умолчанию='error'

Определяет способ обработки неизвестных категорий во время :meth:`transform`.

- 'error' : Вызывает ошибку, если во время преобразования обнаружена неизвестная категория.
- 'ignore' : Если во время преобразования обнаружена неизвестная категория,
результирующие столбцы с one-hot-кодированием для этого признака
будут содержать только нули. При обратном преобразовании неизвестная категория
будет обозначена как None.
- 'infrequent_if_exist' : Если во время преобразования обнаружена неизвестная категория,
соответствующие результирующие столбцы с one-hot-кодированием для этого признака
будут соответствовать редкой категории, если она существует. Редкая категория
будет отображена в последнюю позицию кодирования. При обратном преобразовании
неизвестная категория будет отображена в категорию, обозначенную как `'infrequent'`, если она существует. Если
категория `'infrequent'` не существует, то :meth:`transform` и
:meth:`inverse_transform` обработают неизвестную категорию так же, как при
`handle_unknown='ignore'`. Редкие категории определяются на основе
`min_frequency` и `max_categories`. Подробнее см. в
:ref:`руководстве пользователя <encoder_infrequent_categories>`.
- 'warn' : Если во время преобразования обнаружена неизвестная категория,
выдается предупреждение, после чего кодирование выполняется так, как описано для
`handle_unknown="infrequent_if_exist"`.

.. versionchanged:: 1.1
Параметр `'infrequent_if_exist'` добавлен для автоматической обработки неизвестных
и редких категорий.

.. versionadded:: 1.6
Параметр `"warn"` добавлен в версии 1.6.
'ignore'
categories categories: 'auto' или список массивоподобных объектов, значение по умолчанию='auto'

Категории (уникальные значения) для каждого признака:

- 'auto' : Автоматически определять категории по обучающим данным.
- list : ``categories[i]`` содержит категории, ожидаемые в i-м
столбце. Переданный список категорий не должен содержать одновременно строковые и числовые
значения для одного признака; числовые значения должны быть
отсортированы.

Используемые категории доступны в атрибуте ``categories_``.

.. versionadded:: 0.20
'auto'
drop drop: {'first', 'if_binary'} или массивоподобный объект формы (n_features,), значение по умолчанию=None

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

Однако удаление одной категории нарушает симметрию исходного
представления и поэтому может вносить смещение в последующие модели,
например в модели линейной классификации или регрессии с регуляризацией.

- None : сохранять все признаки (по умолчанию).
- 'first' : удалять первую категорию для каждого признака. Если присутствует только одна
категория, признак будет удален целиком.
- 'if_binary' : удалять первую категорию для каждого признака с двумя
категориями. Признаки с 1 или более чем 2 категориями
остаются без изменений.
- array : ``drop[i]`` — категория признака ``X[:, i]``, которую
следует удалить.

Если для группировки редких категорий задан параметр `max_categories` или `min_frequency`,
удаление выполняется после группировки.

.. versionadded:: 0.21
Параметр `drop` добавлен в версии 0.21.

.. versionchanged:: 0.23
Параметр `drop='if_binary'` добавлен в версии 0.23.

.. versionchanged:: 1.1
Добавлена поддержка удаления редких категорий.
None
dtype dtype: числовой тип, значение по умолчанию=np.float64

Требуемый тип данных выходных значений.
<class 'numpy.float64'>
min_frequency min_frequency: int или float, значение по умолчанию=None

Задает минимальную частоту, ниже которой категория считается
редкой.

- Если задано значение типа `int`, редкими считаются категории с меньшей
численностью.

- Если задано значение типа `float`, редкими считаются категории с численностью меньше
`min_frequency * n_samples`.

.. versionadded:: 1.1
Подробнее см. в :ref:`руководстве пользователя <encoder_infrequent_categories>`.
None
max_categories max_categories: int, значение по умолчанию=None

Задает верхний предел числа выходных признаков для каждого входного
признака с учетом редких категорий. Если редкие категории имеются,
`max_categories` включает категорию, представляющую редкие категории,
наряду с частыми категориями. Если задано значение `None`,
число выходных признаков не ограничено.

.. versionadded:: 1.1
Подробнее см. в :ref:`руководстве пользователя <encoder_infrequent_categories>`.
None
feature_name_combiner feature_name_combiner: "concat" или вызываемый объект, значение по умолчанию="concat"

Вызываемый объект с сигнатурой `def callable(input_feature, category)`, возвращающий
строку. Используется для создания имен признаков, возвращаемых методом
:meth:`get_feature_names_out`.

`"concat"` объединяет имя закодированного признака и категорию с помощью
`feature + "_" + str(category)`. Например, для признака X со значениями 1, 6, 7 создаются
имена признаков `X_1, X_6, X_7`.

.. versionadded:: 1.3
'concat'
Обученные атрибуты
Имя Тип Значение
categories_ categories_: список массивов

Категории для каждого признака, определенные во время обучения
(в порядке признаков в X и соответствующие выходным данным
``transform``). Включает категорию, указанную в ``drop``
(если она задана).
list [array(['fall'... dtype=object), array(['False... dtype=object), array(['False... dtype=object), array(['clear... dtype=object)]
drop_idx_ drop_idx_: массив формы (n_features,)

- ``drop_idx_[i]`` — индекс категории в ``categories_[i]``,
которую следует удалить для каждого признака.
- ``drop_idx_[i] = None``, если для признака с индексом ``i``
не нужно удалять категорию, например когда задано `drop='if_binary'`, а
признак не является бинарным.
- ``drop_idx_ = None``, если сохраняются все преобразованные признаки.

Если редкие категории включены заданием для `min_frequency` или
`max_categories` значения, отличного от значения по умолчанию, и `drop_idx[i]` соответствует
редкой категории, удаляется вся редкая категория.

.. versionchanged:: 0.23
Добавлена возможность содержать значения `None`.
NoneType None
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](4,) ['season','holiday','workingday','weather']
n_features_in_ n_features_in_: int

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

.. versionadded:: 1.0
int 4
11 признаков
season_fall
season_spring
season_summer
season_winter
holiday_False
holiday_True
workingday_False
workingday_True
weather_clear
weather_misty
weather_rain
['month']
Параметры
n_knots n_knots: int, значение по умолчанию=5

Количество узлов сплайнов, если `knots` принимает одно из значений
{'uniform', 'quantile'}. Должно быть не меньше 2. Игнорируется, если `knots`
— массивоподобный объект.
7
knots knots: {'uniform', 'quantile'} или массивоподобный объект формы (n_knots, n_features), значение по умолчанию='uniform'

Задает положения узлов так, чтобы первый узел <= признаки <= последний узел.

- Если задано 'uniform', `n_knots` узлов равномерно распределяются
от минимальных до максимальных значений признаков.
- Если задано 'quantile', узлы равномерно распределяются по квантилям
признаков.
- Если задан массивоподобный объект, он непосредственно задает отсортированные положения узлов,
включая граничные узлы. Обратите внимание: внутри алгоритма перед первым узлом добавляется
`degree` узлов, и столько же добавляется
после последнего узла.
array([[ 0.],... [12.]])
extrapolation extrapolation: {'error', 'constant', 'linear', 'continue', 'periodic'}, значение по умолчанию='constant'

Если задано 'error', значения за пределами диапазона минимальных и максимальных значений обучающих
признаков вызывают `ValueError`. Если задано 'constant', для постоянной экстраполяции используется
значение сплайнов в минимальной и максимальной точках признаков. Если задано 'linear', используется линейная экстраполяция.
Если задано 'continue', сплайны экстраполируются без изменений, то есть используется параметр
`extrapolate=True` в :class:`scipy.interpolate.BSpline`. Если
задано 'periodic', используются периодические сплайны с периодом, равным расстоянию
между первым и последним узлами. Периодические сплайны обеспечивают одинаковые значения функции и производные
в первом и последнем узлах.
Например, это позволяет избежать произвольного
скачка между 31 декабря и 1 января в признаках сплайна, полученных из
естественно периодического входного признака «день года». В этом случае
рекомендуется вручную задавать значения узлов, чтобы контролировать период.
'periodic'
degree degree: int, значение по умолчанию=3

Степень полинома базиса сплайна. Должна быть неотрицательным
целым числом.
3
include_bias include_bias: bool, значение по умолчанию=True

Если задано False, последний элемент сплайна в диапазоне данных
признака удаляется. Поскольку B-сплайны в сумме дают единицу для функций
базиса сплайна в каждой точке данных, они неявно включают член смещения,
то есть столбец из единиц. В линейных моделях он действует как свободный член.
True
order order: {'C', 'F'}, значение по умолчанию='C'

Порядок выходного массива в плотном представлении. Порядок `'F'` ускоряет вычисления, но
может замедлить работу последующих оценщиков.
'C'
handle_missing handle_missing: {'error', 'zeros'}, значение по умолчанию='error'

Задает способ обработки пропущенных значений.

- 'error' : Вызывает ошибку, если во время :meth:`fit` присутствуют значения `np.nan`.
- 'zeros' : Кодирует сплайны для пропущенных значений значениями `0`.

Обратите внимание: `handle_missing='zeros'` отличается от предварительного заполнения пропущенных значений
нулями с последующим созданием базиса сплайна. В последнем случае создаются функции
базиса сплайна с ненулевыми значениями для пропусков,
тогда как этот параметр просто задает нулевые значения всех функций базиса сплайна
для пропущенных значений.

.. versionadded:: 1.8
'error'
sparse_output sparse_output: bool, значение по умолчанию=False

Если задано True, возвращает разреженную матрицу CSR, иначе возвращает массив.

.. versionadded:: 1.2
False
Обученные атрибуты
Имя Тип Значение
bsplines_ bsplines_: список формы (n_features,)

Список объектов BSplines, по одному для каждого признака.
list [<scipy.interp...x7841169e78d0>]
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](1,) ['month']
n_features_in_ n_features_in_: int

Общее число входных признаков.
int 1
n_features_out_ n_features_out_: int

Общее число выходных признаков, вычисляемое как
`n_features * n_splines`, где `n_splines` —
число базисных элементов B-сплайнов:
`n_knots + degree - 1` для непериодических сплайнов и
`n_knots - 1` для периодических.
Если `include_bias=False`, то число равно
`n_features * (n_splines - 1)`.
int 6
6 признаков
month_sp_0
month_sp_1
month_sp_2
month_sp_3
month_sp_4
month_sp_5
['weekday']
Параметры
n_knots n_knots: int, default=5

Количество узлов сплайнов, если `knots` равно одному из значений
{'uniform', 'quantile'}. Должно быть не меньше 2. Игнорируется, если `knots`
задано в виде массива.
4
knots knots: {'uniform', 'quantile'} или массивоподобный объект формы (n_knots, n_features), default='uniform'

Задаёт положения узлов так, чтобы первый узел <= признаки <= последний узел.

- Если задано 'uniform', `n_knots` узлов равномерно распределяются
от минимальных до максимальных значений признаков.
- Если задано 'quantile', узлы равномерно распределяются по квантилям
признаков.
- Если задан массивоподобный объект, он напрямую задаёт отсортированные положения узлов,
включая граничные узлы. Обратите внимание: внутри алгоритма перед первым узлом добавляется
`degree` узлов, и столько же —
после последнего узла.
array([[0. ...[7. ]])
extrapolation extrapolation: {'error', 'constant', 'linear', 'continue', 'periodic'}, default='constant'

Если задано 'error', значения за пределами минимальных и максимальных значений обучающих
признаков приводят к возникновению `ValueError`. Если задано 'constant', значение
сплайнов при минимальном и максимальном значениях признаков используется
для постоянной экстраполяции. Если задано 'linear', используется линейная экстраполяция.
Если задано 'continue', сплайны экстраполируются как есть, то есть используется параметр
`extrapolate=True` в :class:`scipy.interpolate.BSpline`. Если задано
'periodic', используются периодические сплайны с периодом, равным расстоянию
между первым и последним узлами. Периодические сплайны обеспечивают
равенство значений функции и её производных в первом и последнем узлах.
Например, это позволяет избежать произвольного
скачка между 31 декабря и 1 января в признаках сплайна, полученных из
естественным образом периодического входного признака «день года». В этом случае
рекомендуется вручную задать значения узлов, чтобы контролировать период.
'periodic'
degree degree: int, default=3

Степень полинома базиса сплайна. Должна быть неотрицательным
целым числом.
3
include_bias include_bias: bool, default=True

Если задано False, последний элемент сплайна в диапазоне данных
признака отбрасывается. Поскольку B-сплайны в сумме дают единицу по базисным функциям
сплайна для каждой точки данных, они неявно включают смещение,
то есть столбец единиц. В линейных моделях он выступает в роли свободного члена.
True
order order: {'C', 'F'}, default='C'

Порядок выходного массива в плотном представлении. Порядок `'F'` вычисляется быстрее, но
может замедлить работу последующих оценивателей.
'C'
handle_missing handle_missing: {'error', 'zeros'}, default='error'

Определяет способ обработки пропущенных значений.

- 'error' : Вызывает ошибку, если при выполнении :meth:`fit` присутствуют значения `np.nan`.
- 'zeros' : Кодирует сплайны пропущенных значений значениями `0`.

Обратите внимание: `handle_missing='zeros'` отличается от предварительной замены пропущенных значений
нулями с последующим созданием базиса сплайнов. Во втором случае создаются базисные функции сплайнов,
значения которых в пропущенных позициях ненулевые,
тогда как этот параметр просто задаёт нулевые значения всех базисных функций сплайнов
для пропущенных значений.

.. versionadded:: 1.8
'error'
sparse_output sparse_output: bool, default=False

Если задано True, возвращает разреженную матрицу CSR, иначе возвращает массив.

.. versionadded:: 1.2
False
Обученные атрибуты
Имя Тип Значение
bsplines_ bsplines_: список формы (n_features,)

Список объектов BSplines, по одному для каждого признака.
list [<scipy.interp...x7841169e51d0>]
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](1,) ['weekday']
n_features_in_ n_features_in_: int

Общее количество входных признаков.
int 1
n_features_out_ n_features_out_: int

Общее количество выходных признаков, вычисляемое как
`n_features * n_splines`, где `n_splines` —
количество базисных элементов B-сплайнов:
`n_knots + degree - 1` для непериодических сплайнов и
`n_knots - 1` для периодических.
Если `include_bias=False`, то количество равно
`n_features * (n_splines - 1)`.
int 3
3 признака
weekday_sp_0
weekday_sp_1
weekday_sp_2
['hour']
Параметры
n_knots n_knots: int, default=5

Количество узлов сплайнов, если `knots` равно одному из значений
{'uniform', 'quantile'}. Должно быть не меньше 2. Игнорируется, если `knots`
задано в виде массива.
13
knots knots: {'uniform', 'quantile'} или массивоподобный объект формы (n_knots, n_features), default='uniform'

Задаёт положения узлов так, чтобы первый узел <= признаки <= последний узел.

- Если задано 'uniform', `n_knots` узлов равномерно распределяются
от минимальных до максимальных значений признаков.
- Если задано 'quantile', узлы равномерно распределяются по квантилям
признаков.
- Если задан массивоподобный объект, он напрямую задаёт отсортированные положения узлов,
включая граничные узлы. Обратите внимание: внутри алгоритма перед первым узлом добавляется
`degree` узлов, и столько же —
после последнего узла.
array([[ 0.],... [24.]])
extrapolation extrapolation: {'error', 'constant', 'linear', 'continue', 'periodic'}, default='constant'

Если задано 'error', значения за пределами минимальных и максимальных значений обучающих
признаков приводят к возникновению `ValueError`. Если задано 'constant', значение
сплайнов при минимальном и максимальном значениях признаков используется
для постоянной экстраполяции. Если задано 'linear', используется линейная экстраполяция.
Если задано 'continue', сплайны экстраполируются как есть, то есть используется параметр
`extrapolate=True` в :class:`scipy.interpolate.BSpline`. Если задано
'periodic', используются периодические сплайны с периодом, равным расстоянию
между первым и последним узлами. Периодические сплайны обеспечивают
равенство значений функции и её производных в первом и последнем узлах.
Например, это позволяет избежать произвольного
скачка между 31 декабря и 1 января в признаках сплайна, полученных из
естественным образом периодического входного признака «день года». В этом случае
рекомендуется вручную задать значения узлов, чтобы контролировать период.
'periodic'
degree degree: int, default=3

Степень полинома базиса сплайна. Должна быть неотрицательным
целым числом.
3
include_bias include_bias: bool, default=True

Если задано False, последний элемент сплайна в диапазоне данных
признака отбрасывается. Поскольку B-сплайны в сумме дают единицу по базисным функциям
сплайна для каждой точки данных, они неявно включают смещение,
то есть столбец единиц. В линейных моделях он выступает в роли свободного члена.
True
order order: {'C', 'F'}, default='C'

Порядок выходного массива в плотном представлении. Порядок `'F'` вычисляется быстрее, но
может замедлить работу последующих оценивателей.
'C'
handle_missing handle_missing: {'error', 'zeros'}, default='error'

Определяет способ обработки пропущенных значений.

- 'error' : Вызывает ошибку, если при выполнении :meth:`fit` присутствуют значения `np.nan`.
- 'zeros' : Кодирует сплайны пропущенных значений значениями `0`.

Обратите внимание: `handle_missing='zeros'` отличается от предварительной замены пропущенных значений
нулями с последующим созданием базиса сплайнов. Во втором случае создаются базисные функции сплайнов,
значения которых в пропущенных позициях ненулевые,
тогда как этот параметр просто задаёт нулевые значения всех базисных функций сплайнов
для пропущенных значений.

.. versionadded:: 1.8
'error'
sparse_output sparse_output: bool, default=False

Если задано True, возвращает разреженную матрицу CSR, иначе возвращает массив.

.. versionadded:: 1.2
False
Обученные атрибуты
Имя Тип Значение
bsplines_ bsplines_: список формы (n_features,)

Список объектов BSplines, по одному для каждого признака.
list [<scipy.interp...x784129135150>]
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](1,) ['hour']
n_features_in_ n_features_in_: int

Общее количество входных признаков.
int 1
n_features_out_ n_features_out_: int

Общее количество выходных признаков, вычисляемое как
`n_features * n_splines`, где `n_splines` —
количество базисных элементов B-сплайнов:
`n_knots + degree - 1` для непериодических сплайнов и
`n_knots - 1` для периодических.
Если `include_bias=False`, то количество равно
`n_features * (n_splines - 1)`.
int 12
12 признаков
hour_sp_0
hour_sp_1
hour_sp_2
hour_sp_3
hour_sp_4
hour_sp_5
hour_sp_6
hour_sp_7
hour_sp_8
hour_sp_9
hour_sp_10
hour_sp_11
['year', 'temp', 'feel_temp', 'humidity', 'windspeed']
Параметры
feature_range feature_range: tuple (min, max), default=(0, 1)

Желаемый диапазон преобразованных данных.
(0, ...)
copy copy: bool, default=True

Задайте False, чтобы выполнить нормализацию строк на месте и избежать
копирования (если входные данные уже являются массивом numpy).
True
clip clip: bool, default=False

Задайте True, чтобы ограничить преобразованные значения отложенных данных
заданным `feature_range`.
Поскольку этот параметр ограничивает значения, `inverse_transform` может оказаться
не в состоянии восстановить исходные данные.

.. note::
Задание `clip=True` не предотвращает дрейф признаков (сдвиг распределения
между обучающими и тестовыми данными). Преобразованные значения ограничиваются
диапазоном `feature_range`, что помогает избежать нежелательного поведения моделей,
чувствительных к выходящим за диапазон входным данным (например, линейных моделей). Используйте осторожно,
поскольку ограничение может исказить распределение тестовых данных.

.. versionadded:: 0.24
False
Обученные атрибуты
Имя Тип Значение
data_max_ data_max_: ndarray формы (n_features,)

Максимальное значение, наблюдавшееся в данных для каждого признака.

.. versionadded:: 0.17
*атрибут data_max_*
ndarray[float64](5,) [ 1. ,39.36,50. , 1. ,57. ]
data_min_ data_min_: ndarray формы (n_features,)

Минимальное значение, наблюдавшееся в данных для каждого признака.

.. versionadded:: 0.17
*атрибут data_min_*
ndarray[float64](5,) [0. ,0.82,0.76,0.16,0. ]
data_range_ data_range_: ndarray формы (n_features,)

Диапазон ``(data_max_ - data_min_)`` для каждого признака, наблюдавшийся в данных.

.. versionadded:: 0.17
*атрибут data_range_*
ndarray[float64](5,) [ 1. ,38.54,49.24, 0.84,57. ]
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](5,) ['year','temp','feel_temp','humidity','windspeed']
min_ min_: ndarray формы (n_features,)

Корректировка минимума для каждого признака. Эквивалентно
``min - X.min(axis=0) * self.scale_``
ndarray[float64](5,) [ 0. ,-0.02,-0.02,-0.19, 0. ]
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 5
n_samples_seen_ n_samples_seen_: int

Количество образцов, обработанных оценивателем.
Сбрасывается при новых вызовах fit, но увеличивается при каждом вызове
``partial_fit``.
int 10000
scale_ scale_: ndarray формы (n_features,)

Относительный масштаб данных для каждого признака. Эквивалентно
``(max - min) / (X.max(axis=0) - X.min(axis=0))``

.. versionadded:: 0.17
атрибут *scale_*
ndarray[float64](5,) [1. ,0.03,0.02,1.19,0.02]
5 признаков
year
temp
feel_temp
humidity
windspeed
37 признаков
season_fall
season_spring
season_summer
season_winter
holiday_False
holiday_True
workingday_False
workingday_True
weather_clear
weather_misty
weather_rain
month_sp_0
month_sp_1
month_sp_2
month_sp_3
month_sp_4
month_sp_5
weekday_sp_0
weekday_sp_1
weekday_sp_2
hour_sp_0
hour_sp_1
hour_sp_2
hour_sp_3
hour_sp_4
hour_sp_5
hour_sp_6
hour_sp_7
hour_sp_8
hour_sp_9
hour_sp_10
hour_sp_11
year
temp
feel_temp
humidity
windspeed
Параметры
alphas alphas: массивоподобный объект формы (n_alphas,), по умолчанию=(0.1, 1.0, 10.0)

Массив значений alpha для проверки.
Сила регуляризации; должна быть положительным числом с плавающей точкой. Регуляризация
улучшает обусловленность задачи и уменьшает дисперсию
оценок. Большие значения означают более сильную регуляризацию.
Alpha соответствует ``1 / (2C)`` в других линейных моделях, таких как
:class:`~sklearn.linear_model.LogisticRegression` или
:class:`~sklearn.svm.LinearSVC`.
При использовании перекрёстной проверки Leave-One-Out значения alpha должны быть строго положительными.

Пример влияния силы регуляризации на коэффициенты модели см. в разделе
:ref:`sphx_glr_auto_examples_linear_model_plot_ridge_coeffs.py`.
array([1.0000...00000000e+06])
fit_intercept fit_intercept: bool, по умолчанию=True

Определяет, нужно ли вычислять свободный член для этой модели. Если задано
значение false, при вычислениях свободный член использоваться не будет
(то есть предполагается, что данные центрированы).
True
scoring scoring: str, вызываемый объект, по умолчанию=None

Метод оценки для перекрёстной проверки. Возможные варианты:

- str: см. доступные варианты в :ref:`scoring_string_names`.
- вызываемый объект: вызываемый объект для оценки (например, функция) с сигнатурой
``scorer(estimator, X, y)``. Подробнее см. :ref:`scoring_callable`.
- `None`: отрицательная :ref:`среднеквадратичная ошибка <mean_squared_error>`, если cv равно
None (то есть при использовании перекрёстной проверки leave-one-out), или
:ref:`коэффициент детерминации <r2_score>` (:math:`R^2`) в остальных случаях.
None
cv cv: int, генератор перекрёстной проверки или итерируемый объект, по умолчанию=None

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

- None — использовать эффективную перекрёстную проверку Leave-One-Out
- целое число — задать число фолдов,
- :term:`разделитель CV`,
- итерируемый объект, возвращающий разбиения (train, test) в виде массивов индексов.

Для целочисленных значений и None, если ``y`` является бинарным или многоклассовым,
используется :class:`~sklearn.model_selection.StratifiedKFold`, в противном случае —
:class:`~sklearn.model_selection.KFold`.

Различные стратегии перекрёстной проверки, которые можно использовать здесь,
описаны в :ref:`руководстве пользователя <cross_validation>`.
None
gcv_mode gcv_mode: {'auto', 'svd', 'eigen'}, по умолчанию='auto'

Флаг, указывающий, какую стратегию использовать при выполнении
перекрёстной проверки Leave-One-Out. Возможные варианты::

'auto' : то же, что и 'eigen'
'svd' : использовать сингулярное разложение матрицы X, если X — плотная матрица,
при разреженной X переключиться на 'eigen'
'eigen' : использовать разложение по собственным значениям X X', если n_samples <= n_features,
или X' X, если n_features < n_samples

Режим 'auto' используется по умолчанию; он выбирает менее затратный
вариант в зависимости от формы и разреженности обучающих данных.
None
store_cv_results store_cv_results: bool, по умолчанию=False

Флаг, указывающий, следует ли сохранять значения перекрёстной проверки для
каждого alpha в атрибуте ``cv_results_`` (см.
ниже). Этот флаг совместим только с ``cv=None`` (то есть при использовании
перекрёстной проверки Leave-One-Out).

.. versionchanged:: 1.5
Имя параметра изменено с `store_cv_values` на `store_cv_results`.
False
alpha_per_target alpha_per_target: bool, по умолчанию=False

Флаг, указывающий, следует ли оптимизировать значение alpha (выбираемое из списка параметров
`alphas`) отдельно для каждой целевой переменной (в задачах с несколькими выходами:
несколькими целевыми переменными для предсказания). Если задано значение `True`, после
обучения атрибут `alpha_` будет содержать значение для каждой целевой переменной.
Если задано значение `False`, для всех целевых переменных используется одно значение alpha.
Этот флаг совместим только с ``cv=None`` (то есть при использовании
перекрёстной проверки Leave-One-Out).

.. versionadded:: 0.24
False
Обученные атрибуты
Имя Тип Значение
alpha_ alpha_: float или ndarray формы (n_targets,)

Оценённый параметр регуляризации или, если ``alpha_per_target=True``,
оценённый параметр регуляризации для каждой целевой переменной.
float 1
best_score_ best_score_: float или ndarray формы (n_targets,)

Оценка базового оценивателя с наилучшим значением alpha или, если
``alpha_per_target=True``, оценка для каждой целевой переменной.

.. versionadded:: 0.23
float64 -0.008547
coef_ coef_: ndarray формы (n_features) или (n_targets, n_features)

Вектор(ы) весов.
ndarray[float64](37,) [ 0. ,-0.03, 0.01,..., 0.15,-0.06,-0.04]
intercept_ intercept_: float или ndarray формы (n_targets,)

Свободный член функции принятия решения. Равен 0.0, если
``fit_intercept = False``.
float64 0.03652
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 37


Сплайновые признаки позволяют линейной модели эффективно использовать периодические признаки, связанные со временем, и уменьшить ошибку примерно с 14% до 10% от максимального спроса. Это сопоставимо с результатом, который мы получили для признаков, закодированных методом one-hot.

Качественный анализ влияния признаков на предсказания линейной модели

Здесь мы хотим визуализировать влияние выбранных способов конструирования признаков на форму предсказаний, зависящую от времени.

Для этого мы используем произвольное разбиение данных по времени, чтобы сравнить предсказания для некоторого набора отложенных точек данных.

naive_linear_pipeline.fit(X.iloc[train_0], y.iloc[train_0])
naive_linear_predictions = naive_linear_pipeline.predict(X.iloc[test_0])

one_hot_linear_pipeline.fit(X.iloc[train_0], y.iloc[train_0])
one_hot_linear_predictions = one_hot_linear_pipeline.predict(X.iloc[test_0])

cyclic_cossin_linear_pipeline.fit(X.iloc[train_0], y.iloc[train_0])
cyclic_cossin_linear_predictions = cyclic_cossin_linear_pipeline.predict(X.iloc[test_0])

cyclic_spline_linear_pipeline.fit(X.iloc[train_0], y.iloc[train_0])
cyclic_spline_linear_predictions = cyclic_spline_linear_pipeline.predict(X.iloc[test_0])

Чтобы получить качественное представление о результатах, рассмотрим предсказания за последние 96 часов (4 дня) тестовой выборки:

last_hours = slice(-96, None)
fig, ax = plt.subplots(figsize=(12, 4))
fig.suptitle("Predictions by linear models")
ax.plot(
    y.iloc[test_0].values[last_hours],
    "x-",
    alpha=0.2,
    label="Actual demand",
    color="black",
)
ax.plot(naive_linear_predictions[last_hours], "x-", label="Ordinal time features")
ax.plot(
    cyclic_cossin_linear_predictions[last_hours],
    "x-",
    label="Trigonometric time features",
)
ax.plot(
    cyclic_spline_linear_predictions[last_hours],
    "x-",
    label="Spline-based time features",
)
ax.plot(
    one_hot_linear_predictions[last_hours],
    "x-",
    label="One-hot time features",
)
_ = ax.legend()
Predictions by linear models

По приведённому выше графику можно сделать следующие выводы:

  • Исходные порядковые признаки, связанные со временем создают проблемы, поскольку не учитывают естественную периодичность: в конце каждого дня мы наблюдаем резкий скачок предсказаний, когда значение признака часа меняется с 23 на 0. Подобные артефакты можно ожидать и в конце каждой недели или каждого года.
  • Как и ожидалось, тригонометрические признаки (синус и косинус) не создают разрывов в полночь, однако модели линейной регрессии не удаётся эффективно использовать эти признаки для правильного моделирования внутридневных изменений. Эту проблему можно потенциально решить, используя тригонометрические признаки для высших гармоник или дополнительные тригонометрические признаки для естественного периода с разными фазами.
  • Признаки на основе периодических сплайнов одновременно решают обе эти проблемы: они повышают выразительность линейной модели, позволяя ей сосредоточиться на определённых часах благодаря использованию 12 сплайнов. Кроме того, параметр extrapolation="periodic" обеспечивает плавное представление между hour=23 и hour=0.
  • Признаки, закодированные методом one-hot, ведут себя подобно признакам на основе периодических сплайнов, но дают более резкие изменения: например, они лучше моделируют утренний пик в будние дни, поскольку этот пик длится меньше часа. Однако далее мы увидим, что то, что может быть преимуществом для линейных моделей, не обязательно является таковым для более выразительных моделей.

Также можно сравнить количество признаков, полученных в результате каждого конвейера конструирования признаков:

naive_linear_pipeline[:-1].transform(X).shape
(17379, 19)
one_hot_linear_pipeline[:-1].transform(X).shape
(17379, 59)
cyclic_cossin_linear_pipeline[:-1].transform(X).shape
(17379, 22)
cyclic_spline_linear_pipeline[:-1].transform(X).shape
(17379, 37)

Это подтверждает, что стратегии кодирования one-hot и сплайнами создают для временного представления гораздо больше признаков, чем альтернативные подходы. Благодаря этому последующая линейная модель получает больше гибкости (степеней свободы) и может избегать недообучения.

Наконец, мы видим, что ни одна из линейных моделей не может аппроксимировать фактический спрос на аренду велосипедов, особенно в периоды пиков, которые могут быть очень резкими в часы пик в рабочие дни, но гораздо более сглаженными в выходные: наиболее точные линейные модели на основе сплайнов или кодирования one-hot склонны прогнозировать пики поездок на работу на велосипеде даже в выходные и недооценивать связанные с поездками на работу события в будние дни.

Эти систематические ошибки предсказания указывают на недообучение и могут объясняться отсутствием взаимодействий между признаками, например между «workingday» и признаками, производными от «hours». Эта проблема будет рассмотрена в следующем разделе.

Моделирование парных взаимодействий с помощью сплайнов и полиномиальных признаков

Линейные модели автоматически не учитывают эффекты взаимодействия между входными признаками. Не помогает и то, что некоторые признаки нелинейны по отдельности, как в случае признаков, построенных с помощью SplineTransformer (или кодирования one-hot, или разбиения на интервалы).

Однако можно использовать класс PolynomialFeatures для часов, закодированных сплайнами с крупным шагом, чтобы явно моделировать взаимодействие «workingday»/»hours», не вводя слишком много новых переменных:

from sklearn.pipeline import FeatureUnion
from sklearn.preprocessing import PolynomialFeatures

hour_workday_interaction = make_pipeline(
    ColumnTransformer(
        [
            ("cyclic_hour", periodic_spline_transformer(24, n_splines=8), ["hour"]),
            (
                "workingday",
                FunctionTransformer(
                    lambda x: x == "True", feature_names_out="one-to-one"
                ),
                ["workingday"],
            ),
        ],
        verbose_feature_names_out=False,
    ),
    PolynomialFeatures(degree=2, interaction_only=True, include_bias=False),
)

Затем эти признаки объединяются с признаками, уже вычисленными в предыдущем конвейере на основе сплайнов. Явное моделирование этого парного взаимодействия позволяет добиться заметного улучшения качества:

cyclic_spline_interactions_pipeline = make_pipeline(
    FeatureUnion(
        [
            ("marginal", cyclic_spline_transformer),
            ("interactions", hour_workday_interaction),
        ],
        verbose_feature_names_out=True,
    ).set_output(transform="pandas"),
    RidgeCV(alphas=alphas),
)
evaluate(cyclic_spline_interactions_pipeline, X, y, cv=ts_cv)
Mean Absolute Error:     0.078 +/- 0.009
Root Mean Squared Error: 0.104 +/- 0.009
Pipeline(steps=[('featureunion',
                 FeatureUnion(transformer_list=[('marginal',
                                                 ColumnTransformer(remainder=MinMaxScaler(),
                                                                   transformers=[('categorical',
                                                                                  OneHotEncoder(handle_unknown='ignore',
                                                                                                sparse_output=False),
                                                                                  Index(['season', 'holiday', 'workingday', 'weather'], dtype='str')),
                                                                                 ('cyclic_month',
                                                                                  SplineTransformer(extrapolation='periodic',
                                                                                                    knots=array([[ 0.],
       [ 2....
                 RidgeCV(alphas=array([1.00000000e-06, 3.16227766e-06, 1.00000000e-05, 3.16227766e-05,
       1.00000000e-04, 3.16227766e-04, 1.00000000e-03, 3.16227766e-03,
       1.00000000e-02, 3.16227766e-02, 1.00000000e-01, 3.16227766e-01,
       1.00000000e+00, 3.16227766e+00, 1.00000000e+01, 3.16227766e+01,
       1.00000000e+02, 3.16227766e+02, 1.00000000e+03, 3.16227766e+03,
       1.00000000e+04, 3.16227766e+04, 1.00000000e+05, 3.16227766e+05,
       1.00000000e+06])))])
В среде Jupyter повторно выполните эту ячейку, чтобы отобразить HTML-представление, или доверьте блокноту.
На GitHub HTML-представление не отображается; попробуйте открыть эту страницу с помощью nbviewer.org.
Параметры
steps steps: список кортежей

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

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

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

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

.. versionadded:: 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
Обученные атрибуты
Имя Тип Значение
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](12,) ['season','year','month',...,'feel_temp','humidity','windspeed']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 12
Параметры
transformer_list transformer_list: список кортежей (str, transformer)

Список объектов-преобразователей, применяемых к данным. Первая
часть каждого кортежа — имя преобразователя. В качестве преобразователя можно
указать 'drop', чтобы исключить его, или 'passthrough', чтобы
передать признаки без изменений.

.. versionadded:: 1.1
Добавлен параметр `"passthrough"`.

.. versionchanged:: 0.22
`None` больше не используется в качестве преобразователя; вместо него следует использовать 'drop'.
[('marginal', ...), ('interactions', ...)]
n_jobs n_jobs: int, по умолчанию=None

Количество задач, выполняемых параллельно.
``None`` означает 1, если только не используется контекст :obj:`joblib.parallel_backend`.
``-1`` означает использование всех процессоров. Подробнее см. :term:`Глоссарий <n_jobs>`.

.. versionchanged:: v0.20
Значение `n_jobs` по умолчанию изменено с 1 на None
None
transformer_weights transformer_weights: dict, по умолчанию=None

Мультипликативные веса признаков для каждого преобразователя.
Ключи — имена преобразователей, значения — веса.
Вызывает ValueError, если ключ отсутствует в ``transformer_list``.
None
verbose verbose: bool, по умолчанию=False

Если True, по завершении обучения каждого преобразователя будет
выводиться затраченное время.
False
verbose_feature_names_out verbose_feature_names_out: bool, по умолчанию=True

Если True, :meth:`get_feature_names_out` добавляет к именам всех признаков
имя преобразователя, создавшего соответствующий признак.
Если False, :meth:`get_feature_names_out` не добавляет префиксы к именам
признаков и выдаёт ошибку, если имена признаков не уникальны.

.. versionadded:: 1.5
True
Атрибуты, полученные при обучении
Имя Тип Значение
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.3
ndarray[object](12,) ['season','year','month',...,'feel_temp','humidity','windspeed']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 12
Index(['season', 'holiday', 'workingday', 'weather'], dtype='str')
Параметры
sparse_output sparse_output: bool, по умолчанию=True

Если ``True``, возвращается разреженная матрица/массив SciPy
в формате "Compressed Sparse Row" (CSR).

.. versionadded:: 1.2
`sparse` переименован в `sparse_output`
False
handle_unknown handle_unknown: {'error', 'ignore', 'infrequent_if_exist', 'warn'}, по умолчанию='error'

Задаёт способ обработки неизвестных категорий во время :meth:`transform`.

- 'error' : Вызывает ошибку, если во время преобразования обнаружена неизвестная категория.
- 'ignore' : Если во время преобразования обнаружена неизвестная категория,
все результирующие столбцы one-hot-кодирования для этого признака
будут содержать нули. При обратном преобразовании неизвестная категория
обозначается как None.
- 'infrequent_if_exist' : Если во время преобразования обнаружена неизвестная категория,
результирующие столбцы one-hot-кодирования для этого признака
будут соответствовать категории «редкая», если она существует. Категория «редкая»
будет помещена на последнюю позицию в кодировке. При обратном преобразовании неизвестная категория
будет преобразована в категорию, обозначенную как `'infrequent'`, если она существует. Если категория
`'infrequent'` не существует, методы :meth:`transform` и
:meth:`inverse_transform` будут обрабатывать неизвестную категорию так же,
как при `handle_unknown='ignore'`. Редкие категории определяются на основе
`min_frequency` и `max_categories`. Подробнее см. в
:ref:`Руководстве пользователя <encoder_infrequent_categories>`.
- 'warn' : Если во время преобразования обнаружена неизвестная категория,
выдаётся предупреждение, а затем кодирование выполняется так, как описано для
`handle_unknown="infrequent_if_exist"`.

.. versionchanged:: 1.1
Добавлен параметр `'infrequent_if_exist'` для автоматической обработки неизвестных
и редких категорий.

.. versionadded:: 1.6
В версии 1.6 добавлен параметр `"warn"`.
'ignore'
categories categories: 'auto' или список массивов, по умолчанию='auto'

Категории (уникальные значения) для каждого признака:

- 'auto' : Автоматически определять категории по обучающим данным.
- list : ``categories[i]`` содержит категории, ожидаемые в i-м
столбце. Передаваемые категории одного признака не должны одновременно содержать строки и числовые
значения; числовые значения должны быть отсортированы.

Используемые категории можно найти в атрибуте ``categories_``.

.. versionadded:: 0.20
'auto'
drop drop: {'first', 'if_binary'} или массив формы (n_features,), по умолчанию=None

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

Однако исключение одной категории нарушает симметрию исходного
представления и поэтому может привести к смещению в последующих моделях,
например в моделях линейной классификации или регрессии с регуляризацией.

- None : сохранять все признаки (значение по умолчанию).
- 'first' : исключать первую категорию каждого признака. Если присутствует только одна
категория, признак будет исключён целиком.
- 'if_binary' : исключать первую категорию каждого признака с двумя
категориями. Признаки с 1 или более чем 2 категориями
остаются без изменений.
- array : ``drop[i]`` — категория признака ``X[:, i]``, которую
следует исключить.

Если для группировки редких категорий задан параметр `max_categories` или `min_frequency`,
исключение выполняется после группировки.

.. versionadded:: 0.21
Параметр `drop` добавлен в версии 0.21.

.. versionchanged:: 0.23
Параметр `drop='if_binary'` добавлен в версии 0.23.

.. versionchanged:: 1.1
Добавлена поддержка исключения редких категорий.
None
dtype dtype: числовой тип, по умолчанию=np.float64

Требуемый тип данных результата.
<class 'numpy.float64'>
min_frequency min_frequency: int или float, по умолчанию=None

Задаёт минимальную частоту, ниже которой категория считается
редкой.

- Если задан `int`, редкими считаются категории с меньшей кардинальностью.

- Если задан `float`, редкими считаются категории с кардинальностью меньше
`min_frequency * n_samples`.

.. versionadded:: 1.1
Подробнее см. в :ref:`Руководстве пользователя <encoder_infrequent_categories>`.
None
max_categories max_categories: int, по умолчанию=None

Задаёт верхний предел количества выходных признаков для каждого входного
признака с учётом редких категорий. Если есть редкие
категории, `max_categories` включает категорию, представляющую
редкие категории, наряду с частыми. Если задано `None`,
количество выходных признаков не ограничено.

.. versionadded:: 1.1
Подробнее см. в :ref:`Руководстве пользователя <encoder_infrequent_categories>`.
None
feature_name_combiner feature_name_combiner: "concat" или вызываемый объект, по умолчанию="concat"

Вызываемый объект с сигнатурой `def callable(input_feature, category)`, возвращающий
строку. Он используется для создания имён признаков, возвращаемых методом
:meth:`get_feature_names_out`.

`"concat"` объединяет закодированное имя признака и категорию по формуле
`feature + "_" + str(category)`. Например, для признака X со значениями 1, 6, 7 создаются
имена признаков `X_1, X_6, X_7`.

.. versionadded:: 1.3
'concat'
Атрибуты, полученные при обучении
Имя Тип Значение
categories_ categories_: список массивов

Категории каждого признака, определённые при обучении
(в порядке признаков в X и в соответствии с результатом
``transform``). Сюда входит категория, указанная в ``drop``
(если она задана).
list [array(['fall'... dtype=object), array(['False... dtype=object), array(['False... dtype=object), array(['clear... dtype=object)]
drop_idx_ drop_idx_: массив формы (n_features,)

- ``drop_idx_[i]`` — индекс категории в ``categories_[i]``,
исключаемой для каждого признака.
- ``drop_idx_[i] = None``, если для признака с индексом ``i``
не требуется исключать категорию, например когда задано `drop='if_binary'`, а
признак не является бинарным.
- ``drop_idx_ = None``, если сохраняются все преобразованные признаки.

Если редкие категории включены с помощью параметра `min_frequency` или
`max_categories`, заданного отличным от значения по умолчанию, и `drop_idx[i]` соответствует
редкой категории, то исключается вся редкая категория.

.. versionchanged:: 0.23
Добавлена возможность содержать значения `None`.
NoneType None
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](4,) ['season','holiday','workingday','weather']
n_features_in_ n_features_in_: int

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

.. versionadded:: 1.0
int 4
11 признаков
season_fall
season_spring
season_summer
season_winter
holiday_False
holiday_True
workingday_False
workingday_True
weather_clear
weather_misty
weather_rain
['month']
Параметры
n_knots n_knots: int, по умолчанию=5

Количество узлов сплайнов, если `knots` равно одному из значений
{'uniform', 'quantile'}. Должно быть не меньше 2. Игнорируется, если `knots`
является массивом.
7
knots knots: {'uniform', 'quantile'} или массив формы (n_knots, n_features), по умолчанию='uniform'

Задаёт положения узлов так, чтобы первый узел <= значения признаков <= последний узел.

- Если задано 'uniform', `n_knots` узлов равномерно распределяются
от минимальных до максимальных значений признаков.
- Если задано 'quantile', узлы равномерно распределяются по квантилям
признаков.
- Если задан массив, он непосредственно задаёт отсортированные положения узлов,
включая граничные узлы. Обратите внимание: внутри алгоритма
перед первым узлом добавляется `degree` узлов и столько же
после последнего узла.
array([[ 0.],... [12.]])
extrapolation extrapolation: {'error', 'constant', 'linear', 'continue', 'periodic'}, по умолчанию='constant'

Если задано 'error', значения за пределами минимальных и максимальных значений обучающих
признаков вызывают `ValueError`. Если задано 'constant', значения
сплайнов в точках минимума и максимума признаков используются для
постоянной экстраполяции. Если задано 'linear', используется линейная экстраполяция.
Если задано 'continue', сплайны экстраполируются как есть, то есть используется параметр
`extrapolate=True` в :class:`scipy.interpolate.BSpline`. Если
задано 'periodic', используются периодические сплайны с периодом, равным расстоянию
между первым и последним узлами. Для периодических сплайнов значения функции и её производные
в первом и последнем узлах совпадают.
Например, это позволяет избежать произвольного
скачка между 31 декабря и 1 января в сплайновых признаках, полученных из естественного периодического
входного признака «день года». В этом случае
рекомендуется вручную задать значения узлов, чтобы контролировать период.
'periodic'
degree degree: int, по умолчанию=3

Степень полинома базиса сплайна. Должна быть неотрицательным
целым числом.
3
include_bias include_bias: bool, по умолчанию=True

Если задано False, последний элемент сплайна в диапазоне данных
признака исключается. Поскольку B-сплайны для каждой точки данных в сумме дают единицу по базисным
функциям сплайна, они неявно включают свободный член,
то есть столбец из единиц. В линейных моделях он выполняет роль свободного члена.
True
order order: {'C', 'F'}, по умолчанию='C'

Порядок выходного массива в плотном представлении. Порядок `'F'` ускоряет вычисления, но
может замедлить работу последующих оценивателей.
'C'
handle_missing handle_missing: {'error', 'zeros'}, по умолчанию='error'

Задаёт способ обработки пропущенных значений.

- 'error' : Вызывает ошибку, если во время :meth:`fit` присутствуют значения `np.nan`.
- 'zeros' : Кодирует сплайны для пропущенных значений нулями `0`.

Обратите внимание, что `handle_missing='zeros'` отличается от предварительного заполнения пропущенных значений
нулями с последующим построением базиса сплайнов. Во втором случае создаются базисные функции сплайнов,
значения которых в точках с пропущенными значениями ненулевые,
тогда как этот параметр просто задаёт значения всех базисных функций сплайнов равными нулю в точках с
пропущенными значениями.

.. versionadded:: 1.8
'error'
sparse_output sparse_output: bool, по умолчанию=False

Если задано True, возвращается разреженная матрица CSR, иначе возвращается массив.

.. versionadded:: 1.2
False
Атрибуты, полученные при обучении
Имя Тип Значение
bsplines_ bsplines_: список формы (n_features,)

Список объектов BSplines, по одному для каждого признака.
list [<scipy.interp...x7841640d0150>]
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](1,) ['month']
n_features_in_ n_features_in_: int

Общее количество входных признаков.
int 1
n_features_out_ n_features_out_: int

Общее количество выходных признаков, вычисляемое как
`n_features * n_splines`, где `n_splines` —
количество базисных элементов B-сплайнов:
`n_knots + degree - 1` для непериодических сплайнов и
`n_knots - 1` для периодических.
Если `include_bias=False`, используется значение
`n_features * (n_splines - 1)`.
int 6
6 признаков
month_sp_0
month_sp_1
month_sp_2
month_sp_3
month_sp_4
month_sp_5
['weekday']
Параметры
n_knots n_knots: int, по умолчанию=5

Количество узлов сплайнов, если `knots` равно одному из значений
{'uniform', 'quantile'}. Должно быть больше или равно 2. Игнорируется, если `knots`
представляет собой массив.
4
knots knots: {'uniform', 'quantile'} или массив формы (n_knots, n_features), по умолчанию='uniform'

Задаёт положения узлов так, чтобы первый узел <= признаки <= последний узел.

- Если задано 'uniform', узлы в количестве `n_knots` равномерно распределяются
от минимальных до максимальных значений признаков.
- Если задано 'quantile', они равномерно распределяются по квантилям
признаков.
- Если задан массив, он непосредственно задаёт отсортированные положения узлов,
включая граничные узлы. Обратите внимание: внутри алгоритма перед первым узлом
добавляется `degree` узлов, и столько же —
после последнего узла.
array([[0. ...[7. ]])
extrapolation extrapolation: {'error', 'constant', 'linear', 'continue', 'periodic'}, по умолчанию='constant'

Если задано 'error', значения за пределами минимальных и максимальных значений обучающих
признаков вызывают `ValueError`. Если задано 'constant', значение
сплайна при минимальном и максимальном значениях признаков используется для
постоянной экстраполяции. Если задано 'linear', используется линейная экстраполяция.
Если задано 'continue', экстраполяция сплайнов выполняется без изменений, то есть используется параметр
`extrapolate=True` в :class:`scipy.interpolate.BSpline`. Если задано
'periodic', используются периодические сплайны с периодом, равным расстоянию
между первым и последним узлами. Периодические сплайны обеспечивают
одинаковые значения функции и производных в первом и последнем узлах.
Например, это позволяет избежать произвольного скачка между 31 декабря и 1 января
в признаках-сплайнах, полученных из естественно периодического входного признака «день года». В этом случае
рекомендуется вручную задать значения узлов, чтобы контролировать период.
'periodic'
degree degree: int, по умолчанию=3

Степень полинома базиса сплайна. Должна быть неотрицательным
целым числом.
3
include_bias include_bias: bool, по умолчанию=True

Если False, последний элемент сплайна в пределах диапазона данных
признака отбрасывается. Поскольку B-сплайны в сумме дают единицу по базисным функциям
для каждой точки данных, они неявно включают смещение,
то есть столбец из единиц. В линейных моделях он действует как свободный член.
True
order order: {'C', 'F'}, по умолчанию='C'

Порядок выходного массива в плотном представлении. Порядок `'F'` вычисляется быстрее, но
может замедлить последующие оценщики.
'C'
handle_missing handle_missing: {'error', 'zeros'}, по умолчанию='error'

Задаёт способ обработки пропущенных значений.

- 'error' : Вызывает ошибку, если во время :meth:`fit` присутствуют значения `np.nan`.
- 'zeros' : Кодирует сплайны для пропущенных значений нулями `0`.

Обратите внимание, что `handle_missing='zeros'` отличается от предварительного заполнения пропущенных значений
нулями с последующим созданием базиса сплайнов. Последний вариант создаёт базисные функции сплайнов
с ненулевыми значениями в местах пропущенных значений,
тогда как этот параметр просто задаёт нулевые значения всех базисных функций сплайнов в местах
пропущенных значений.

.. добавлено в версии:: 1.8
'error'
sparse_output sparse_output: bool, по умолчанию=False

Если задано True, возвращает разреженную матрицу CSR, иначе возвращает массив.

.. добавлено в версии:: 1.2
False
Обученные атрибуты
Имя Тип Значение
bsplines_ bsplines_: список формы (n_features,)

Список объектов BSplines, по одному для каждого признака.
list [<scipy.interp...x7841640d0d50>]
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. добавлено в версии:: 1.0
ndarray[object](1,) ['weekday']
n_features_in_ n_features_in_: int

Общее количество входных признаков.
int 1
n_features_out_ n_features_out_: int

Общее количество выходных признаков, вычисляемое как
`n_features * n_splines`, где `n_splines` —
количество базисных элементов B-сплайнов:
`n_knots + degree - 1` для непериодических сплайнов и
`n_knots - 1` для периодических.
Если `include_bias=False`, то оно равно только
`n_features * (n_splines - 1)`.
int 3
3 признака
weekday_sp_0
weekday_sp_1
weekday_sp_2
['hour']
Параметры
n_knots n_knots: int, по умолчанию=5

Количество узлов сплайнов, если `knots` равно одному из значений
{'uniform', 'quantile'}. Должно быть больше или равно 2. Игнорируется, если `knots`
представляет собой массив.
13
knots knots: {'uniform', 'quantile'} или массив формы (n_knots, n_features), по умолчанию='uniform'

Задаёт положения узлов так, чтобы первый узел <= признаки <= последний узел.

- Если задано 'uniform', узлы в количестве `n_knots` равномерно распределяются
от минимальных до максимальных значений признаков.
- Если задано 'quantile', они равномерно распределяются по квантилям
признаков.
- Если задан массив, он непосредственно задаёт отсортированные положения узлов,
включая граничные узлы. Обратите внимание: внутри алгоритма перед первым узлом
добавляется `degree` узлов, и столько же —
после последнего узла.
array([[ 0.],... [24.]])
extrapolation extrapolation: {'error', 'constant', 'linear', 'continue', 'periodic'}, по умолчанию='constant'

Если задано 'error', значения за пределами минимальных и максимальных значений обучающих
признаков вызывают `ValueError`. Если задано 'constant', значение
сплайна при минимальном и максимальном значениях признаков используется для
постоянной экстраполяции. Если задано 'linear', используется линейная экстраполяция.
Если задано 'continue', экстраполяция сплайнов выполняется без изменений, то есть используется параметр
`extrapolate=True` в :class:`scipy.interpolate.BSpline`. Если задано
'periodic', используются периодические сплайны с периодом, равным расстоянию
между первым и последним узлами. Периодические сплайны обеспечивают
одинаковые значения функции и производных в первом и последнем узлах.
Например, это позволяет избежать произвольного скачка между 31 декабря и 1 января
в признаках-сплайнах, полученных из естественно периодического входного признака «день года». В этом случае
рекомендуется вручную задать значения узлов, чтобы контролировать период.
'periodic'
degree degree: int, по умолчанию=3

Степень полинома базиса сплайна. Должна быть неотрицательным
целым числом.
3
include_bias include_bias: bool, по умолчанию=True

Если False, последний элемент сплайна в пределах диапазона данных
признака отбрасывается. Поскольку B-сплайны в сумме дают единицу по базисным функциям
для каждой точки данных, они неявно включают смещение,
то есть столбец из единиц. В линейных моделях он действует как свободный член.
True
order order: {'C', 'F'}, по умолчанию='C'

Порядок выходного массива в плотном представлении. Порядок `'F'` вычисляется быстрее, но
может замедлить последующие оценщики.
'C'
handle_missing handle_missing: {'error', 'zeros'}, по умолчанию='error'

Задаёт способ обработки пропущенных значений.

- 'error' : Вызывает ошибку, если во время :meth:`fit` присутствуют значения `np.nan`.
- 'zeros' : Кодирует сплайны для пропущенных значений нулями `0`.

Обратите внимание, что `handle_missing='zeros'` отличается от предварительного заполнения пропущенных значений
нулями с последующим созданием базиса сплайнов. Последний вариант создаёт базисные функции сплайнов
с ненулевыми значениями в местах пропущенных значений,
тогда как этот параметр просто задаёт нулевые значения всех базисных функций сплайнов в местах
пропущенных значений.

.. добавлено в версии:: 1.8
'error'
sparse_output sparse_output: bool, по умолчанию=False

Если задано True, возвращает разреженную матрицу CSR, иначе возвращает массив.

.. добавлено в версии:: 1.2
False
Обученные атрибуты
Имя Тип Значение
bsplines_ bsplines_: список формы (n_features,)

Список объектов BSplines, по одному для каждого признака.
list [<scipy.interp...x7841640d3850>]
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. добавлено в версии:: 1.0
ndarray[object](1,) ['hour']
n_features_in_ n_features_in_: int

Общее количество входных признаков.
int 1
n_features_out_ n_features_out_: int

Общее количество выходных признаков, вычисляемое как
`n_features * n_splines`, где `n_splines` —
количество базисных элементов B-сплайнов:
`n_knots + degree - 1` для непериодических сплайнов и
`n_knots - 1` для периодических.
Если `include_bias=False`, то оно равно только
`n_features * (n_splines - 1)`.
int 12
12 признаков
hour_sp_0
hour_sp_1
hour_sp_2
hour_sp_3
hour_sp_4
hour_sp_5
hour_sp_6
hour_sp_7
hour_sp_8
hour_sp_9
hour_sp_10
hour_sp_11
['year', 'temp', 'feel_temp', 'humidity', 'windspeed']
Параметры
feature_range feature_range: tuple (min, max), по умолчанию=(0, 1)

Требуемый диапазон преобразованных данных.
(0, ...)
copy copy: bool, по умолчанию=True

Задайте False, чтобы выполнять нормализацию строк на месте и избегать
копирования (если входные данные уже являются массивом numpy).
True
clip clip: bool, по умолчанию=False

Задайте True, чтобы ограничивать преобразованные значения отложенных данных
заданным `feature_range`.
Поскольку этот параметр ограничивает значения, `inverse_transform` может оказаться
не в состоянии восстановить исходные данные.

.. примечание::
Параметр `clip=True` не предотвращает сдвиг признаков (изменение распределения
между обучающими и тестовыми данными). Преобразованные значения ограничиваются
`feature_range`, что помогает избежать нежелательного поведения моделей,
чувствительных к входным данным вне диапазона (например, линейных моделей). Используйте осторожно,
поскольку ограничение может исказить распределение тестовых данных.

.. добавлено в версии:: 0.24
False
Обученные атрибуты
Имя Тип Значение
data_max_ data_max_: ndarray формы (n_features,)

Максимальное значение каждого признака в данных

.. добавлено в версии:: 0.17
атрибут *data_max_*
ndarray[float64](5,) [ 1. ,39.36,50. , 1. ,57. ]
data_min_ data_min_: ndarray формы (n_features,)

Минимальное значение каждого признака в данных

.. добавлено в версии:: 0.17
атрибут *data_min_*
ndarray[float64](5,) [0. ,0.82,0.76,0.16,0. ]
data_range_ data_range_: ndarray формы (n_features,)

Диапазон каждого признака ``(data_max_ - data_min_)`` в данных

.. добавлено в версии:: 0.17
атрибут *data_range_*
ndarray[float64](5,) [ 1. ,38.54,49.24, 0.84,57. ]
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. добавлено в версии:: 1.0
ndarray[object](5,) ['year','temp','feel_temp','humidity','windspeed']
min_ min_: ndarray формы (n_features,)

Поправка для минимального значения каждого признака. Эквивалентно
``min - X.min(axis=0) * self.scale_``
ndarray[float64](5,) [ 0. ,-0.02,-0.02,-0.19, 0. ]
n_features_in_ n_features_in_: int

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

.. добавлено в версии:: 0.24
int 5
n_samples_seen_ n_samples_seen_: int

Количество образцов, обработанных оценщиком.
Сбрасывается при новых вызовах fit, но увеличивается при последовательных
вызовах ``partial_fit``.
int 10000
scale_ scale_: ndarray формы (n_features,)

Относительный масштаб данных для каждого признака. Эквивалентно
``(max - min) / (X.max(axis=0) - X.min(axis=0))``

.. добавлено в версии:: 0.17
атрибут *scale_*.
ndarray[float64](5,) [1. ,0.03,0.02,1.19,0.02]
5 признаков
year
temp
feel_temp
humidity
windspeed
37 признаков
season_fall
season_spring
season_summer
season_winter
holiday_False
holiday_True
workingday_False
workingday_True
weather_clear
weather_misty
weather_rain
month_sp_0
month_sp_1
month_sp_2
month_sp_3
month_sp_4
month_sp_5
weekday_sp_0
weekday_sp_1
weekday_sp_2
hour_sp_0
hour_sp_1
hour_sp_2
hour_sp_3
hour_sp_4
hour_sp_5
hour_sp_6
hour_sp_7
hour_sp_8
hour_sp_9
hour_sp_10
hour_sp_11
year
temp
feel_temp
humidity
windspeed
Параметры
transformers transformers: список кортежей

Список кортежей (name, transformer, columns), задающих
объекты преобразователей, применяемые к подмножествам данных.

name : str
Как и в Pipeline и FeatureUnion, это позволяет задавать преобразователь и
его параметры с помощью ``set_params`` и выполнять поиск при настройке
гиперпараметров.
transformer : {'drop', 'passthrough'} или оцениватель
Оцениватель должен поддерживать :term:`fit` и :term:`transform`.
Также допускаются специальные строки 'drop' и 'passthrough',
указывающие соответственно на удаление столбцов или передачу их без
преобразования.
columns : str, массивоподобная последовательность строк str, int, массивоподобная последовательность int, массивоподобная последовательность bool, slice или callable
Индексирует данные по второй оси. Целые числа интерпретируются как
позиционные столбцы, а строки могут ссылаться на столбцы DataFrame
по имени. Если ``transformer`` ожидает, что X будет одномерным массивоподобным объектом (вектором),
следует использовать скалярную строку или целое число;
в противном случае преобразователю будет передан двумерный массив.
Функции обратного вызова передаются входные данные `X`, и она может вернуть любое из
перечисленного выше. Чтобы выбрать несколько столбцов по имени или типу данных, можно использовать
:obj:`make_column_selector`.
[('cyclic_hour', ...), ('workingday', ...)]
verbose_feature_names_out verbose_feature_names_out: bool, str или Callable[[str, str], str], по умолчанию=True

- Если значение True, :meth:`ColumnTransformer.get_feature_names_out` добавит в начало
всех имён признаков имя преобразователя, создавшего этот
признак. Это эквивалентно заданию
`verbose_feature_names_out="{transformer_name}__{feature_name}"`.
- Если значение False, :meth:`ColumnTransformer.get_feature_names_out` не будет
добавлять префиксы к именам признаков и вызовет ошибку, если имена признаков не
уникальны.
- Если значение ``Callable[[str, str], str]``,
:meth:`ColumnTransformer.get_feature_names_out` переименует все признаки,
используя имя преобразователя. Первый аргумент функции обратного вызова — это
имя преобразователя, а второй — имя признака. Возвращённая
строка станет новым именем признака.
- Если значение ``str``, оно должно быть строкой, готовой к форматированию. Указанная строка будет
отформатирована с использованием двух имён полей: ``transformer_name`` и ``feature_name``.
например, ``"{feature_name}__{transformer_name}"``. Дополнительные сведения см. в описании метода :meth:`str.format`
из стандартной библиотеки.

.. versionadded:: 1.0

.. versionchanged:: 1.6
`verbose_feature_names_out` может быть функцией обратного вызова или форматируемой строкой.
False
remainder remainder: {'drop', 'passthrough'} или оцениватель, по умолчанию='drop'

По умолчанию преобразуются и объединяются в выходных данных только столбцы, указанные в `transformers`,
а неуказанные столбцы удаляются (значение по умолчанию — ``'drop'``).
Если задать ``remainder='passthrough'``, все оставшиеся столбцы, которые
не указаны в `transformers`, но присутствовали в данных, переданных
в `fit`, будут автоматически переданы без изменений. Это подмножество столбцов
объединяется с результатом преобразователей. Для фреймов данных
дополнительные столбцы, отсутствовавшие во время `fit`, будут исключены из выходных данных
`transform`.
Если задать для ``remainder`` оцениватель, для оставшихся
неуказанных столбцов будет использоваться этот оцениватель ``remainder``. Оцениватель
должен поддерживать :term:`fit` и :term:`transform`.
Обратите внимание: для использования этой функции столбцы DataFrame,
передаваемые в :term:`fit` и :term:`transform`, должны иметь одинаковый порядок.
'drop'
sparse_threshold sparse_threshold: float, по умолчанию=0.3

Если выходные данные различных преобразователей содержат разреженные матрицы,
они будут объединены в разреженную матрицу, если общая плотность
ниже этого значения. Используйте ``sparse_threshold=0``, чтобы всегда возвращать
плотный массив. Если преобразованные выходные данные содержат только плотные данные,
результат объединения будет плотным, а этот аргумент будет проигнорирован.
0.3
n_jobs n_jobs: int, по умолчанию=None

Количество задач для параллельного выполнения.
``None`` означает 1, если только не используется контекст :obj:`joblib.parallel_backend`.
``-1`` означает использование всех процессоров. Подробнее см. :term:`Glossary <n_jobs>`.
None
transformer_weights transformer_weights: dict, по умолчанию=None

Множители весов признаков для каждого преобразователя. Результат работы
преобразователя умножается на эти веса. Ключи — имена преобразователей,
значения — веса.
None
verbose verbose: bool, по умолчанию=False

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

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

.. versionadded:: 1.0
ndarray[object](12,) ['season','year','month',...,'feel_temp','humidity','windspeed']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 12
named_transformers_ named_transformers_: :class:`~sklearn.utils.Bunch`

Атрибут только для чтения, предоставляющий доступ к любому преобразователю по заданному имени.
Ключи — имена преобразователей, а значения — обученные объекты
преобразователей.
Bunch {'cyclic_hour...nder': 'drop'}
output_indices_ output_indices_: dict

Словарь, сопоставляющий имя каждого преобразователя со срезом, в котором
указаны индексы в преобразованных выходных данных. Это удобно для
определения того, какой преобразователь отвечает за каждый преобразованный
признак или признаки.

.. versionadded:: 1.0
dict {'cy...ur': slice(0, 8, None), 're...er': slice(0, 0, None), 'wo...ay': slice(8, 9, None)}
sparse_output_ sparse_output_: bool

Логический флаг, указывающий, являются ли выходные данные ``transform``
разреженной матрицей или плотным массивом numpy; это зависит от результатов
отдельных преобразователей и аргумента `sparse_threshold`.
bool False
transformers_ transformers_: list

Коллекция обученных преобразователей в виде кортежей (name,
fitted_transformer, column). `fitted_transformer` может быть оценивателем
или `'drop'`; значение `'passthrough'` заменяется эквивалентным
:class:`~sklearn.preprocessing.FunctionTransformer`. Если столбцы не были выбраны,
это будет необученный преобразователь. Если
остались столбцы, последним элементом будет кортеж вида:
('remainder', transformer, remaining_columns), соответствующий
параметру ``remainder``. Если остались столбцы, то
``len(transformers_)==len(transformers)+1``, иначе
``len(transformers_)==len(transformers)``.

.. versionadded:: 1.7
Формат оставшихся столбцов теперь по возможности соответствует формату остальных
преобразователей: если все столбцы были заданы как имена столбцов (`str`),
оставшиеся столбцы сохраняются как имена столбцов; если все столбцы были заданы
как массивы масок (`bool`), оставшиеся столбцы также сохраняются в этом формате; во всех остальных случаях
оставшиеся столбцы сохраняются как индексы (`int`).
list [('cy...ur', SplineTransfo... n_knots=9), ['hour']), ('wo...ay', FunctionTrans...78414c5d2820>), ['wo...ay']), ('re...er', 'drop', ['season', 'year', 'month', 'holiday', ...])]
['hour']
Параметры
n_knots n_knots: int, значение по умолчанию=5

Количество узлов сплайнов, если значение `knots` равно одному из
{'uniform', 'quantile'}. Должно быть не меньше 2. Игнорируется, если `knots`
представлен в виде массива.
9
knots knots: {'uniform', 'quantile'} или массивоподобный объект формы (n_knots, n_features), значение по умолчанию='uniform'

Задаёт положения узлов так, чтобы первый узел <= признаки <= последний узел.

- При значении 'uniform' узлы в количестве `n_knots` равномерно распределяются
от минимальных до максимальных значений признаков.
- При значении 'quantile' они равномерно распределяются по квантилям
признаков.
- Если задан массивоподобный объект, он непосредственно определяет отсортированные положения
узлов, включая граничные узлы. Обратите внимание: внутри алгоритма
перед первым узлом добавляется количество узлов, равное `degree`, и столько же
после последнего узла.
array([[ 0.],... [24.]])
extrapolation extrapolation: {'error', 'constant', 'linear', 'continue', 'periodic'}, значение по умолчанию='constant'

Если задано значение 'error', значения за пределами минимальных и максимальных значений обучающих
признаков вызывают `ValueError`. Если задано значение 'constant', значение
сплайнов при минимальном и максимальном значениях признаков используется
для постоянной экстраполяции. Если задано значение 'linear', используется линейная экстраполяция.
Если задано значение 'continue', сплайны экстраполируются без изменений, то есть используется параметр
`extrapolate=True` в :class:`scipy.interpolate.BSpline`. Если задано значение
'periodic', используются периодические сплайны с периодом, равным расстоянию
между первым и последним узлами. Периодические сплайны обеспечивают
равенство значений функций и производных в первом и последнем узлах.
Например, это позволяет избежать появления произвольного
скачка между 31 декабря и 1 января в признаках-сплайнах, полученных из
естественно периодического входного признака «день года». В этом случае
рекомендуется вручную задать значения узлов, чтобы контролировать период.
'periodic'
degree degree: int, значение по умолчанию=3

Степень полинома базиса сплайна. Должна быть неотрицательным
целым числом.
3
include_bias include_bias: bool, значение по умолчанию=True

Если задано значение False, последний элемент сплайна в диапазоне данных
признака удаляется. Поскольку B-сплайны в сумме дают единицу для базисных функций сплайна
для каждой точки данных, они неявно включают смещение, то есть столбец из единиц.
В линейных моделях он играет роль свободного члена.
True
order order: {'C', 'F'}, значение по умолчанию='C'

Порядок выходного массива в плотном представлении. Порядок `'F'` вычисляется быстрее, но
может замедлить работу последующих оценщиков.
'C'
handle_missing handle_missing: {'error', 'zeros'}, значение по умолчанию='error'

Задаёт способ обработки пропущенных значений.

- 'error' : вызвать ошибку, если при выполнении :meth:`fit` присутствуют значения `np.nan`.
- 'zeros' : кодировать сплайны для пропущенных значений значениями `0`.

Обратите внимание: `handle_missing='zeros'` отличается от предварительного заполнения пропущенных значений
нулями с последующим построением базиса сплайна. Во втором случае создаются базисные функции сплайна,
имеющие ненулевые значения в пропущенных точках,
тогда как этот параметр просто устанавливает значения всех базисных функций сплайна в ноль в
пропущенных точках.

.. versionadded:: 1.8
'error'
sparse_output sparse_output: bool, значение по умолчанию=False

Если задано значение True, возвращается разреженная матрица CSR, иначе возвращается массив.

.. versionadded:: 1.2
False
Атрибуты после обучения
Имя Тип Значение
bsplines_ bsplines_: список формы (n_features,)

Список объектов BSplines, по одному для каждого признака.
list [<scipy.interp...x7841640d35d0>]
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](1,) ['hour']
n_features_in_ n_features_in_: int

Общее количество входных признаков.
int 1
n_features_out_ n_features_out_: int

Общее количество выходных признаков, вычисляемое как
`n_features * n_splines`, где `n_splines` —
количество базисных элементов B-сплайнов:
`n_knots + degree - 1` для непериодических сплайнов и
`n_knots - 1` для периодических.
Если `include_bias=False`, то используется значение
`n_features * (n_splines - 1)`.
int 8
8 признаков
hour_sp_0
hour_sp_1
hour_sp_2
hour_sp_3
hour_sp_4
hour_sp_5
hour_sp_6
hour_sp_7
['workingday']
Параметры
func func: callable, значение по умолчанию=None

Вызываемый объект, используемый для преобразования. Ему будут переданы
те же аргументы, что и методу transform; args и kwargs передаются дальше.
Если func равен None, используется тождественная функция.
<function <la...x78414c5d2820>
feature_names_out feature_names_out: callable, 'one-to-one' или None, значение по умолчанию=None

Определяет список имён признаков, возвращаемый методом
`get_feature_names_out`. Если значение равно 'one-to-one', имена выходных
признаков совпадают с именами входных признаков. Если задан вызываемый объект,
он должен принимать два позиционных аргумента: этот
`FunctionTransformer` (`self`) и массивоподобный объект с именами входных признаков
(`input_features`). Он должен возвращать массивоподобный объект с именами выходных признаков.
Метод `get_feature_names_out` определён, только если
`feature_names_out` не равен None.

Дополнительные сведения см. в разделе ``get_feature_names_out``.

.. versionadded:: 1.1
'one-to-one'
inverse_func inverse_func: callable, значение по умолчанию=None

Вызываемый объект, используемый для обратного преобразования. Ему будут
переданы те же аргументы, что и методу inverse transform; args и
kwargs передаются дальше. Если inverse_func равен None, используется
тождественная функция.
None
validate validate: bool, значение по умолчанию=False

Указывает, следует ли проверять входной массив X перед вызовом
``func``. Возможны следующие варианты:

- Если значение False, входные данные не проверяются.
- Если значение True, X преобразуется в двумерный массив NumPy или
разреженную матрицу. Если преобразование невозможно, возникает исключение.

.. versionchanged:: 0.22
Значение ``validate`` по умолчанию изменено с True на False.
False
accept_sparse accept_sparse: bool, значение по умолчанию=False

Указывает, принимает ли func на вход разреженную матрицу. Если validate равно
False, этот параметр не влияет на результат. В противном случае, если accept_sparse равен false,
при передаче разреженной матрицы возникает исключение.
False
check_inverse check_inverse: bool, значение по умолчанию=True

Проверять ли, что применение ``func``, а затем ``inverse_func`` возвращает
исходные входные данные. Этот параметр можно использовать для проверки корректности; если условие не выполняется,
выдаётся предупреждение.

.. versionadded:: 0.20
True
kw_args kw_args: dict, значение по умолчанию=None

Словарь дополнительных именованных аргументов, передаваемых в func.

.. versionadded:: 0.18
None
inv_kw_args inv_kw_args: dict, значение по умолчанию=None

Словарь дополнительных именованных аргументов, передаваемых в inverse_func.

.. versionadded:: 0.18
None
Атрибуты после обучения
Имя Тип Значение
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](1,) ['workingday']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 1
1 признак
workingday
9 признаков
hour_sp_0
hour_sp_1
hour_sp_2
hour_sp_3
hour_sp_4
hour_sp_5
hour_sp_6
hour_sp_7
workingday
Параметры
interaction_only interaction_only: bool, значение по умолчанию=False

Если задано значение `True`, создаются только признаки взаимодействия: признаки,
представляющие собой произведения не более чем `degree` *различных* входных признаков; то есть термы
со степенью 2 или выше для одного и того же входного признака исключаются:

- включены: `x[0]`, `x[1]`, `x[0] * x[1]` и т. д.
- исключены: `x[0] ** 2`, `x[0] ** 2 * x[1]` и т. д.
True
include_bias include_bias: bool, значение по умолчанию=True

Если задано значение `True` (по умолчанию), добавляется столбец смещения — признак,
в котором все степени полиномов равны нулю (то есть столбец из единиц, играющий роль
свободного члена в линейной модели).
False
degree degree: int или кортеж (min_degree, max_degree), значение по умолчанию=2

Если задано одно целое число, оно определяет максимальную степень
полиномиальных признаков. Если передан кортеж `(min_degree, max_degree)`,
то `min_degree` задаёт минимальную, а `max_degree` — максимальную
степень полиномов для созданных признаков. Обратите внимание: `min_degree=0`
и `min_degree=1` эквивалентны, поскольку добавление терма нулевой степени
определяется параметром `include_bias`.
2
order order: {'C', 'F'}, значение по умолчанию='C'

Порядок выходного массива в плотном представлении. Порядок `'F'` вычисляется быстрее,
но может замедлить работу последующих оценщиков.

.. versionadded:: 0.21
'C'
Атрибуты после обучения
Имя Тип Значение
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](9,) ['hour_sp_0','hour_sp_1','hour_sp_2',...,'hour_sp_6','hour_sp_7', 'workingday']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 9
n_output_features_ n_output_features_: int

Общее количество выходных полиномиальных признаков. Количество выходных
признаков вычисляется перебором всех комбинаций входных признаков подходящего размера.
int 45
powers_ powers_: ndarray формы (`n_output_features_`, `n_features_in_`)

`powers_[i, j]` — показатель степени j-го входного признака в i-м выходном признаке.
ndarray[int64](45, 9) [[1,0,0,...,0,0,0], [0,1,0,...,0,0,0], [0,0,1,...,0,0,0], ..., [0,0,0,...,1,1,0], [0,0,0,...,1,0,1], [0,0,0,...,0,1,1]]
45 признаков
hour_sp_0
hour_sp_1
hour_sp_2
hour_sp_3
hour_sp_4
hour_sp_5
hour_sp_6
hour_sp_7
workingday
hour_sp_0 hour_sp_1
hour_sp_0 hour_sp_2
hour_sp_0 hour_sp_3
hour_sp_0 hour_sp_4
hour_sp_0 hour_sp_5
hour_sp_0 hour_sp_6
hour_sp_0 hour_sp_7
hour_sp_0 workingday
hour_sp_1 hour_sp_2
hour_sp_1 hour_sp_3
hour_sp_1 hour_sp_4
hour_sp_1 hour_sp_5
hour_sp_1 hour_sp_6
hour_sp_1 hour_sp_7
hour_sp_1 workingday
hour_sp_2 hour_sp_3
hour_sp_2 hour_sp_4
hour_sp_2 hour_sp_5
hour_sp_2 hour_sp_6
hour_sp_2 hour_sp_7
hour_sp_2 workingday
hour_sp_3 hour_sp_4
hour_sp_3 hour_sp_5
hour_sp_3 hour_sp_6
hour_sp_3 hour_sp_7
hour_sp_3 workingday
hour_sp_4 hour_sp_5
hour_sp_4 hour_sp_6
hour_sp_4 hour_sp_7
hour_sp_4 workingday
hour_sp_5 hour_sp_6
hour_sp_5 hour_sp_7
hour_sp_5 workingday
hour_sp_6 hour_sp_7
hour_sp_6 workingday
hour_sp_7 workingday
82 признака
marginal__season_fall
marginal__season_spring
marginal__season_summer
marginal__season_winter
marginal__holiday_False
marginal__holiday_True
marginal__workingday_False
marginal__workingday_True
marginal__weather_clear
marginal__weather_misty
marginal__weather_rain
marginal__month_sp_0
marginal__month_sp_1
marginal__month_sp_2
marginal__month_sp_3
marginal__month_sp_4
marginal__month_sp_5
marginal__weekday_sp_0
marginal__weekday_sp_1
marginal__weekday_sp_2
marginal__hour_sp_0
marginal__hour_sp_1
marginal__hour_sp_2
marginal__hour_sp_3
marginal__hour_sp_4
marginal__hour_sp_5
marginal__hour_sp_6
marginal__hour_sp_7
marginal__hour_sp_8
marginal__hour_sp_9
marginal__hour_sp_10
marginal__hour_sp_11
marginal__year
marginal__temp
marginal__feel_temp
marginal__humidity
marginal__windspeed
interactions__hour_sp_0
interactions__hour_sp_1
interactions__hour_sp_2
interactions__hour_sp_3
interactions__hour_sp_4
interactions__hour_sp_5
interactions__hour_sp_6
interactions__hour_sp_7
interactions__workingday
interactions__hour_sp_0 hour_sp_1
interactions__hour_sp_0 hour_sp_2
interactions__hour_sp_0 hour_sp_3
interactions__hour_sp_0 hour_sp_4
interactions__hour_sp_0 hour_sp_5
interactions__hour_sp_0 hour_sp_6
interactions__hour_sp_0 hour_sp_7
interactions__hour_sp_0 workingday
interactions__hour_sp_1 hour_sp_2
interactions__hour_sp_1 hour_sp_3
interactions__hour_sp_1 hour_sp_4
interactions__hour_sp_1 hour_sp_5
interactions__hour_sp_1 hour_sp_6
interactions__hour_sp_1 hour_sp_7
interactions__hour_sp_1 workingday
interactions__hour_sp_2 hour_sp_3
interactions__hour_sp_2 hour_sp_4
interactions__hour_sp_2 hour_sp_5
interactions__hour_sp_2 hour_sp_6
interactions__hour_sp_2 hour_sp_7
interactions__hour_sp_2 workingday
interactions__hour_sp_3 hour_sp_4
interactions__hour_sp_3 hour_sp_5
interactions__hour_sp_3 hour_sp_6
interactions__hour_sp_3 hour_sp_7
interactions__hour_sp_3 workingday
interactions__hour_sp_4 hour_sp_5
interactions__hour_sp_4 hour_sp_6
interactions__hour_sp_4 hour_sp_7
interactions__hour_sp_4 workingday
interactions__hour_sp_5 hour_sp_6
interactions__hour_sp_5 hour_sp_7
interactions__hour_sp_5 workingday
interactions__hour_sp_6 hour_sp_7
interactions__hour_sp_6 workingday
interactions__hour_sp_7 workingday
Параметры
alphas alphas: массивоподобный объект формы (n_alphas,), по умолчанию=(0.1, 1.0, 10.0)

Массив значений alpha, которые нужно проверить.
Сила регуляризации; должна быть положительным числом с плавающей точкой. Регуляризация
улучшает обусловленность задачи и уменьшает дисперсию
оценок. Большие значения задают более сильную регуляризацию.
В других линейных моделях, таких как
:class:`~sklearn.linear_model.LogisticRegression` или
:class:`~sklearn.svm.LinearSVC`, alpha соответствует ``1 / (2C)``.
При использовании перекрёстной проверки с исключением одного наблюдения значения alpha должны быть строго положительными.

Пример влияния силы регуляризации на коэффициенты модели см. в разделе
:ref:`sphx_glr_auto_examples_linear_model_plot_ridge_coeffs.py`.
array([1.0000...00000000e+06])
fit_intercept fit_intercept: bool, по умолчанию=True

Следует ли вычислять свободный член для этой модели. Если задать
значение false, при вычислениях свободный член использоваться не будет
(то есть предполагается, что данные центрированы).
True
scoring scoring: str, вызываемый объект, по умолчанию=None

Метод оценки качества для перекрёстной проверки. Возможные варианты:

- str: доступные варианты см. в :ref:`scoring_string_names`.
- вызываемый объект: вызываемый объект-оценщик (например, функция) с сигнатурой
``scorer(estimator, X, y)``. Подробности см. в :ref:`scoring_callable`.
- `None`: отрицательная :ref:`среднеквадратичная ошибка <mean_squared_error>`, если cv равно
None (то есть используется перекрёстная проверка с исключением одного наблюдения), или
:ref:`коэффициент детерминации <r2_score>` (:math:`R^2`) в противном случае.
None
cv cv: int, генератор перекрёстной проверки или итерируемый объект, по умолчанию=None

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

- None — использовать эффективную перекрёстную проверку с исключением одного наблюдения
- целое число — указать количество частей,
- :term:`разделитель CV`,
- итерируемый объект, выдающий разбиения (train, test) в виде массивов индексов.

Для целочисленных значений и None, если ``y`` содержит два или более классов,
используется :class:`~sklearn.model_selection.StratifiedKFold`, иначе
используется :class:`~sklearn.model_selection.KFold`.

Различные стратегии перекрёстной проверки, которые можно использовать здесь,
описаны в :ref:`руководстве пользователя <cross_validation>`.
None
gcv_mode gcv_mode: {'auto', 'svd', 'eigen'}, по умолчанию='auto'

Флаг, указывающий, какую стратегию использовать при выполнении
перекрёстной проверки с исключением одного наблюдения. Возможные варианты::

'auto' : то же, что 'eigen'
'svd' : использовать сингулярное разложение матрицы X, если X плотная;
если X разреженная, использовать 'eigen'
'eigen' : использовать спектральное разложение X X', когда n_samples <= n_features,
или X' X, когда n_features < n_samples

Режим 'auto' используется по умолчанию и предназначен для выбора более
эффективного варианта в зависимости от формы и разреженности обучающих данных.
None
store_cv_results store_cv_results: bool, по умолчанию=False

Флаг, указывающий, следует ли сохранять значения перекрёстной проверки,
соответствующие каждому alpha, в атрибуте ``cv_results_`` (см.
ниже). Этот флаг совместим только с ``cv=None`` (то есть при использовании
перекрёстной проверки с исключением одного наблюдения).

.. versionchanged:: 1.5
Имя параметра изменено с `store_cv_values` на `store_cv_results`.
False
alpha_per_target alpha_per_target: bool, по умолчанию=False

Флаг, указывающий, следует ли оптимизировать значение alpha (выбираемое из
списка параметра `alphas`) отдельно для каждой целевой переменной (в режиме нескольких выходов:
несколько целевых переменных для предсказания). Если задано значение `True`, после
обучения атрибут `alpha_` будет содержать значение для каждой целевой переменной.
Если задано значение `False`, для всех целевых переменных используется одно значение alpha.
Этот флаг совместим только с ``cv=None`` (то есть при использовании
перекрёстной проверки с исключением одного наблюдения).

.. versionadded:: 0.24
False
Обученные атрибуты
Имя Тип Значение
alpha_ alpha_: число с плавающей точкой или ndarray формы (n_targets,)

Оценённый параметр регуляризации или, если ``alpha_per_target=True``,
оценённый параметр регуляризации для каждой целевой переменной.
float 0.0001
best_score_ best_score_: число с плавающей точкой или ndarray формы (n_targets,)

Оценка базового оценщика с наилучшим значением alpha или,
если ``alpha_per_target=True``, отдельная оценка для каждой целевой переменной.

.. versionadded:: 0.23
float64 -0.004999
coef_ coef_: ndarray формы (n_features) или (n_targets, n_features)

Вектор(ы) весов.
ndarray[float64](82,) [ 0. ,-0.03, 0. ,..., 4.57,-0.18, 0.3 ]
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](82,) ['marginal__season_fall','marginal__season_spring', 'marginal__season_summer',...,'interactions__hour_sp_6 hour_sp_7', 'interactions__hour_sp_6 workingday','interactions__hour_sp_7 workingday']
intercept_ intercept_: число с плавающей точкой или ndarray формы (n_targets,)

Свободный член в функции принятия решения. Равен 0.0, если
``fit_intercept = False``.
float64 0.05941
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 82


Моделирование нелинейных взаимодействий признаков с помощью ядер

Предыдущий анализ показал необходимость моделировать взаимодействия между "workingday" и "hours". Еще один пример такого нелинейного взаимодействия, которое мы хотели бы моделировать, — влияние дождя, которое, например, может быть разным в рабочие дни, выходные и праздничные дни.

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

В качестве альтернативы можно использовать метод Нюстрёма для вычисления приближенного полиномиального разложения ядра. Попробуем этот вариант:

from sklearn.kernel_approximation import Nystroem

cyclic_spline_poly_pipeline = make_pipeline(
    cyclic_spline_transformer,
    Nystroem(kernel="poly", degree=2, n_components=300, random_state=0),
    RidgeCV(alphas=alphas),
)
evaluate(cyclic_spline_poly_pipeline, X, y, cv=ts_cv)
Mean Absolute Error:     0.053 +/- 0.002
Root Mean Squared Error: 0.076 +/- 0.004
Pipeline(steps=[('columntransformer',
                 ColumnTransformer(remainder=MinMaxScaler(),
                                   transformers=[('categorical',
                                                  OneHotEncoder(handle_unknown='ignore',
                                                                sparse_output=False),
                                                  Index(['season', 'holiday', 'workingday', 'weather'], dtype='str')),
                                                 ('cyclic_month',
                                                  SplineTransformer(extrapolation='periodic',
                                                                    knots=array([[ 0.],
       [ 2.],
       [ 4.],
       [ 6.],
       [ 8.],
       [10.],
       [12.]]),
                                                                    n_knots...
                 RidgeCV(alphas=array([1.00000000e-06, 3.16227766e-06, 1.00000000e-05, 3.16227766e-05,
       1.00000000e-04, 3.16227766e-04, 1.00000000e-03, 3.16227766e-03,
       1.00000000e-02, 3.16227766e-02, 1.00000000e-01, 3.16227766e-01,
       1.00000000e+00, 3.16227766e+00, 1.00000000e+01, 3.16227766e+01,
       1.00000000e+02, 3.16227766e+02, 1.00000000e+03, 3.16227766e+03,
       1.00000000e+04, 3.16227766e+04, 1.00000000e+05, 3.16227766e+05,
       1.00000000e+06])))])
В среде Jupyter повторно выполните эту ячейку, чтобы отобразить HTML-представление, или доверьте выполнение записной книжки.
На GitHub HTML-представление не отображается. Попробуйте открыть эту страницу с помощью nbviewer.org.
Параметры
steps steps: список кортежей

Список кортежей (название шага, оцениватель), которые последовательно
соединяются в указанном порядке. Для совместимости с API scikit-learn все шаги
должны определять `fit`. Все шаги, кроме последнего, также должны определять `transform`. Подробнее см.
:ref:`Объединение оценивателей <combining_estimators>`.
[('columntransformer', ...), ('nystroem', ...), ...]
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
Обученные атрибуты
Имя Тип Значение
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. добавлено в версии:: 1.0
ndarray[object](12,) ['season','year','month',...,'feel_temp','humidity','windspeed']
n_features_in_ n_features_in_: int

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

.. добавлено в версии:: 0.24
int 12
Параметры
transformers transformers: список кортежей

Список кортежей (имя, преобразователь, столбцы), задающих
объекты-преобразователи, применяемые к подмножествам данных.

name : str
Как и в Pipeline и FeatureUnion, это позволяет задавать преобразователь и
его параметры с помощью ``set_params`` и искать их в процессе
подбора по сетке.
transformer : {'drop', 'passthrough'} или оцениватель
Оцениватель должен поддерживать :term:`fit` и :term:`transform`.
Также допускаются специальные строки 'drop' и 'passthrough',
указывающие соответственно на удаление столбцов и передачу их без
преобразования.
columns : str, массивоподобный объект из str, int, массивоподобный объект из int, массивоподобный объект из bool, slice или вызываемый объект
Индексирует данные по второй оси. Целые числа интерпретируются как
позиционные номера столбцов, а строки могут ссылаться на столбцы DataFrame
по имени. Если ``transformer`` ожидает на входе X одномерный массивоподобный объект (вектор),
следует использовать скалярную строку или целое число;
в противном случае преобразователю будет передан двумерный массив.
Вызываемому объекту передаются входные данные `X`, и он может вернуть любой
из перечисленных выше вариантов. Чтобы выбрать несколько столбцов по имени или типу данных, используйте
:obj:`make_column_selector`.
[('categorical', ...), ('cyclic_month', ...), ...]
remainder remainder: {'drop', 'passthrough'} или оцениватель, по умолчанию 'drop'

По умолчанию преобразуются и объединяются в выходных данных только указанные в `transformers` столбцы,
а неуказанные столбцы отбрасываются (значение по умолчанию — ``'drop'``).
Если задать ``remainder='passthrough'``, все оставшиеся столбцы, которые
не были указаны в `transformers`, но присутствовали в данных, переданных
в `fit`, будут переданы без изменений. Это подмножество столбцов
объединяется с результатами преобразователей. Для фреймов данных
дополнительные столбцы, отсутствовавшие при вызове `fit`, не включаются в результаты
`transform`.
Если в качестве ``remainder`` задать оцениватель, оставшиеся
неуказанные столбцы будут обрабатываться этим оценивателем. Оцениватель
должен поддерживать :term:`fit` и :term:`transform`.
Обратите внимание: для использования этой возможности порядок столбцов DataFrame,
передаваемого в :term:`fit` и :term:`transform`, должен быть одинаковым.
MinMaxScaler()
verbose_feature_names_out verbose_feature_names_out: bool, str или Callable[[str, str], str], по умолчанию True

- Если True, :meth:`ColumnTransformer.get_feature_names_out` добавляет в начало
каждого имени признака имя преобразователя, создавшего этот
признак. Это эквивалентно заданию
`verbose_feature_names_out="{transformer_name}__{feature_name}"`.
- Если False, :meth:`ColumnTransformer.get_feature_names_out` не добавляет
префиксы к именам признаков и вызывает ошибку, если имена признаков
не уникальны.
- Если задан ``Callable[[str, str], str]``,
:meth:`ColumnTransformer.get_feature_names_out` переименовывает все признаки,
используя имя преобразователя. Первый аргумент вызываемого объекта — имя
преобразователя, второй — имя признака. Возвращаемая
строка становится новым именем признака.
- Если задан ``str``, это должна быть строка, готовая к форматированию. Она будет
отформатирована с использованием двух полей: ``transformer_name`` и ``feature_name``.
Например, ``"{feature_name}__{transformer_name}"``. Подробнее см. метод :meth:`str.format`
из стандартной библиотеки.

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

.. изменено в версии:: 1.6
`verbose_feature_names_out` может быть вызываемым объектом или строкой для форматирования.
False
sparse_threshold sparse_threshold: float, по умолчанию 0.3

Если результаты разных преобразователей содержат разреженные матрицы,
они будут объединены в разреженную матрицу, если общая плотность
ниже этого значения. Используйте ``sparse_threshold=0``, чтобы всегда возвращать
плотную матрицу. Если преобразованные результаты состоят только из плотных данных,
объединенный результат будет плотным, а этот параметр будет проигнорирован.
0.3
n_jobs n_jobs: int, по умолчанию None

Количество заданий, выполняемых параллельно.
``None`` означает 1, если только не используется контекст :obj:`joblib.parallel_backend`.
``-1`` означает использование всех процессоров. Подробнее см. :term:`Глоссарий <n_jobs>`.
None
transformer_weights transformer_weights: dict, по умолчанию None

Множители весов признаков для каждого преобразователя. Результаты
преобразователя умножаются на эти веса. Ключи — имена преобразователей,
значения — веса.
None
verbose verbose: bool, по умолчанию False

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

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

.. добавлено в версии:: 1.0
ndarray[object](12,) ['season','year','month',...,'feel_temp','humidity','windspeed']
n_features_in_ n_features_in_: int

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

.. добавлено в версии:: 0.24
int 12
named_transformers_ named_transformers_: :class:`~sklearn.utils.Bunch`

Атрибут только для чтения, позволяющий получить доступ к любому преобразователю по заданному имени.
Ключи — имена преобразователей, а значения — обученные объекты-преобразователи.
Bunch {'categorical...inMaxScaler()}
output_indices_ output_indices_: dict

Словарь, сопоставляющий имя каждого преобразователя срезу, соответствующему
индексам в преобразованных выходных данных. Это полезно для определения того,
какой преобразователь отвечает за преобразование каждого признака.

.. добавлено в версии:: 1.0
dict {'ca...al': slice(0, 11, None), 'cy...ur': slice(20, 32, None), 'cy...th': slice(11, 17, None), 'cy...ay': slice(17, 20, None), ...}
sparse_output_ sparse_output_: bool

Логический флаг, указывающий, является ли результат ``transform``
разреженной матрицей или плотным массивом numpy; это зависит от результатов
отдельных преобразователей и параметра `sparse_threshold`.
bool False
transformers_ transformers_: list

Коллекция обученных преобразователей в виде кортежей (имя,
обученный_преобразователь, столбец). `обученный_преобразователь` может быть оценивателем
или значением `'drop'`; значение `'passthrough'` заменяется эквивалентным
:class:`~sklearn.preprocessing.FunctionTransformer`. Если столбцы не были выбраны,
здесь будет необученный преобразователь. Если остались столбцы,
последний элемент представляет собой кортеж вида:
('remainder', преобразователь, оставшиеся_столбцы), соответствующий параметру
``remainder``. Если остались столбцы, то
``len(transformers_)==len(transformers)+1``, в противном случае
``len(transformers_)==len(transformers)``.

.. добавлено в версии:: 1.7
Формат оставшихся столбцов теперь по возможности соответствует формату остальных
преобразователей: если все столбцы были заданы как имена столбцов (`str`),
оставшиеся столбцы хранятся как имена; если все столбцы были заданы
как массивы масок (`bool`), оставшиеся столбцы также хранятся как массивы масок; во всех остальных случаях
оставшиеся столбцы хранятся как индексы (`int`).
list [('ca...al', OneHotEncoder..._output=False), Index(['seaso..., dtype='str')), ('cy...th', SplineTransfo... n_knots=7), ['month']), ('cy...ay', SplineTransfo... n_knots=4), ['weekday']), ('cy...ur', SplineTransfo... n_knots=13), ['hour']), ...]
Index(['season', 'holiday', 'workingday', 'weather'], dtype='str')
Параметры
sparse_output sparse_output: bool, по умолчанию=True

Если ``True``, возвращает разреженную матрицу/массив SciPy
в формате "Compressed Sparse Row" (CSR).

.. versionadded:: 1.2
`sparse` переименован в `sparse_output`
False
handle_unknown handle_unknown: {'error', 'ignore', 'infrequent_if_exist', 'warn'}, по умолчанию='error'

Определяет способ обработки неизвестных категорий во время :meth:`transform`.

- 'error' : Вызывает ошибку, если во время преобразования обнаружена неизвестная категория.
- 'ignore' : Если во время преобразования обнаружена неизвестная категория,
результирующие столбцы этого признака, закодированные методом one-hot,
будут содержать только нули. При обратном преобразовании неизвестная категория
будет обозначена как None.
- 'infrequent_if_exist' : Если во время преобразования обнаружена неизвестная категория,
результирующие столбцы этого признака, закодированные методом one-hot,
будут соответствовать редкой категории, если она существует. Редкая категория
будет помещена на последнюю позицию в кодировании. При обратном преобразовании
неизвестная категория будет сопоставлена категории, обозначенной как `'infrequent'`,
если она существует. Если категория `'infrequent'` не существует, то :meth:`transform` и
:meth:`inverse_transform` обработают неизвестную категорию так же, как
при `handle_unknown='ignore'`. Редкие категории определяются на основе
`min_frequency` и `max_categories`. Подробнее см. в
:ref:`Руководстве пользователя <encoder_infrequent_categories>`.
- 'warn' : Если во время преобразования обнаружена неизвестная категория,
выдается предупреждение, после чего кодирование выполняется так, как описано для
`handle_unknown="infrequent_if_exist"`.

.. versionchanged:: 1.1
Параметр `'infrequent_if_exist'` добавлен для автоматической обработки неизвестных
и редких категорий.

.. versionadded:: 1.6
Параметр `"warn"` добавлен в версии 1.6.
'ignore'
categories categories: 'auto' или список объектов, подобных массиву, по умолчанию='auto'

Категории (уникальные значения) для каждого признака:

- 'auto' : Автоматически определять категории по обучающим данным.
- list : ``categories[i]`` содержит категории, ожидаемые в столбце с индексом i.
Переданные категории для одного признака не должны содержать одновременно строки
и числовые значения; числовые значения должны быть отсортированы.

Используемые категории можно найти в атрибуте ``categories_``.

.. versionadded:: 0.20
'auto'
drop drop: {'first', 'if_binary'} или объект, подобный массиву, формы (n_features,), по умолчанию=None

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

Однако удаление одной категории нарушает симметрию исходного
представления и поэтому может привести к смещению в последующих моделях,
например в моделях классификации или регрессии с линейной регуляризацией.

- None : сохранить все признаки (значение по умолчанию).
- 'first' : удалить первую категорию для каждого признака. Если присутствует только одна
категория, признак будет удален полностью.
- 'if_binary' : удалить первую категорию для каждого признака с двумя
категориями. Признаки с 1 или более чем 2 категориями
остаются без изменений.
- array : ``drop[i]`` — категория признака ``X[:, i]``,
которую следует удалить.

Если для группировки редких категорий задан параметр `max_categories` или
`min_frequency`, удаление выполняется после
группировки.

.. versionadded:: 0.21
Параметр `drop` добавлен в версии 0.21.

.. versionchanged:: 0.23
Параметр `drop='if_binary'` добавлен в версии 0.23.

.. versionchanged:: 1.1
Добавлена поддержка удаления редких категорий.
None
dtype dtype: числовой тип, по умолчанию=np.float64

Требуемый тип выходных данных.
<class 'numpy.float64'>
min_frequency min_frequency: int или float, по умолчанию=None

Задает минимальную частоту, ниже которой категория
считается редкой.

- Если задан `int`, редкими считаются категории с меньшей
кардинальностью.

- Если задан `float`, редкими считаются категории с кардинальностью меньше
`min_frequency * n_samples`.

.. versionadded:: 1.1
Подробнее см. в :ref:`Руководстве пользователя <encoder_infrequent_categories>`.
None
max_categories max_categories: int, по умолчанию=None

Задает верхний предел количества выходных признаков для каждого входного
признака при учете редких категорий. Если имеются редкие
категории, `max_categories` учитывает категорию, представляющую
редкие категории, наряду с частыми категориями. Если задано `None`,
количество выходных признаков не ограничено.

.. versionadded:: 1.1
Подробнее см. в :ref:`Руководстве пользователя <encoder_infrequent_categories>`.
None
feature_name_combiner feature_name_combiner: "concat" или вызываемый объект, по умолчанию="concat"

Вызываемый объект с сигнатурой `def callable(input_feature, category)`, который возвращает
строку. Используется для создания имен признаков, возвращаемых методом
:meth:`get_feature_names_out`.

`"concat"` объединяет имя закодированного признака и категорию с помощью выражения
`feature + "_" + str(category)`. Например, для признака X со значениями 1, 6, 7 создаются
имена признаков `X_1, X_6, X_7`.

.. versionadded:: 1.3
'concat'
Обученные атрибуты
Имя Тип Значение
categories_ categories_: список массивов

Категории каждого признака, определенные во время обучения
(в порядке признаков в X и в соответствии с выходными данными
``transform``). Сюда входит категория, указанная в ``drop``
(если она задана).
list [array(['fall'... dtype=object), array(['False... dtype=object), array(['False... dtype=object), array(['clear... dtype=object)]
drop_idx_ drop_idx_: массив формы (n_features,)

- ``drop_idx_[i]`` — индекс категории в ``categories_[i]``,
которая удаляется для каждого признака.
- ``drop_idx_[i] = None``, если для признака с индексом ``i`` не удаляется ни одна категория,
например, когда задано `drop='if_binary'`, а признак не является бинарным.
- ``drop_idx_ = None``, если сохраняются все преобразованные признаки.

Если редкие категории включены заданием для `min_frequency` или
`max_categories` значения, отличного от значения по умолчанию, и `drop_idx[i]` соответствует
редкой категории, удаляется вся редкая категория.

.. versionchanged:: 0.23
Добавлена возможность содержать значения `None`.
NoneType None
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](4,) ['season','holiday','workingday','weather']
n_features_in_ n_features_in_: int

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

.. versionadded:: 1.0
int 4
11 признаков
season_fall
season_spring
season_summer
season_winter
holiday_False
holiday_True
workingday_False
workingday_True
weather_clear
weather_misty
weather_rain
['month']
Параметры
n_knots n_knots: int, по умолчанию=5

Количество узлов сплайнов, если `knots` равно одному из значений
{'uniform', 'quantile'}. Должно быть не меньше 2. Игнорируется, если `knots`
задано в виде объекта, подобного массиву.
7
knots knots: {'uniform', 'quantile'} или объект, подобный массиву, формы (n_knots, n_features), по умолчанию='uniform'

Задает положения узлов так, чтобы первый узел <= признаки <= последний узел.

- Если задано 'uniform', `n_knots` узлов равномерно распределяются
от минимальных до максимальных значений признаков.
- Если задано 'quantile', узлы равномерно распределяются по квантилям
признаков.
- Если задан объект, подобный массиву, он непосредственно задает отсортированные положения
узлов, включая граничные узлы. Обратите внимание, что внутри реализации
перед первым узлом добавляется `degree` узлов, и столько же —
после последнего узла.
array([[ 0.],... [12.]])
extrapolation extrapolation: {'error', 'constant', 'linear', 'continue', 'periodic'}, по умолчанию='constant'

Если задано 'error', значения, выходящие за пределы минимальных и максимальных значений обучающих
признаков, вызывают `ValueError`. Если задано 'constant', значение
сплайнов при минимальном и максимальном значениях признаков используется
для постоянной экстраполяции. Если задано 'linear', применяется линейная экстраполяция.
Если задано 'continue', сплайны экстраполируются без изменений, то есть используется параметр
`extrapolate=True` в :class:`scipy.interpolate.BSpline`. Если
задано 'periodic', используются периодические сплайны с периодом, равным расстоянию
между первым и последним узлом. Периодические сплайны обеспечивают
равенство значений функции и ее производных в первом и последнем узлах.
Например, это позволяет избежать появления произвольного
скачка между 31 декабря и 1 января в признаках сплайна, полученных из
естественно периодического входного признака «день года». В этом случае
рекомендуется вручную задать значения узлов, чтобы контролировать период.
'periodic'
degree degree: int, по умолчанию=3

Степень полинома базиса сплайна. Должна быть неотрицательным
целым числом.
3
include_bias include_bias: bool, по умолчанию=True

Если задано False, последний элемент сплайна внутри диапазона данных
признака удаляется. Поскольку B-сплайны в сумме дают единицу для базисных функций сплайна
в каждой точке данных, они неявно включают свободный член,
то есть столбец из единиц. В линейной модели он действует как свободный член.
True
order order: {'C', 'F'}, по умолчанию='C'

Порядок выходного массива в плотном представлении. Порядок `'F'` ускоряет вычисления, но
может замедлить последующие оцениватели.
'C'
handle_missing handle_missing: {'error', 'zeros'}, по умолчанию='error'

Определяет способ обработки пропущенных значений.

- 'error' : Вызывает ошибку, если во время :meth:`fit` присутствуют значения `np.nan`.
- 'zeros' : Кодирует сплайны для пропущенных значений нулями `0`.

Обратите внимание, что `handle_missing='zeros'` отличается от предварительной замены пропущенных значений
нулями с последующим созданием базиса сплайна. Последний способ создает базисные функции сплайна,
ненулевые в точках с пропущенными значениями,
тогда как этот параметр просто задает нулевые значения всех базисных функций сплайна
для пропущенных значений.

.. versionadded:: 1.8
'error'
sparse_output sparse_output: bool, по умолчанию=False

Если задано True, возвращается разреженная матрица CSR, иначе возвращается массив.

.. versionadded:: 1.2
False
Обученные атрибуты
Имя Тип Значение
bsplines_ bsplines_: список формы (n_features,)

Список объектов BSplines, по одному для каждого признака.
list [<scipy.interp...x7841640d1250>]
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](1,) ['month']
n_features_in_ n_features_in_: int

Общее количество входных признаков.
int 1
n_features_out_ n_features_out_: int

Общее количество выходных признаков, вычисляемое как
`n_features * n_splines`, где `n_splines` —
количество базисных элементов B-сплайнов,
`n_knots + degree - 1` для непериодических сплайнов и
`n_knots - 1` для периодических.
Если задано `include_bias=False`, используется значение
`n_features * (n_splines - 1)`.
int 6
6 признаков
month_sp_0
month_sp_1
month_sp_2
month_sp_3
month_sp_4
month_sp_5
['weekday']
Параметры
n_knots n_knots: int, по умолчанию=5

Количество узлов сплайнов, если `knots` равно одному из значений
{'uniform', 'quantile'}. Должно быть не меньше 2. Игнорируется, если `knots`
задано в виде массива.
4
knots knots: {'uniform', 'quantile'} или массивоподобный объект формы (n_knots, n_features), по умолчанию='uniform'

Задайте положения узлов так, чтобы первый узел <= признаки <= последний узел.

- Если задано 'uniform', `n_knots` узлов равномерно распределяются
от минимальных до максимальных значений признаков.
- Если задано 'quantile', узлы равномерно распределяются по квантилям
признаков.
- Если задан массивоподобный объект, он непосредственно задаёт отсортированные положения
узлов, включая граничные узлы. Обратите внимание: внутри алгоритма
перед первым узлом добавляется `degree` узлов и столько же
после последнего узла.
array([[0. ...[7. ]])
extrapolation extrapolation: {'error', 'constant', 'linear', 'continue', 'periodic'}, по умолчанию='constant'

Если задано 'error', значения признаков за пределами минимальных и максимальных значений обучающих
данных вызывают `ValueError`. Если задано 'constant', для постоянной экстраполяции
используется значение сплайнов в минимальном и максимальном значении признаков.
Если задано 'linear', используется линейная экстраполяция.
Если задано 'continue', сплайны экстраполируются как есть, то есть используется параметр
`extrapolate=True` в :class:`scipy.interpolate.BSpline`. Если задано
'periodic', используются периодические сплайны с периодом, равным расстоянию
между первым и последним узлом. Периодические сплайны обеспечивают
равенство значений функции и её производных в первом и последнем узлах.
Например, это позволяет избежать произвольного скачка между 31 декабря и 1 января
в сплайновых признаках, полученных из естественным образом периодического входного признака «день года». В этом случае
рекомендуется вручную задать значения узлов, чтобы контролировать период.
'periodic'
degree degree: int, по умолчанию=3

Степень полинома базиса сплайна. Должна быть неотрицательным
целым числом.
3
include_bias include_bias: bool, по умолчанию=True

Если значение False, последний элемент сплайна в диапазоне данных
признака отбрасывается. Поскольку B-сплайны в сумме дают единицу для базисных
функций сплайна в каждой точке данных, они неявно включают свободный член,
то есть столбец из единиц. В линейных моделях он выполняет роль свободного члена.
True
order order: {'C', 'F'}, по умолчанию='C'

Порядок выходного массива в плотном формате. Порядок `'F'` вычисляется быстрее, но
может замедлить работу последующих оценщиков.
'C'
handle_missing handle_missing: {'error', 'zeros'}, по умолчанию='error'

Указывает способ обработки пропущенных значений.

- 'error' : Вызывает ошибку, если во время :meth:`fit` присутствуют значения `np.nan`.
- 'zeros' : Кодирует сплайны для пропущенных значений значениями `0`.

Обратите внимание, что `handle_missing='zeros'` отличается от предварительной замены пропущенных значений
нулями с последующим построением базиса сплайнов. Во втором случае создаются базисные функции сплайнов,
имеющие ненулевые значения для пропущенных значений,
тогда как этот параметр просто устанавливает значения всех базисных функций сплайнов в ноль для
пропущенных значений.

.. добавлено в версии:: 1.8
'error'
sparse_output sparse_output: bool, по умолчанию=False

Если задано True, возвращает разреженную матрицу CSR, иначе возвращает массив.

.. добавлено в версии:: 1.2
False
Обученные атрибуты
Имя Тип Значение
bsplines_ bsplines_: список формы (n_features,)

Список объектов BSplines, по одному для каждого признака.
list [<scipy.interp...x7841640d3550>]
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. добавлено в версии:: 1.0
ndarray[object](1,) ['weekday']
n_features_in_ n_features_in_: int

Общее количество входных признаков.
int 1
n_features_out_ n_features_out_: int

Общее количество выходных признаков, вычисляемое как
`n_features * n_splines`, где `n_splines` —
число базисных элементов B-сплайнов:
`n_knots + degree - 1` для непериодических сплайнов и
`n_knots - 1` для периодических.
Если `include_bias=False`, то количество равно только
`n_features * (n_splines - 1)`.
int 3
3 признака
weekday_sp_0
weekday_sp_1
weekday_sp_2
['hour']
Параметры
n_knots n_knots: int, по умолчанию=5

Количество узлов сплайнов, если `knots` равно одному из значений
{'uniform', 'quantile'}. Должно быть не меньше 2. Игнорируется, если `knots`
задано в виде массива.
13
knots knots: {'uniform', 'quantile'} или массивоподобный объект формы (n_knots, n_features), по умолчанию='uniform'

Задайте положения узлов так, чтобы первый узел <= признаки <= последний узел.

- Если задано 'uniform', `n_knots` узлов равномерно распределяются
от минимальных до максимальных значений признаков.
- Если задано 'quantile', узлы равномерно распределяются по квантилям
признаков.
- Если задан массивоподобный объект, он непосредственно задаёт отсортированные положения
узлов, включая граничные узлы. Обратите внимание: внутри алгоритма
перед первым узлом добавляется `degree` узлов и столько же
после последнего узла.
array([[ 0.],... [24.]])
extrapolation extrapolation: {'error', 'constant', 'linear', 'continue', 'periodic'}, по умолчанию='constant'

Если задано 'error', значения признаков за пределами минимальных и максимальных значений обучающих
данных вызывают `ValueError`. Если задано 'constant', для постоянной экстраполяции
используется значение сплайнов в минимальном и максимальном значении признаков.
Если задано 'linear', используется линейная экстраполяция.
Если задано 'continue', сплайны экстраполируются как есть, то есть используется параметр
`extrapolate=True` в :class:`scipy.interpolate.BSpline`. Если задано
'periodic', используются периодические сплайны с периодом, равным расстоянию
между первым и последним узлом. Периодические сплайны обеспечивают
равенство значений функции и её производных в первом и последнем узлах.
Например, это позволяет избежать произвольного скачка между 31 декабря и 1 января
в сплайновых признаках, полученных из естественным образом периодического входного признака «день года». В этом случае
рекомендуется вручную задать значения узлов, чтобы контролировать период.
'periodic'
degree degree: int, по умолчанию=3

Степень полинома базиса сплайна. Должна быть неотрицательным
целым числом.
3
include_bias include_bias: bool, по умолчанию=True

Если значение False, последний элемент сплайна в диапазоне данных
признака отбрасывается. Поскольку B-сплайны в сумме дают единицу для базисных
функций сплайна в каждой точке данных, они неявно включают свободный член,
то есть столбец из единиц. В линейных моделях он выполняет роль свободного члена.
True
order order: {'C', 'F'}, по умолчанию='C'

Порядок выходного массива в плотном формате. Порядок `'F'` вычисляется быстрее, но
может замедлить работу последующих оценщиков.
'C'
handle_missing handle_missing: {'error', 'zeros'}, по умолчанию='error'

Указывает способ обработки пропущенных значений.

- 'error' : Вызывает ошибку, если во время :meth:`fit` присутствуют значения `np.nan`.
- 'zeros' : Кодирует сплайны для пропущенных значений значениями `0`.

Обратите внимание, что `handle_missing='zeros'` отличается от предварительной замены пропущенных значений
нулями с последующим построением базиса сплайнов. Во втором случае создаются базисные функции сплайнов,
имеющие ненулевые значения для пропущенных значений,
тогда как этот параметр просто устанавливает значения всех базисных функций сплайнов в ноль для
пропущенных значений.

.. добавлено в версии:: 1.8
'error'
sparse_output sparse_output: bool, по умолчанию=False

Если задано True, возвращает разреженную матрицу CSR, иначе возвращает массив.

.. добавлено в версии:: 1.2
False
Обученные атрибуты
Имя Тип Значение
bsplines_ bsplines_: список формы (n_features,)

Список объектов BSplines, по одному для каждого признака.
list [<scipy.interp...x7841640d19d0>]
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. добавлено в версии:: 1.0
ndarray[object](1,) ['hour']
n_features_in_ n_features_in_: int

Общее количество входных признаков.
int 1
n_features_out_ n_features_out_: int

Общее количество выходных признаков, вычисляемое как
`n_features * n_splines`, где `n_splines` —
число базисных элементов B-сплайнов:
`n_knots + degree - 1` для непериодических сплайнов и
`n_knots - 1` для периодических.
Если `include_bias=False`, то количество равно только
`n_features * (n_splines - 1)`.
int 12
12 признаков
hour_sp_0
hour_sp_1
hour_sp_2
hour_sp_3
hour_sp_4
hour_sp_5
hour_sp_6
hour_sp_7
hour_sp_8
hour_sp_9
hour_sp_10
hour_sp_11
['year', 'temp', 'feel_temp', 'humidity', 'windspeed']
Параметры
feature_range feature_range: кортеж (min, max), по умолчанию=(0, 1)

Требуемый диапазон преобразованных данных.
(0, ...)
copy copy: bool, по умолчанию=True

Задайте False, чтобы выполнить нормализацию строк на месте и избежать
копирования (если входные данные уже являются массивом numpy).
True
clip clip: bool, по умолчанию=False

Задайте True, чтобы ограничить преобразованные значения отложенных данных
указанным `feature_range`.
Поскольку этот параметр ограничивает значения, `inverse_transform` может оказаться
не в состоянии восстановить исходные данные.

.. примечание::
Установка `clip=True` не предотвращает дрейф признаков (сдвиг распределения
между обучающими и тестовыми данными). Преобразованные значения ограничиваются
диапазоном `feature_range`, что помогает избежать непредвиденного поведения моделей,
чувствительных к выходу за пределы диапазона (например, линейных моделей). Используйте с осторожностью,
поскольку ограничение может исказить распределение тестовых данных.

.. добавлено в версии:: 0.24
False
Обученные атрибуты
Имя Тип Значение
data_max_ data_max_: ndarray формы (n_features,)

Максимум по каждому признаку, наблюдавшийся в данных

.. добавлено в версии:: 0.17
атрибут *data_max_*
ndarray[float64](5,) [ 1. ,39.36,50. , 1. ,57. ]
data_min_ data_min_: ndarray формы (n_features,)

Минимум по каждому признаку, наблюдавшийся в данных

.. добавлено в версии:: 0.17
атрибут *data_min_*
ndarray[float64](5,) [0. ,0.82,0.76,0.16,0. ]
data_range_ data_range_: ndarray формы (n_features,)

Диапазон значений каждого признака ``(data_max_ - data_min_)``, наблюдавшийся в данных

.. добавлено в версии:: 0.17
атрибут *data_range_*
ndarray[float64](5,) [ 1. ,38.54,49.24, 0.84,57. ]
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. добавлено в версии:: 1.0
ndarray[object](5,) ['year','temp','feel_temp','humidity','windspeed']
min_ min_: ndarray формы (n_features,)

Корректировка минимального значения для каждого признака. Эквивалентно
``min - X.min(axis=0) * self.scale_``
ndarray[float64](5,) [ 0. ,-0.02,-0.02,-0.19, 0. ]
n_features_in_ n_features_in_: int

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

.. добавлено в версии:: 0.24
int 5
n_samples_seen_ n_samples_seen_: int

Количество образцов, обработанных оценщиком.
Сбрасывается при новых вызовах fit, но увеличивается при последовательных
вызовах ``partial_fit``.
int 10000
scale_ scale_: ndarray формы (n_features,)

Относительный масштаб данных для каждого признака. Эквивалентно
``(max - min) / (X.max(axis=0) - X.min(axis=0))``

.. добавлено в версии:: 0.17
атрибут *scale_*.
ndarray[float64](5,) [1. ,0.03,0.02,1.19,0.02]
5 признаков
year
temp
feel_temp
humidity
windspeed
37 features
season_fall
season_spring
season_summer
season_winter
holiday_False
holiday_True
workingday_False
workingday_True
weather_clear
weather_misty
weather_rain
month_sp_0
month_sp_1
month_sp_2
month_sp_3
month_sp_4
month_sp_5
weekday_sp_0
weekday_sp_1
weekday_sp_2
hour_sp_0
hour_sp_1
hour_sp_2
hour_sp_3
hour_sp_4
hour_sp_5
hour_sp_6
hour_sp_7
hour_sp_8
hour_sp_9
hour_sp_10
hour_sp_11
year
temp
feel_temp
humidity
windspeed
Параметры
kernel kernel: str or callable, default='rbf'

Ядро, отображение которого аппроксимируется. Вызываемый объект должен принимать два аргумента
и именованные аргументы, переданные этому объекту как `kernel_params`, и
возвращать число с плавающей точкой.
'poly'
degree degree: float, default=None

Степень полиномиального ядра. Для других ядер не используется.
2
n_components n_components: int, default=100

Количество создаваемых признаков.
Сколько точек данных будет использовано для построения отображения.
300
random_state random_state: int, RandomState instance or None, default=None

Генератор псевдослучайных чисел для управления равномерной выборкой без
возвращения `n_components` элементов обучающих данных для построения
базисного ядра.
Передайте целое число, чтобы получать воспроизводимые результаты при многократных вызовах функции.
См. :term:`Glossary <random_state>`.
0
gamma gamma: float, default=None

Параметр gamma для ядер RBF, лапласова, полиномиального, экспоненциального chi2
и сигмоидального. Интерпретация значения по умолчанию определяется
ядром; см. документацию по sklearn.metrics.pairwise.
Для других ядер не используется.
None
coef0 coef0: float, default=None

Свободный коэффициент для полиномиального и сигмоидального ядер.
Для других ядер не используется.
None
kernel_params kernel_params: dict, default=None

Дополнительные параметры (именованные аргументы) для функции ядра, передаваемой
как вызываемый объект.
None
n_jobs n_jobs: int, default=None

Количество заданий для вычислений. Работа выполняется путём разбиения
матрицы ядра на `n_jobs` равных частей и их параллельного
вычисления.

``None`` означает 1, если только не используется контекст :obj:`joblib.parallel_backend`.
``-1`` означает использование всех процессоров. Подробнее см.
:term:`Glossary <n_jobs>`.

.. versionadded:: 0.24
None
Обученные атрибуты
Название Тип Значение
component_indices_ component_indices_: ndarray of shape (n_components)

Индексы ``components_`` в обучающей выборке.
ndarray[int64](300,) [9394, 898,2398,...,2685,5725,8051]
components_ components_: ndarray of shape (n_components, n_features)

Подмножество обучающих точек, используемых для построения карты признаков.
ndarray[float64](300, 37) [[0. ,0. ,1. ,...,0.6 ,0.63,0.33], [0. ,0. ,1. ,...,0.51,0.86,0.19], [1. ,0. ,0. ,...,0.74,0.7 ,0.3 ], ..., [1. ,0. ,0. ,...,0.65,0.64,0.11], [0. ,0. ,0. ,...,0.43,1. ,0. ], [0. ,1. ,0. ,...,0.63,0.25,0.12]]
feature_names_in_ feature_names_in_: ndarray of shape (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](37,) ['season_fall','season_spring','season_summer',...,'feel_temp','humidity', 'windspeed']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 37
normalization_ normalization_: ndarray of shape (n_components, n_components)

Матрица нормализации, необходимая для встраивания.
Квадратный корень матрицы ядра для ``components_``.
ndarray[float64](300, 300) [[ 71.07, 2.07, 11.92,..., -3.79, -1.28, -4.85], [ 2.07, 42.81, 2.42,..., 1.85, -1.69, -0.97], [ 11.92, 2.42,149.76,...,-20.1 , 0.77, -2.76], ..., [ -3.79, 1.85,-20.1 ,...,112.03, -0.52, -2.54], [ -1.28, -1.69, 0.77,..., -0.52, 27.07, 1.13], [ -4.85, -0.97, -2.76,..., -2.54, 1.13, 82.79]]
300 features
nystroem0
nystroem1
nystroem2
nystroem3
nystroem4
nystroem5
nystroem6
nystroem7
nystroem8
nystroem9
nystroem10
nystroem11
nystroem12
nystroem13
nystroem14
nystroem15
nystroem16
nystroem17
nystroem18
nystroem19
nystroem20
nystroem21
nystroem22
nystroem23
nystroem24
nystroem25
nystroem26
nystroem27
nystroem28
nystroem29
nystroem30
nystroem31
nystroem32
nystroem33
nystroem34
nystroem35
nystroem36
nystroem37
nystroem38
nystroem39
nystroem40
nystroem41
nystroem42
nystroem43
nystroem44
nystroem45
nystroem46
nystroem47
nystroem48
nystroem49
nystroem50
nystroem51
nystroem52
nystroem53
nystroem54
nystroem55
nystroem56
nystroem57
nystroem58
nystroem59
nystroem60
nystroem61
nystroem62
nystroem63
nystroem64
nystroem65
nystroem66
nystroem67
nystroem68
nystroem69
nystroem70
nystroem71
nystroem72
nystroem73
nystroem74
nystroem75
nystroem76
nystroem77
nystroem78
nystroem79
nystroem80
nystroem81
nystroem82
nystroem83
nystroem84
nystroem85
nystroem86
nystroem87
nystroem88
nystroem89
nystroem90
nystroem91
nystroem92
nystroem93
nystroem94
nystroem95
nystroem96
nystroem97
nystroem98
nystroem99
nystroem100
nystroem101
nystroem102
nystroem103
nystroem104
nystroem105
nystroem106
nystroem107
nystroem108
nystroem109
nystroem110
nystroem111
nystroem112
nystroem113
nystroem114
nystroem115
nystroem116
nystroem117
nystroem118
nystroem119
nystroem120
nystroem121
nystroem122
nystroem123
nystroem124
nystroem125
nystroem126
nystroem127
nystroem128
nystroem129
nystroem130
nystroem131
nystroem132
nystroem133
nystroem134
nystroem135
nystroem136
nystroem137
nystroem138
nystroem139
nystroem140
nystroem141
nystroem142
nystroem143
nystroem144
nystroem145
nystroem146
nystroem147
nystroem148
nystroem149
nystroem150
nystroem151
nystroem152
nystroem153
nystroem154
nystroem155
nystroem156
nystroem157
nystroem158
nystroem159
nystroem160
nystroem161
nystroem162
nystroem163
nystroem164
nystroem165
nystroem166
nystroem167
nystroem168
nystroem169
nystroem170
nystroem171
nystroem172
nystroem173
nystroem174
nystroem175
nystroem176
nystroem177
nystroem178
nystroem179
nystroem180
nystroem181
nystroem182
nystroem183
nystroem184
nystroem185
nystroem186
nystroem187
nystroem188
nystroem189
nystroem190
nystroem191
nystroem192
nystroem193
nystroem194
nystroem195
nystroem196
nystroem197
nystroem198
nystroem199
nystroem200
nystroem201
nystroem202
nystroem203
nystroem204
nystroem205
nystroem206
nystroem207
nystroem208
nystroem209
nystroem210
nystroem211
nystroem212
nystroem213
nystroem214
nystroem215
nystroem216
nystroem217
nystroem218
nystroem219
nystroem220
nystroem221
nystroem222
nystroem223
nystroem224
nystroem225
nystroem226
nystroem227
nystroem228
nystroem229
nystroem230
nystroem231
nystroem232
nystroem233
nystroem234
nystroem235
nystroem236
nystroem237
nystroem238
nystroem239
nystroem240
nystroem241
nystroem242
nystroem243
nystroem244
nystroem245
nystroem246
nystroem247
nystroem248
nystroem249
nystroem250
nystroem251
nystroem252
nystroem253
nystroem254
nystroem255
nystroem256
nystroem257
nystroem258
nystroem259
nystroem260
nystroem261
nystroem262
nystroem263
nystroem264
nystroem265
nystroem266
nystroem267
nystroem268
nystroem269
nystroem270
nystroem271
nystroem272
nystroem273
nystroem274
nystroem275
nystroem276
nystroem277
nystroem278
nystroem279
nystroem280
nystroem281
nystroem282
nystroem283
nystroem284
nystroem285
nystroem286
nystroem287
nystroem288
nystroem289
nystroem290
nystroem291
nystroem292
nystroem293
nystroem294
nystroem295
nystroem296
nystroem297
nystroem298
nystroem299
Параметры
alphas alphas: array-like of shape (n_alphas,), default=(0.1, 1.0, 10.0)

Массив значений alpha для проверки.
Сила регуляризации; должна быть положительным числом с плавающей точкой. Регуляризация
улучшает обусловленность задачи и уменьшает дисперсию
оценок. Более высокие значения соответствуют более сильной регуляризации.
Параметр Alpha соответствует ``1 / (2C)`` в других линейных моделях, таких как
:class:`~sklearn.linear_model.LogisticRegression` или
:class:`~sklearn.svm.LinearSVC`.
При использовании перекрёстной проверки Leave-One-Out значения alpha должны быть строго положительными.

Пример того, как сила регуляризации влияет на коэффициенты модели,
см. в :ref:`sphx_glr_auto_examples_linear_model_plot_ridge_coeffs.py`.
array([1.0000...00000000e+06])
fit_intercept fit_intercept: bool, default=True

Следует ли вычислять свободный член для этой модели. Если задано
значение false, свободный член не будет использоваться при вычислениях
(то есть предполагается, что данные центрированы).
True
scoring scoring: str, callable, default=None

Метод оценки для перекрёстной проверки. Варианты:

- str: доступные варианты см. в :ref:`scoring_string_names`.
- callable: вызываемый объект-оценщик (например, функция) с сигнатурой
``scorer(estimator, X, y)``. Подробности см. в :ref:`scoring_callable`.
- `None`: отрицательная :ref:`среднеквадратичная ошибка <mean_squared_error>`, если cv равно
None (то есть при перекрёстной проверке leave-one-out), или
:ref:`коэффициент детерминации <r2_score>` (:math:`R^2`) в противном случае.
None
cv cv: int, cross-validation generator or an iterable, default=None

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

- None — использовать эффективную перекрёстную проверку Leave-One-Out
- целое число — указать количество фолдов,
- :term:`CV splitter`,
- итерируемый объект, выдающий пары разбиений (train, test) в виде массивов индексов.

Для целых значений/None, если ``y`` является бинарным или многоклассовым,
используется :class:`~sklearn.model_selection.StratifiedKFold`, иначе
используется :class:`~sklearn.model_selection.KFold`.

Различные стратегии перекрёстной проверки, которые можно использовать здесь,
описаны в :ref:`Руководстве пользователя <cross_validation>`.
None
gcv_mode gcv_mode: {'auto', 'svd', 'eigen'}, default='auto'

Флаг, указывающий, какую стратегию использовать при выполнении
перекрёстной проверки Leave-One-Out. Варианты::

'auto' : то же, что и 'eigen'
'svd' : использовать сингулярное разложение матрицы X, если X плотная;
если X разреженная, использовать 'eigen'
'eigen' : использовать спектральное разложение X X', если n_samples <= n_features,
или X' X, если n_features < n_samples

Режим 'auto' используется по умолчанию и предназначен для выбора более дешёвого
варианта в зависимости от формы и разреженности обучающих данных.
None
store_cv_results store_cv_results: bool, default=False

Флаг, указывающий, следует ли сохранять значения перекрёстной проверки,
соответствующие каждому alpha, в атрибуте ``cv_results_`` (см.
ниже). Этот флаг совместим только с ``cv=None`` (то есть при использовании
перекрёстной проверки Leave-One-Out).

.. versionchanged:: 1.5
Имя параметра изменено с `store_cv_values` на `store_cv_results`.
False
alpha_per_target alpha_per_target: bool, default=False

Флаг, указывающий, нужно ли оптимизировать значение alpha (выбираемое из
списка параметра `alphas`) отдельно для каждой целевой переменной (в задачах
с несколькими выходами: несколькими целевыми переменными для прогнозирования). Если задано `True`, после
обучения атрибут `alpha_` будет содержать значение для каждой целевой переменной.
Если задано `False`, для всех целевых переменных используется одно значение alpha.
Этот флаг совместим только с ``cv=None`` (то есть при использовании
перекрёстной проверки Leave-One-Out).

.. versionadded:: 0.24
False
Обученные атрибуты
Название Тип Значение
alpha_ alpha_: float or ndarray of shape (n_targets,)

Оценённый параметр регуляризации или, если ``alpha_per_target=True``,
оценённый параметр регуляризации для каждой целевой переменной.
float 0.0003162
best_score_ best_score_: float or ndarray of shape (n_targets,)

Оценка базового оценщика с наилучшим значением alpha или,
если ``alpha_per_target=True``, оценка для каждой целевой переменной.

.. versionadded:: 0.23
float64 -0.00243
coef_ coef_: ndarray of shape (n_features) or (n_targets, n_features)

Вектор(ы) весов.
ndarray[float64](300,) [ 4.39, 1.21,-0.28,...,-0.86, 1.09, 6.02]
intercept_ intercept_: float or ndarray of shape (n_targets,)

Свободный член функции принятия решений. При ``fit_intercept = False``
устанавливается равным 0.0.
float64 1.956
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 300


Мы видим, что эта модель почти не уступает по производительности деревьям с градиентным бустингом: средняя ошибка составляет около 5% от максимального спроса.

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

Для полноты картины мы также оцениваем сочетание унитарного кодирования и аппроксимации ядра:

one_hot_poly_pipeline = make_pipeline(
    ColumnTransformer(
        transformers=[
            ("categorical", one_hot_encoder, categorical_columns),
            ("one_hot_time", one_hot_encoder, ["hour", "weekday", "month"]),
        ],
        remainder="passthrough",
        verbose_feature_names_out=False,
    ),
    Nystroem(kernel="poly", degree=2, n_components=300, random_state=0),
    RidgeCV(alphas=alphas),
).set_output(transform="pandas")
evaluate(one_hot_poly_pipeline, X, y, cv=ts_cv)
Mean Absolute Error:     0.082 +/- 0.006
Root Mean Squared Error: 0.111 +/- 0.011
Pipeline(steps=[('columntransformer',
                 ColumnTransformer(remainder='passthrough',
                                   transformers=[('categorical',
                                                  OneHotEncoder(handle_unknown='ignore',
                                                                sparse_output=False),
                                                  Index(['season', 'holiday', 'workingday', 'weather'], dtype='str')),
                                                 ('one_hot_time',
                                                  OneHotEncoder(handle_unknown='ignore',
                                                                sparse_output=False),
                                                  ['hour', 'weekday',
                                                   'month'])],
                                   verbose_feature...
                 RidgeCV(alphas=array([1.00000000e-06, 3.16227766e-06, 1.00000000e-05, 3.16227766e-05,
       1.00000000e-04, 3.16227766e-04, 1.00000000e-03, 3.16227766e-03,
       1.00000000e-02, 3.16227766e-02, 1.00000000e-01, 3.16227766e-01,
       1.00000000e+00, 3.16227766e+00, 1.00000000e+01, 3.16227766e+01,
       1.00000000e+02, 3.16227766e+02, 1.00000000e+03, 3.16227766e+03,
       1.00000000e+04, 3.16227766e+04, 1.00000000e+05, 3.16227766e+05,
       1.00000000e+06])))])
В среде Jupyter повторно выполните эту ячейку, чтобы отобразить HTML-представление, или доверьте этой записной книжке.
На GitHub HTML-представление отобразить невозможно; попробуйте загрузить эту страницу с помощью nbviewer.org.
Параметры
steps steps: список кортежей

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

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

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

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

.. versionadded:: 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
Обученные атрибуты
Имя Тип Значение
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](12,) ['season','year','month',...,'feel_temp','humidity','windspeed']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 12
Параметры
transformers transformers: список кортежей

Список кортежей (имя, преобразователь, столбцы), задающих
объекты-преобразователи, применяемые к подмножествам данных.

name : str
Как и в Pipeline и FeatureUnion, это позволяет задавать преобразователь и
его параметры с помощью ``set_params`` и искать их в процессе поиска по сетке.
transformer : {'drop', 'passthrough'} или оцениватель
Оцениватель должен поддерживать :term:`fit` и :term:`transform`.
Также допускаются специальные строки 'drop' и 'passthrough',
указывающие соответственно на удаление столбцов или передачу их без преобразования.
columns : str, массивоподобный объект из str, int, массивоподобный объект из int, массивоподобный объект из bool, срез или вызываемый объект
Индексирует данные по второй оси. Целые числа трактуются как
позиционные индексы столбцов, а строки могут ссылаться на столбцы DataFrame
по имени. Если ``transformer`` ожидает, что X будет одномерным массивоподобным объектом (вектором),
следует использовать скалярную строку или целое число; в противном случае
преобразователю будет передан двумерный массив.
Вызываемому объекту передаются входные данные `X`; он может вернуть любое из
перечисленного выше. Чтобы выбрать несколько столбцов по имени или типу данных, можно использовать
:obj:`make_column_selector`.
[('categorical', ...), ('one_hot_time', ...)]
remainder remainder: {'drop', 'passthrough'} или оцениватель, по умолчанию 'drop'

По умолчанию преобразуются и объединяются в выходных данных только указанные в `transformers` столбцы,
а неуказанные столбцы отбрасываются (значение по умолчанию — ``'drop'``).
Если задать ``remainder='passthrough'``, все остальные столбцы, не указанные в `transformers`,
но присутствовавшие в данных, переданных в `fit`, будут автоматически переданы без изменений. Это подмножество столбцов
объединяется с результатами преобразователей. Для фреймов данных
дополнительные столбцы, отсутствовавшие во время `fit`, не будут включены в результат
`transform`.
Если в качестве ``remainder`` задан оцениватель, для оставшихся
неуказанных столбцов будет использоваться этот оцениватель. Он
должен поддерживать :term:`fit` и :term:`transform`.
Обратите внимание: для использования этой возможности порядок столбцов DataFrame,
передаваемых в :term:`fit` и :term:`transform`, должен совпадать.
'passthrough'
verbose_feature_names_out verbose_feature_names_out: bool, str или Callable[[str, str], str], по умолчанию True

- Если True, :meth:`ColumnTransformer.get_feature_names_out` добавит к именам
всех признаков префикс с именем преобразователя, создавшего этот
признак. Это эквивалентно настройке
`verbose_feature_names_out="{transformer_name}__{feature_name}"`.
- Если False, :meth:`ColumnTransformer.get_feature_names_out` не будет
добавлять префиксы к именам признаков и выдаст ошибку, если имена признаков не уникальны.
- Если задано ``Callable[[str, str], str]``,
:meth:`ColumnTransformer.get_feature_names_out` переименует все признаки,
используя имя преобразователя. Первый аргумент вызываемого объекта — имя
преобразователя, второй — имя признака. Возвращённая
строка станет новым именем признака.
- Если задано ``str``, это должна быть строка, готовая к форматированию. Указанная строка будет
отформатирована с использованием двух имён полей: ``transformer_name`` и ``feature_name``.
например, ``"{feature_name}__{transformer_name}"``. Дополнительные сведения см. в описании метода
стандартной библиотеки :meth:`str.format`.

.. versionadded:: 1.0

.. versionchanged:: 1.6
`verbose_feature_names_out` может быть вызываемым объектом или форматируемой строкой.
False
sparse_threshold sparse_threshold: float, по умолчанию 0.3

Если результаты разных преобразователей содержат разреженные матрицы,
они будут объединены в разреженную матрицу, если общая плотность
ниже этого значения. Используйте ``sparse_threshold=0``, чтобы всегда возвращать
плотную матрицу. Если преобразованные выходные данные содержат только плотные данные,
объединённый результат будет плотным, а этот параметр будет проигнорирован.
0.3
n_jobs n_jobs: int, по умолчанию None

Количество параллельно выполняемых заданий.
``None`` означает 1, если не используется контекст :obj:`joblib.parallel_backend`.
``-1`` означает использование всех процессоров. Подробнее см. :term:`глоссарий <n_jobs>`.
None
transformer_weights transformer_weights: dict, по умолчанию None

Множители для признаков каждого преобразователя. Результат
преобразователя умножается на соответствующий множитель. Ключи — имена преобразователей,
значения — множители.
None
verbose verbose: bool, по умолчанию False

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

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

.. versionadded:: 1.0
ndarray[object](12,) ['season','year','month',...,'feel_temp','humidity','windspeed']
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 12
named_transformers_ named_transformers_: :class:`~sklearn.utils.Bunch`

Атрибут только для чтения, позволяющий получить доступ к любому преобразователю по заданному имени.
Ключи — имена преобразователей, значения — обученные объекты-преобразователи.
Bunch {'categorical...'one-to-one')}
output_indices_ output_indices_: dict

Словарь, сопоставляющий каждому имени преобразователя срез, соответствующий
индексам в преобразованных выходных данных. Это полезно для определения того,
какой преобразователь отвечает за те или иные преобразованные
признаки.

.. versionadded:: 1.0
dict {'ca...al': slice(0, 11, None), 'on...me': slice(11, 54, None), 're...er': slice(54, 59, None)}
sparse_output_ sparse_output_: bool

Логический флаг, указывающий, является ли результат ``transform``
разреженной матрицей или плотным массивом numpy; это зависит от результатов
отдельных преобразователей и параметра `sparse_threshold`.
bool False
transformers_ transformers_: список

Набор обученных преобразователей в виде кортежей (имя,
обученный_преобразователь, столбец). `fitted_transformer` может быть оценивателем
или значением `'drop'`; значение `'passthrough'` заменяется эквивалентным
:class:`~sklearn.preprocessing.FunctionTransformer`. Если не было выбрано
ни одного столбца, здесь будет необученный преобразователь. Если
остались столбцы, последним элементом будет кортеж вида:
('remainder', transformer, remaining_columns), соответствующий параметру
``remainder``. Если остались столбцы, то
``len(transformers_)==len(transformers)+1``, в противном случае
``len(transformers_)==len(transformers)``.

.. versionadded:: 1.7
Формат оставшихся столбцов теперь старается соответствовать формату остальных
преобразователей: если все столбцы были заданы именами столбцов (`str`),
оставшиеся столбцы сохраняются как имена столбцов; если все столбцы были заданы
масками (`bool`), оставшиеся столбцы также сохраняются как маски; во всех остальных случаях
оставшиеся столбцы сохраняются как индексы (`int`).
list [('ca...al', OneHotEncoder..._output=False), Index(['seaso..., dtype='str')), ('on...me', OneHotEncoder..._output=False), ['hour', 'weekday', 'month']), ('re...er', FunctionTrans...='one-to-one'), ['year', 'temp', 'fe...mp', 'hu...ty', ...])]
Index(['season', 'holiday', 'workingday', 'weather'], dtype='str')
Параметры
sparse_output sparse_output: bool, по умолчанию=True

Если значение равно ``True``, возвращается разреженная матрица/массив SciPy
в формате "Compressed Sparse Row" (CSR).

.. versionadded:: 1.2
`sparse` переименован в `sparse_output`
False
handle_unknown handle_unknown: {'error', 'ignore', 'infrequent_if_exist', 'warn'}, по умолчанию='error'

Задает способ обработки неизвестных категорий во время :meth:`transform`.

- 'error' : Вызывает ошибку, если при преобразовании обнаружена неизвестная категория.
- 'ignore' : Если при преобразовании обнаружена неизвестная категория,
результирующие столбцы one-hot-кодирования для этого признака
будут состоять из одних нулей. При обратном преобразовании неизвестная категория
будет обозначена как None.
- 'infrequent_if_exist' : Если при преобразовании обнаружена неизвестная категория,
результирующие столбцы one-hot-кодирования для этого признака
будут соответствовать редкой категории, если она существует. Редкая
категория будет помещена на последнюю позицию
в кодировке. При обратном преобразовании неизвестная категория будет
сопоставлена категории, обозначенной как `'infrequent'`, если она существует. Если
категория `'infrequent'` не существует, :meth:`transform` и
:meth:`inverse_transform` будут обрабатывать неизвестную категорию так же, как
при `handle_unknown='ignore'`. Редкие категории определяются на основе
`min_frequency` и `max_categories`. Подробнее см. в
:ref:`Руководстве пользователя <encoder_infrequent_categories>`.
- 'warn' : Если при преобразовании обнаружена неизвестная категория,
выдается предупреждение, после чего кодирование выполняется так, как описано для
`handle_unknown="infrequent_if_exist"`.

.. versionchanged:: 1.1
Добавлен `'infrequent_if_exist'` для автоматической обработки неизвестных
и редких категорий.

.. versionadded:: 1.6
В версии 1.6 добавлен параметр `"warn"`.
'ignore'
categories categories: 'auto' или список массивов, по умолчанию='auto'

Категории (уникальные значения) для каждого признака:

- 'auto' : Автоматически определять категории по обучающим данным.
- list : ``categories[i]`` содержит категории, ожидаемые в i-м
столбце. Переданные категории не должны смешивать строковые и числовые
значения в пределах одного признака; числовые значения должны быть
отсортированы.

Используемые категории можно найти в атрибуте ``categories_``.

.. versionadded:: 0.20
'auto'
drop drop: {'first', 'if_binary'} или массивоподобная структура формы (n_features,), по умолчанию=None

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

Однако исключение одной категории нарушает симметрию исходного
представления и поэтому может внести смещение в последующие модели,
например в модели линейной классификации или регрессии со штрафом.

- None : сохранять все признаки (значение по умолчанию).
- 'first' : исключать первую категорию каждого признака. Если присутствует только одна
категория, признак будет исключен целиком.
- 'if_binary' : исключать первую категорию каждого признака с двумя
категориями. Признаки с 1 или более чем 2 категориями
остаются без изменений.
- array : ``drop[i]`` — категория признака ``X[:, i]``, которую
следует исключить.

Если для группировки редких категорий настроен параметр `max_categories` или `min_frequency`,
исключение выполняется после группировки.

.. versionadded:: 0.21
Параметр `drop` добавлен в версии 0.21.

.. versionchanged:: 0.23
Параметр `drop='if_binary'` добавлен в версии 0.23.

.. versionchanged:: 1.1
Добавлена поддержка исключения редких категорий.
None
dtype dtype: числовой тип, по умолчанию=np.float64

Требуемый тип данных выходных значений.
<class 'numpy.float64'>
min_frequency min_frequency: int или float, по умолчанию=None

Задает минимальную частоту, ниже которой категория
считается редкой.

- Если значение имеет тип `int`, редкими считаются категории с меньшей
частотой.

- Если значение имеет тип `float`, редкими считаются категории с частотой меньше
`min_frequency * n_samples`.

.. versionadded:: 1.1
Подробнее см. в :ref:`Руководстве пользователя <encoder_infrequent_categories>`.
None
max_categories max_categories: int, по умолчанию=None

Задает верхний предел числа выходных признаков для каждого входного
признака с учетом редких категорий. Если имеются редкие
категории, `max_categories` включает категорию, представляющую
редкие категории, наряду с частыми категориями. Если значение равно `None`,
число выходных признаков не ограничено.

.. versionadded:: 1.1
Подробнее см. в :ref:`Руководстве пользователя <encoder_infrequent_categories>`.
None
feature_name_combiner feature_name_combiner: "concat" или вызываемый объект, по умолчанию="concat"

Вызываемый объект с сигнатурой `def callable(input_feature, category)`, возвращающий
строку. Используется для создания имен признаков, возвращаемых методом
:meth:`get_feature_names_out`.

`"concat"` объединяет имя закодированного признака и категорию с помощью
`feature + "_" + str(category)`. Например, для признака X со значениями 1, 6, 7 будут созданы
имена признаков `X_1, X_6, X_7`.

.. versionadded:: 1.3
'concat'
Обученные атрибуты
Имя Тип Значение
categories_ categories_: список массивов

Категории каждого признака, определенные во время обучения
(в порядке признаков в X и в соответствии с результатом
``transform``). Включает категорию, указанную в ``drop``
(если она задана).
list [array(['fall'... dtype=object), array(['False... dtype=object), array(['False... dtype=object), array(['clear... dtype=object)]
drop_idx_ drop_idx_: массив формы (n_features,)

- ``drop_idx_[i]`` — индекс категории в ``categories_[i]``,
которую следует исключить для каждого признака.
- ``drop_idx_[i] = None``, если для признака с индексом ``i`` не нужно исключать
категорию, например когда `drop='if_binary'`, а признак не является
бинарным.
- ``drop_idx_ = None``, если сохраняются все преобразованные признаки.

Если поддержка редких категорий включена путем задания `min_frequency` или
`max_categories` не в значении по умолчанию, а `drop_idx[i]` соответствует
редкой категории, исключается вся редкая категория.

.. versionchanged:: 0.23
Добавлена возможность содержать значения `None`.
NoneType None
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](4,) ['season','holiday','workingday','weather']
n_features_in_ n_features_in_: int

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

.. versionadded:: 1.0
int 4
11 признаков
season_fall
season_spring
season_summer
season_winter
holiday_False
holiday_True
workingday_False
workingday_True
weather_clear
weather_misty
weather_rain
['hour', 'weekday', 'month']
Параметры
sparse_output sparse_output: bool, по умолчанию=True

Если значение равно ``True``, возвращается разреженная матрица/массив SciPy
в формате "Compressed Sparse Row" (CSR).

.. versionadded:: 1.2
`sparse` переименован в `sparse_output`
False
handle_unknown handle_unknown: {'error', 'ignore', 'infrequent_if_exist', 'warn'}, по умолчанию='error'

Задает способ обработки неизвестных категорий во время :meth:`transform`.

- 'error' : Вызывает ошибку, если при преобразовании обнаружена неизвестная категория.
- 'ignore' : Если при преобразовании обнаружена неизвестная категория,
результирующие столбцы one-hot-кодирования для этого признака
будут состоять из одних нулей. При обратном преобразовании неизвестная категория
будет обозначена как None.
- 'infrequent_if_exist' : Если при преобразовании обнаружена неизвестная категория,
результирующие столбцы one-hot-кодирования для этого признака
будут соответствовать редкой категории, если она существует. Редкая
категория будет помещена на последнюю позицию
в кодировке. При обратном преобразовании неизвестная категория будет
сопоставлена категории, обозначенной как `'infrequent'`, если она существует. Если
категория `'infrequent'` не существует, :meth:`transform` и
:meth:`inverse_transform` будут обрабатывать неизвестную категорию так же, как
при `handle_unknown='ignore'`. Редкие категории определяются на основе
`min_frequency` и `max_categories`. Подробнее см. в
:ref:`Руководстве пользователя <encoder_infrequent_categories>`.
- 'warn' : Если при преобразовании обнаружена неизвестная категория,
выдается предупреждение, после чего кодирование выполняется так, как описано для
`handle_unknown="infrequent_if_exist"`.

.. versionchanged:: 1.1
Добавлен `'infrequent_if_exist'` для автоматической обработки неизвестных
и редких категорий.

.. versionadded:: 1.6
В версии 1.6 добавлен параметр `"warn"`.
'ignore'
categories categories: 'auto' или список массивов, по умолчанию='auto'

Категории (уникальные значения) для каждого признака:

- 'auto' : Автоматически определять категории по обучающим данным.
- list : ``categories[i]`` содержит категории, ожидаемые в i-м
столбце. Переданные категории не должны смешивать строковые и числовые
значения в пределах одного признака; числовые значения должны быть
отсортированы.

Используемые категории можно найти в атрибуте ``categories_``.

.. versionadded:: 0.20
'auto'
drop drop: {'first', 'if_binary'} или массивоподобная структура формы (n_features,), по умолчанию=None

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

Однако исключение одной категории нарушает симметрию исходного
представления и поэтому может внести смещение в последующие модели,
например в модели линейной классификации или регрессии со штрафом.

- None : сохранять все признаки (значение по умолчанию).
- 'first' : исключать первую категорию каждого признака. Если присутствует только одна
категория, признак будет исключен целиком.
- 'if_binary' : исключать первую категорию каждого признака с двумя
категориями. Признаки с 1 или более чем 2 категориями
остаются без изменений.
- array : ``drop[i]`` — категория признака ``X[:, i]``, которую
следует исключить.

Если для группировки редких категорий настроен параметр `max_categories` или `min_frequency`,
исключение выполняется после группировки.

.. versionadded:: 0.21
Параметр `drop` добавлен в версии 0.21.

.. versionchanged:: 0.23
Параметр `drop='if_binary'` добавлен в версии 0.23.

.. versionchanged:: 1.1
Добавлена поддержка исключения редких категорий.
None
dtype dtype: числовой тип, по умолчанию=np.float64

Требуемый тип данных выходных значений.
<class 'numpy.float64'>
min_frequency min_frequency: int или float, по умолчанию=None

Задает минимальную частоту, ниже которой категория
считается редкой.

- Если значение имеет тип `int`, редкими считаются категории с меньшей
частотой.

- Если значение имеет тип `float`, редкими считаются категории с частотой меньше
`min_frequency * n_samples`.

.. versionadded:: 1.1
Подробнее см. в :ref:`Руководстве пользователя <encoder_infrequent_categories>`.
None
max_categories max_categories: int, по умолчанию=None

Задает верхний предел числа выходных признаков для каждого входного
признака с учетом редких категорий. Если имеются редкие
категории, `max_categories` включает категорию, представляющую
редкие категории, наряду с частыми категориями. Если значение равно `None`,
число выходных признаков не ограничено.

.. versionadded:: 1.1
Подробнее см. в :ref:`Руководстве пользователя <encoder_infrequent_categories>`.
None
feature_name_combiner feature_name_combiner: "concat" или вызываемый объект, по умолчанию="concat"

Вызываемый объект с сигнатурой `def callable(input_feature, category)`, возвращающий
строку. Используется для создания имен признаков, возвращаемых методом
:meth:`get_feature_names_out`.

`"concat"` объединяет имя закодированного признака и категорию с помощью
`feature + "_" + str(category)`. Например, для признака X со значениями 1, 6, 7 будут созданы
имена признаков `X_1, X_6, X_7`.

.. versionadded:: 1.3
'concat'
Обученные атрибуты
Имя Тип Значение
categories_ categories_: список массивов

Категории каждого признака, определенные во время обучения
(в порядке признаков в X и в соответствии с результатом
``transform``). Включает категорию, указанную в ``drop``
(если она задана).
list [array([ 0, 1..., 21, 22, 23]), array([0, 1, 2, 3, 4, 5, 6]), array([ 1, 2..., 10, 11, 12])]
drop_idx_ drop_idx_: массив формы (n_features,)

- ``drop_idx_[i]`` — индекс категории в ``categories_[i]``,
которую следует исключить для каждого признака.
- ``drop_idx_[i] = None``, если для признака с индексом ``i`` не нужно исключать
категорию, например когда `drop='if_binary'`, а признак не является
бинарным.
- ``drop_idx_ = None``, если сохраняются все преобразованные признаки.

Если поддержка редких категорий включена путем задания `min_frequency` или
`max_categories` не в значении по умолчанию, а `drop_idx[i]` соответствует
редкой категории, исключается вся редкая категория.

.. versionchanged:: 0.23
Добавлена возможность содержать значения `None`.
NoneType None
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](3,) ['hour','weekday','month']
n_features_in_ n_features_in_: int

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

.. versionadded:: 1.0
int 3
43 признака
hour_0
hour_1
hour_2
hour_3
hour_4
hour_5
hour_6
hour_7
hour_8
hour_9
hour_10
hour_11
hour_12
hour_13
hour_14
hour_15
hour_16
hour_17
hour_18
hour_19
hour_20
hour_21
hour_22
hour_23
weekday_0
weekday_1
weekday_2
weekday_3
weekday_4
weekday_5
weekday_6
month_1
month_2
month_3
month_4
month_5
month_6
month_7
month_8
month_9
month_10
month_11
month_12
['year', 'temp', 'feel_temp', 'humidity', 'windspeed']
5 признаков
year
temp
feel_temp
humidity
windspeed
59 признаков
season_fall
season_spring
season_summer
season_winter
holiday_False
holiday_True
workingday_False
workingday_True
weather_clear
weather_misty
weather_rain
hour_0
hour_1
hour_2
hour_3
hour_4
hour_5
hour_6
hour_7
hour_8
hour_9
hour_10
hour_11
hour_12
hour_13
hour_14
hour_15
hour_16
hour_17
hour_18
hour_19
hour_20
hour_21
hour_22
hour_23
weekday_0
weekday_1
weekday_2
weekday_3
weekday_4
weekday_5
weekday_6
month_1
month_2
month_3
month_4
month_5
month_6
month_7
month_8
month_9
month_10
month_11
month_12
year
temp
feel_temp
humidity
windspeed
Параметры
kernel kernel: str or callable, default='rbf'

Аппроксимируемое отображение ядра. Вызываемый объект должен принимать два аргумента
и именованные аргументы, переданные этому объекту как `kernel_params`, и
возвращать число с плавающей точкой.
'poly'
degree degree: float, default=None

Степень полиномиального ядра. Для других ядер не используется.
2
n_components n_components: int, default=100

Количество создаваемых признаков.
Количество точек данных, используемых для построения отображения.
300
random_state random_state: int, RandomState instance or None, default=None

Генератор псевдослучайных чисел, управляющий равномерной выборкой без
возвращения `n_components` элементов обучающих данных для построения
базисного ядра.
Передайте целое число, чтобы получать воспроизводимые результаты при нескольких вызовах функции.
См. :term:`глоссарий <random_state>`.
0
gamma gamma: float, default=None

Параметр гамма для ядер RBF, лапласова, полиномиального, экспоненциального хи-квадрат
и сигмоидального. Интерпретация значения по умолчанию определяется
ядром; см. документацию по sklearn.metrics.pairwise.
Для других ядер не используется.
None
coef0 coef0: float, default=None

Свободный коэффициент для полиномиального и сигмоидального ядер.
Для других ядер не используется.
None
kernel_params kernel_params: dict, default=None

Дополнительные параметры (именованные аргументы) для функции ядра, передаваемой
в виде вызываемого объекта.
None
n_jobs n_jobs: int, default=None

Количество заданий, используемых для вычислений. Для этого матрица ядра делится
на `n_jobs` равных частей, которые вычисляются
параллельно.

``None`` означает 1, если только не используется контекст :obj:`joblib.parallel_backend`.
``-1`` означает использование всех процессоров. Подробнее см. :term:`глоссарий <n_jobs>`.

.. добавлено в версии:: 0.24
None
Обученные атрибуты
Имя Тип Значение
component_indices_ component_indices_: ndarray of shape (n_components)

Индексы элементов ``components_`` в обучающем наборе.
ndarray[int64](300,) [9394, 898,2398,...,2685,5725,8051]
components_ components_: ndarray of shape (n_components, n_features)

Подмножество обучающих точек, используемое для построения карты признаков.
ndarray[float64](300, 59) [[ 0. , 0. , 1. ,...,30.3 , 0.69,19. ], [ 0. , 0. , 1. ,...,25.76, 0.88,11. ], [ 1. , 0. , 0. ,...,37.12, 0.75,17. ], ..., [ 1. , 0. , 0. ,...,32.58, 0.7 , 6. ], [ 0. , 0. , 0. ,...,21.97, 1. , 0. ], [ 0. , 1. , 0. ,...,31.82, 0.37, 7. ]]
feature_names_in_ feature_names_in_: ndarray of shape (`n_features_in_`,)

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

.. добавлено в версии:: 1.0
ndarray[object](59,) ['season_fall','season_spring','season_summer',...,'feel_temp','humidity', 'windspeed']
n_features_in_ n_features_in_: int

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

.. добавлено в версии:: 0.24
int 59
normalization_ normalization_: ndarray of shape (n_components, n_components)

Матрица нормализации, необходимая для встраивания.
Квадратный корень матрицы ядра для ``components_``.
ndarray[float64](300, 300) [[14.11,-0.59, 0.34,..., 0.2 ,-0.49,-0.07], [-0.59,11.24, 0.12,...,-0.03, 0.18,-0.09], [ 0.34, 0.12,11.45,...,-0.43,-0.15, 0.04], ..., [ 0.2 ,-0.03,-0.43,...,11.77,-0.74, 0.35], [-0.49, 0.18,-0.15,...,-0.74,10.65, 0.24], [-0.07,-0.09, 0.04,..., 0.35, 0.24, 8.52]]
300 признаков
nystroem0
nystroem1
nystroem2
nystroem3
nystroem4
nystroem5
nystroem6
nystroem7
nystroem8
nystroem9
nystroem10
nystroem11
nystroem12
nystroem13
nystroem14
nystroem15
nystroem16
nystroem17
nystroem18
nystroem19
nystroem20
nystroem21
nystroem22
nystroem23
nystroem24
nystroem25
nystroem26
nystroem27
nystroem28
nystroem29
nystroem30
nystroem31
nystroem32
nystroem33
nystroem34
nystroem35
nystroem36
nystroem37
nystroem38
nystroem39
nystroem40
nystroem41
nystroem42
nystroem43
nystroem44
nystroem45
nystroem46
nystroem47
nystroem48
nystroem49
nystroem50
nystroem51
nystroem52
nystroem53
nystroem54
nystroem55
nystroem56
nystroem57
nystroem58
nystroem59
nystroem60
nystroem61
nystroem62
nystroem63
nystroem64
nystroem65
nystroem66
nystroem67
nystroem68
nystroem69
nystroem70
nystroem71
nystroem72
nystroem73
nystroem74
nystroem75
nystroem76
nystroem77
nystroem78
nystroem79
nystroem80
nystroem81
nystroem82
nystroem83
nystroem84
nystroem85
nystroem86
nystroem87
nystroem88
nystroem89
nystroem90
nystroem91
nystroem92
nystroem93
nystroem94
nystroem95
nystroem96
nystroem97
nystroem98
nystroem99
nystroem100
nystroem101
nystroem102
nystroem103
nystroem104
nystroem105
nystroem106
nystroem107
nystroem108
nystroem109
nystroem110
nystroem111
nystroem112
nystroem113
nystroem114
nystroem115
nystroem116
nystroem117
nystroem118
nystroem119
nystroem120
nystroem121
nystroem122
nystroem123
nystroem124
nystroem125
nystroem126
nystroem127
nystroem128
nystroem129
nystroem130
nystroem131
nystroem132
nystroem133
nystroem134
nystroem135
nystroem136
nystroem137
nystroem138
nystroem139
nystroem140
nystroem141
nystroem142
nystroem143
nystroem144
nystroem145
nystroem146
nystroem147
nystroem148
nystroem149
nystroem150
nystroem151
nystroem152
nystroem153
nystroem154
nystroem155
nystroem156
nystroem157
nystroem158
nystroem159
nystroem160
nystroem161
nystroem162
nystroem163
nystroem164
nystroem165
nystroem166
nystroem167
nystroem168
nystroem169
nystroem170
nystroem171
nystroem172
nystroem173
nystroem174
nystroem175
nystroem176
nystroem177
nystroem178
nystroem179
nystroem180
nystroem181
nystroem182
nystroem183
nystroem184
nystroem185
nystroem186
nystroem187
nystroem188
nystroem189
nystroem190
nystroem191
nystroem192
nystroem193
nystroem194
nystroem195
nystroem196
nystroem197
nystroem198
nystroem199
nystroem200
nystroem201
nystroem202
nystroem203
nystroem204
nystroem205
nystroem206
nystroem207
nystroem208
nystroem209
nystroem210
nystroem211
nystroem212
nystroem213
nystroem214
nystroem215
nystroem216
nystroem217
nystroem218
nystroem219
nystroem220
nystroem221
nystroem222
nystroem223
nystroem224
nystroem225
nystroem226
nystroem227
nystroem228
nystroem229
nystroem230
nystroem231
nystroem232
nystroem233
nystroem234
nystroem235
nystroem236
nystroem237
nystroem238
nystroem239
nystroem240
nystroem241
nystroem242
nystroem243
nystroem244
nystroem245
nystroem246
nystroem247
nystroem248
nystroem249
nystroem250
nystroem251
nystroem252
nystroem253
nystroem254
nystroem255
nystroem256
nystroem257
nystroem258
nystroem259
nystroem260
nystroem261
nystroem262
nystroem263
nystroem264
nystroem265
nystroem266
nystroem267
nystroem268
nystroem269
nystroem270
nystroem271
nystroem272
nystroem273
nystroem274
nystroem275
nystroem276
nystroem277
nystroem278
nystroem279
nystroem280
nystroem281
nystroem282
nystroem283
nystroem284
nystroem285
nystroem286
nystroem287
nystroem288
nystroem289
nystroem290
nystroem291
nystroem292
nystroem293
nystroem294
nystroem295
nystroem296
nystroem297
nystroem298
nystroem299
Параметры
alphas alphas: массивоподобный объект формы (n_alphas,), значение по умолчанию=(0.1, 1.0, 10.0)

Массив значений alpha для проверки.
Сила регуляризации; должна быть положительным числом с плавающей точкой. Регуляризация
улучшает обусловленность задачи и уменьшает дисперсию
оценок. Большие значения задают более сильную регуляризацию.
Alpha соответствует ``1 / (2C)`` в других линейных моделях, таких как
:class:`~sklearn.linear_model.LogisticRegression` или
:class:`~sklearn.svm.LinearSVC`.
При использовании перекрёстной проверки Leave-One-Out значения alpha должны быть строго положительными.

Пример влияния силы регуляризации на коэффициенты модели см. в разделе
:ref:`sphx_glr_auto_examples_linear_model_plot_ridge_coeffs.py`.
array([1.0000...00000000e+06])
fit_intercept fit_intercept: bool, значение по умолчанию=True

Вычислять ли свободный член для этой модели. Если задано
значение false, свободный член не будет использоваться при вычислениях
(то есть предполагается, что данные центрированы).
True
scoring scoring: строка, вызываемый объект, значение по умолчанию=None

Метод оценки для перекрёстной проверки. Варианты:

- строка: варианты см. в разделе :ref:`scoring_string_names`.
- вызываемый объект: вызываемый объект-оценщик (например, функция) с сигнатурой
``scorer(estimator, X, y)``. Подробности см. в разделе :ref:`scoring_callable`.
- `None`: отрицательная :ref:`среднеквадратичная ошибка <mean_squared_error>`, если cv равно
None (то есть используется перекрёстная проверка leave-one-out), или
:ref:`коэффициент детерминации <r2_score>` (:math:`R^2`) в противном случае.
None
cv cv: int, генератор перекрёстной проверки или итерируемый объект, значение по умолчанию=None

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

- None — для эффективной перекрёстной проверки Leave-One-Out
- целое число — количество фолдов,
- :term:`разделитель CV`,
- итерируемый объект, возвращающий разбиения (train, test) в виде массивов индексов.

Для целочисленных значений/None, если ``y`` имеет бинарный или многоклассовый формат,
используется :class:`~sklearn.model_selection.StratifiedKFold`, в противном случае —
:class:`~sklearn.model_selection.KFold`.

Различные стратегии перекрёстной проверки, доступные здесь,
описаны в :ref:`руководстве пользователя <cross_validation>`.
None
gcv_mode gcv_mode: {'auto', 'svd', 'eigen'}, значение по умолчанию='auto'

Флаг, указывающий, какую стратегию использовать при выполнении
перекрёстной проверки Leave-One-Out. Возможные варианты::

'auto' : то же, что и 'eigen'
'svd' : использовать сингулярное разложение матрицы X, если X плотная,
при разреженной X использовать 'eigen'
'eigen' : использовать спектральное разложение X X', если n_samples <= n_features,
или X' X, если n_features < n_samples

Режим 'auto' используется по умолчанию и предназначен для выбора более дешёвого
варианта с учётом формы и разреженности обучающих данных.
None
store_cv_results store_cv_results: bool, значение по умолчанию=False

Флаг, указывающий, следует ли сохранять значения перекрёстной проверки для
каждого alpha в атрибуте ``cv_results_`` (см.
ниже). Этот флаг совместим только с ``cv=None`` (то есть при использовании
перекрёстной проверки Leave-One-Out).

.. versionchanged:: 1.5
Имя параметра изменено с `store_cv_values` на `store_cv_results`.
False
alpha_per_target alpha_per_target: bool, значение по умолчанию=False

Флаг, указывающий, нужно ли оптимизировать значение alpha (выбираемое из списка параметра
`alphas`) отдельно для каждой целевой переменной (в режиме с несколькими выходами:
несколькими целевыми переменными для прогнозирования). Если задано значение `True`, после
обучения атрибут `alpha_` будет содержать значение для каждой целевой переменной.
Если задано значение `False`, для всех целевых переменных используется одно значение alpha.
Этот флаг совместим только с ``cv=None`` (то есть при использовании
перекрёстной проверки Leave-One-Out).

.. versionadded:: 0.24
False
Обученные атрибуты
Имя Тип Значение
alpha_ alpha_: число с плавающей точкой или ndarray формы (n_targets,)

Оценённый параметр регуляризации или, если ``alpha_per_target=True``,
оценённый параметр регуляризации для каждой целевой переменной.
float 0.003162
best_score_ best_score_: число с плавающей точкой или ndarray формы (n_targets,)

Оценка базового оценщика с наилучшим значением alpha или,
если задано ``alpha_per_target=True``, оценка для каждой целевой переменной.

.. versionadded:: 0.23
float64 -0.004476
coef_ coef_: ndarray формы (n_features) или (n_targets, n_features)

Вектор(ы) весов.
ndarray[float64](300,) [ 0.95,-1.18, 0.44,..., 0.24,-0.49, 3.13]
feature_names_in_ feature_names_in_: ndarray формы (`n_features_in_`,)

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

.. versionadded:: 1.0
ndarray[object](300,) ['nystroem0','nystroem1','nystroem2',...,'nystroem297','nystroem298', 'nystroem299']
intercept_ intercept_: число с плавающей точкой или ndarray формы (n_targets,)

Свободный член в функции принятия решений. Устанавливается в 0.0, если
``fit_intercept = False``.
float64 0.63
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 300


При использовании линейных моделей признаки, закодированные методом one-hot, показывали результаты, сопоставимые с признаками на основе сплайнов. Однако при использовании низкорангового приближения нелинейного ядра это уже не так: это можно объяснить тем, что сплайновые признаки более гладкие и позволяют приближению ядра находить более выразительную функцию принятия решений.

Теперь качественно рассмотрим прогнозы моделей на основе ядер и градиентно-бустинговых деревьев, которые должны лучше моделировать нелинейные взаимодействия между признаками:

gbrt.fit(X.iloc[train_0], y.iloc[train_0])
gbrt_predictions = gbrt.predict(X.iloc[test_0])

one_hot_poly_pipeline.fit(X.iloc[train_0], y.iloc[train_0])
one_hot_poly_predictions = one_hot_poly_pipeline.predict(X.iloc[test_0])

cyclic_spline_poly_pipeline.fit(X.iloc[train_0], y.iloc[train_0])
cyclic_spline_poly_predictions = cyclic_spline_poly_pipeline.predict(X.iloc[test_0])

Снова увеличим последний фрагмент тестовой выборки, охватывающий 4 дня:

last_hours = slice(-96, None)
fig, ax = plt.subplots(figsize=(12, 4))
fig.suptitle("Predictions by non-linear regression models")
ax.plot(
    y.iloc[test_0].values[last_hours],
    "x-",
    alpha=0.2,
    label="Actual demand",
    color="black",
)
ax.plot(
    gbrt_predictions[last_hours],
    "x-",
    label="Gradient Boosted Trees",
)
ax.plot(
    one_hot_poly_predictions[last_hours],
    "x-",
    label="One-hot + polynomial kernel",
)
ax.plot(
    cyclic_spline_poly_predictions[last_hours],
    "x-",
    label="Splines + polynomial kernel",
)
_ = ax.legend()
Predictions by non-linear regression models

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

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

Напротив, временные признаки, закодированные методом one-hot, не показывают столь хороших результатов с низкоранговой моделью на основе ядер. В частности, она значительно сильнее конкурирующих моделей завышает оценки спроса в часы низкого спроса.

Также видно, что ни одна из моделей не может успешно предсказать некоторые пиковые значения аренды в часы пик в рабочие дни. Для дальнейшего повышения точности прогнозов, возможно, потребуется доступ к дополнительным признакам. Например, полезно было бы знать географическое распределение парка велосипедов в любой момент времени или долю велосипедов, выведенных из эксплуатации из-за необходимости обслуживания.

Наконец, количественно рассмотрим ошибки прогнозирования этих трёх моделей с помощью диаграмм рассеяния фактического и прогнозируемого спроса:

from sklearn.metrics import PredictionErrorDisplay

fig, axes = plt.subplots(nrows=2, ncols=3, figsize=(13, 7), sharex=True, sharey="row")
fig.suptitle("Non-linear regression models", y=1.0)
predictions = [
    one_hot_poly_predictions,
    cyclic_spline_poly_predictions,
    gbrt_predictions,
]
labels = [
    "One hot +\npolynomial kernel",
    "Splines +\npolynomial kernel",
    "Gradient Boosted\nTrees",
]
plot_kinds = ["actual_vs_predicted", "residual_vs_predicted"]
for axis_idx, kind in enumerate(plot_kinds):
    for ax, pred, label in zip(axes[axis_idx], predictions, labels):
        disp = PredictionErrorDisplay.from_predictions(
            y_true=y.iloc[test_0],
            y_pred=pred,
            kind=kind,
            scatter_kwargs={"alpha": 0.3},
            ax=ax,
        )
        ax.set_xticks(np.linspace(0, 1, num=5))
        if axis_idx == 0:
            ax.set_yticks(np.linspace(0, 1, num=5))
            ax.legend(
                ["Best model", label],
                loc="upper center",
                bbox_to_anchor=(0.5, 1.3),
                ncol=2,
            )
        ax.set_aspect("equal", adjustable="box")
plt.show()
Non-linear regression models

Эта визуализация подтверждает выводы, сделанные по предыдущему графику.

Все модели занижают оценки высокого спроса (в часы пик в рабочие дни), однако градиентный бустинг делает это в меньшей степени. В среднем градиентный бустинг хорошо прогнозирует периоды низкого спроса, тогда как конвейер полиномиальной регрессии с one-hot-кодированием, по-видимому, систематически завышает спрос в этом диапазоне. В целом прогнозы деревьев с градиентным бустингом ближе к диагонали, чем прогнозы моделей на основе ядер.

Заключительные замечания

Отметим, что результаты моделей на основе ядер можно было бы немного улучшить, используя больше компонент (более высокоранговое приближение ядра), ценой увеличения времени обучения и прогнозирования. При больших значениях n_components качество признаков, закодированных методом one-hot, даже сравнялось бы с качеством сплайновых признаков.

Регрессор Nystroem + RidgeCV также можно было бы заменить на MLPRegressor с одним или двумя скрытыми слоями; результаты были бы весьма похожими.

В этом практическом примере использовался набор данных с почасовой дискретизацией. Однако циклические признаки на основе сплайнов могут очень эффективно моделировать время суток или день недели при более мелкой временной дискретизации (например, при измерениях каждую минуту, а не каждый час), не увеличивая число признаков. Представление времени с помощью one-hot-кодирования такой гибкости не обеспечивает.

Наконец, в этом блокноте мы использовали RidgeCV, поскольку этот метод очень эффективен с вычислительной точки зрения. Однако он моделирует целевую переменную как случайную величину с гауссовским распределением и постоянной дисперсией. Для задач регрессии с положительными значениями, вероятно, уместнее использовать распределение Пуассона или гамма-распределение. Этого можно добиться, используя GridSearchCV(TweedieRegressor(power=2), param_grid({"alpha": alphas})) вместо RidgeCV.

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

Launch binder
Launch JupyterLite

Download Jupyter notebook: plot_cyclical_feature_engineering.ipynb

Download Python source code: plot_cyclical_feature_engineering.py

Download zipped: plot_cyclical_feature_engineering.zip

Связанные примеры

Запаздывающие признаки для прогнозирования временных рядов

Поддержка категориальных признаков в градиентном бустинге

Полиномиальная и сплайновая интерполяция

Сравнение TargetEncoder с другими кодировщиками

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

Spec-Zone.ru

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