Spec-Zone.ru › scikit-learn

Примечание

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

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

Мы рады объявить о выходе scikit-learn 1.7! В этот выпуск вошло множество исправлений ошибок и улучшений, а также несколько важных новых функций. Ниже мы подробно расскажем об основных нововведениях этого выпуска. Полный список всех изменений см. в примечаниях к выпуску.

Чтобы установить последнюю версию с помощью pip:

pip install --upgrade scikit-learn

или с помощью conda:

conda install -c conda-forge scikit-learn

Улучшенное HTML-представление оценивателя

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

Посмотрите пример ниже и щёлкните разные блоки оценивателей, чтобы увидеть улучшенное HTML-представление.

from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

model = make_pipeline(StandardScaler(with_std=False), LogisticRegression(C=2.0))
model
Pipeline(steps=[('standardscaler', StandardScaler(with_std=False)),
                ('logisticregression', LogisticRegression(C=2.0))])
В среде Jupyter повторно выполните эту ячейку, чтобы отобразить HTML-представление, или доверьте этому блокноту.
На GitHub HTML-представление не отображается. Попробуйте открыть эту страницу на nbviewer.org.
Параметры
steps steps: список кортежей

Список кортежей (имя шага, оцениватель), которые необходимо связать
в последовательном порядке. Для совместимости с API scikit-learn все шаги
должны определять `fit`. Все шаги, кроме последнего, также должны определять `transform`. Подробнее см.
:ref:`Объединение оценивателей <combining_estimators>`.
[('standardscaler', ...), ('logisticregression', ...)]
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
Параметры
with_std with_std: bool, по умолчанию True

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

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

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

Обратная сила регуляризации; должно быть положительным числом с плавающей точкой.
Как и в методе опорных векторов, меньшие значения соответствуют более сильной
регуляризации. `C=np.inf` означает логистическую регрессию без штрафа.
Наглядный пример влияния настройки параметра `C`
при штрафе L1 см. здесь:
:ref:`sphx_glr_auto_examples_linear_model_plot_logistic_path.py`.
2.0
penalty penalty: {'l1', 'l2', 'elasticnet', None}, по умолчанию 'l2'

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

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

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

.. versionadded:: 0.19
штраф L1 с решателем SAGA (поддержка 'multinomial' + L1)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Не влияет на работу.

.. deprecated:: 1.8
Параметр `n_jobs` объявлен устаревшим в версии 1.8 и будет удалён в версии 1.10.
None


Пользовательская проверочная выборка для оценивателей градиентного бустинга на основе гистограмм

ensemble.HistGradientBoostingClassifier и ensemble.HistGradientBoostingRegressor теперь поддерживают непосредственную передачу пользовательской проверочной выборки для досрочной остановки в метод fit с помощью параметров X_val, y_val и sample_weight_val. В pipeline.Pipeline проверочную выборку X_val можно преобразовать вместе с X с помощью параметра transform_input.

import sklearn
from sklearn.datasets import make_classification
from sklearn.ensemble import HistGradientBoostingClassifier
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler

sklearn.set_config(enable_metadata_routing=True)

X, y = make_classification(random_state=0)
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=0)

clf = HistGradientBoostingClassifier()
clf.set_fit_request(X_val=True, y_val=True)

model = Pipeline([("sc", StandardScaler()), ("clf", clf)], transform_input=["X_val"])
model.fit(X, y, X_val=X_val, y_val=y_val)
Pipeline(steps=[('sc', StandardScaler()),
                ('clf', HistGradientBoostingClassifier())],
         transform_input=['X_val'])
В среде Jupyter повторно выполните эту ячейку, чтобы отобразить HTML-представление, или доверьте записной книжке.
На GitHub HTML-представление отобразить нельзя; попробуйте открыть эту страницу с помощью nbviewer.org.
Параметры
steps steps: список кортежей

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

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

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

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

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

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

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

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

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

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

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

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

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

Среднее значение для каждого признака в обучающей выборке.
Равно ``None``, если ``with_mean=False`` и ``with_std=False``.
ndarray[float64](20,) [-0.2 ,-0.07,-0.02,...,-0.05, 0.22,-0.15]
n_features_in_ n_features_in_: int

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

.. добавлено в версии:: 0.24
int 20
n_samples_seen_ n_samples_seen_: int или ndarray формы (n_features,)

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

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

.. добавлено в версии:: 0.17
*scale_*
ndarray[float64](20,) [0.92,1.06,0.98,...,1.28,1.08,0.88]
var_ var_: ndarray формы (n_features,) или None

Дисперсия каждого признака в обучающей выборке. Используется для вычисления
`scale_`. Равно ``None``, если ``with_mean=False`` и
``with_std=False``.
ndarray[float64](20,) [0.84,1.13,0.96,...,1.65,1.17,0.77]
20 признаков
x0
x1
x2
x3
x4
x5
x6
x7
x8
x9
x10
x11
x12
x13
x14
x15
x16
x17
x18
x19
Параметры
loss loss: {'log_loss'}, по умолчанию='log_loss'

Функция потерь, используемая в процессе бустинга.

Для задач бинарной классификации 'log_loss' также известна как логистическая функция потерь,
биномиальное отклонение или бинарная кросс-энтропия. Внутри модель строит по одному дереву
на каждой итерации бустинга и использует логистическую сигмоидальную функцию (expit) в качестве
обратной функции связи для вычисления предсказанной вероятности положительного класса.

Для задач многоклассовой классификации 'log_loss' также известна как мультиномиальное
отклонение или категориальная кросс-энтропия. Внутри модель строит по одному дереву на
каждую итерацию бустинга и каждый класс и использует функцию softmax в качестве обратной
функции связи для вычисления предсказанных вероятностей классов.
'log_loss'
learning_rate learning_rate: float, по умолчанию=0.1

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

Максимальное количество итераций процесса бустинга, то есть
максимальное количество деревьев для бинарной классификации. Для многоклассовой
классификации на каждой итерации строится `n_classes` деревьев.
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: ни один признак не будет считаться категориальным.
- array-like из логических значений: маска, указывающая категориальные признаки.
- array-like из целых чисел: целочисленные индексы категориальных
признаков.
- array-like из строк: имена категориальных признаков (предполагается, что у обучающих
данных есть имена признаков).
- `"from_dtype"`: столбцы датафрейма с типом данных "Categorical" и "Enum"
считаются категориальными признаками. На вход необходимо передать датафрейм,
поддерживаемый narwhals (или совместимый с ним): должна работать функция :func:`narwhals.from_native`.
Так, например, поддерживаются датафреймы pandas и polars.

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

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

.. 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 из int формы (n_features) или dict, по умолчанию=None

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

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

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

Ограничения применимы только для бинарной классификации и действуют
на вероятность положительного класса.
Подробнее см. в :ref:`руководстве пользователя <monotonic_cst_gbdt>`.

.. versionadded:: 0.23

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

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

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

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

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

Пример использования `interaction_cst` см. в :ref:`этом примере<ice-vs-pdp>`.

.. 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, callable или None, по умолчанию='loss'

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

- str: варианты см. в :ref:`scoring_string_names`.
- callable: вызываемый объект-оценщик (например, функция) с сигнатурой
``scorer(estimator, X, y)``. Подробности см. в :ref:`scoring_callable`.
- `None`: используется :ref:`accuracy <accuracy_score>`.
- '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
random_state random_state: int, экземпляр RandomState или None, по умолчанию=None

Генератор псевдослучайных чисел для управления подвыборкой в процессе
разбиения на интервалы, а также разделением данных на обучающую и валидационную выборки, если включена
досрочная остановка.
Передайте int, чтобы получать воспроизводимые результаты при нескольких вызовах функции.
См. :term:`глоссарий <random_state>`.
None
class_weight class_weight: dict или 'balanced', по умолчанию=None

Веса классов в формате `{class_label: weight}`.
Если значение не задано, считается, что веса всех классов равны единице.
Режим "balanced" использует значения y для автоматической корректировки
весов, обратно пропорциональных частотам классов во входных данных,
по формуле `n_samples / (n_classes * np.bincount(y))`.
Обратите внимание: если задан `sample_weight`, эти веса будут перемножены с весами выборок
(переданными через метод fit).

.. versionadded:: 1.2
None
Атрибуты обученной модели
Имя Тип Значение
classes_ classes_: array, форма = (n_classes,)

Метки классов.
ndarray[int64](2,) [0,1]
do_early_stopping_ do_early_stopping_: bool

Показывает, используется ли досрочная остановка во время обучения.
bool False
is_categorical_ is_categorical_: ndarray, форма (n_features,) или None

Логическая маска категориальных признаков. Если категориальных признаков нет, имеет значение ``None``.
NoneType None
n_features_in_ n_features_in_: int

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

.. versionadded:: 0.24
int 20
n_iter_ n_iter_: int

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

Количество деревьев, строящихся на каждой итерации. Для бинарной классификации оно равно 1,
а для многоклассовой
классификации — ``n_classes``.
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,) []


Построение ROC-кривых по результатам перекрёстной проверки

Класс metrics.RocCurveDisplay получил новый метод класса from_cv_results, позволяющий легко строить несколько ROC-кривых по результатам model_selection.cross_validate.

from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import RocCurveDisplay
from sklearn.model_selection import cross_validate

X, y = make_classification(n_samples=150, random_state=0)
clf = LogisticRegression(random_state=0)
cv_results = cross_validate(clf, X, y, cv=5, return_estimator=True, return_indices=True)
_ = RocCurveDisplay.from_cv_results(cv_results, X, y)
plot release highlights 1 7 0

Поддержка Array API

Начиная с версии 1.6, для нескольких функций добавлена поддержка входных данных, совместимых с Array API, в частности для метрик из модуля sklearn.metrics.

Кроме того, для использования экспериментальной поддержки Array API в scikit-learn больше не требуется устанавливать пакет array-api-compat.

Инструкции по использованию scikit-learn с библиотеками, совместимыми с Array API, такими как PyTorch или CuPy, см. на странице поддержки Array API.

Повышение согласованности API многослойного перцептрона

Класс neural_network.MLPRegressor получил новый параметр loss и теперь поддерживает функцию потерь “poisson” в дополнение к используемой по умолчанию функции потерь “squared_error”. Кроме того, оценщики neural_network.MLPClassifier и neural_network.MLPRegressor теперь поддерживают веса выборок. Эти улучшения призваны повысить согласованность этих оценщиков с другими оценщиками в scikit-learn.

Переход на разреженные массивы

В рамках подготовки к переходу SciPy от разреженных матриц к разреженным массивам все оценщики scikit-learn, принимающие на вход разреженные матрицы, теперь также принимают разреженные массивы.

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

Launch binder
Launch JupyterLite

Download Jupyter notebook: plot_release_highlights_1_7_0.ipynb

Download Python source code: plot_release_highlights_1_7_0.py

Download zipped: plot_release_highlights_1_7_0.zip

Связанные примеры

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

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

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

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

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

Spec-Zone.ru

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