Spec-Zone.ru › scikit-learn

Примечание

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

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

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

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

pip install --upgrade scikit-learn

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

conda install -c conda-forge scikit-learn

Маршрутизация метаданных

Мы приступили к внедрению нового способа маршрутизации метаданных, таких как sample_weight, по всей кодовой базе. Это повлияет на маршрутизацию метаданных метаоценивателями, такими как pipeline.Pipeline и model_selection.GridSearchCV. Хотя инфраструктура для этой функции уже включена в данный выпуск, работа над ней продолжается, и пока не все метаоцениватели поддерживают эту функцию. Подробнее об этой функции можно прочитать в руководстве пользователя по маршрутизации метаданных. Обратите внимание, что эта функция всё ещё разрабатывается и не реализована для большинства метаоценивателей.

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

HDBSCAN: иерархическая кластеризация на основе плотности

Изначально размещённый в репозитории scikit-learn-contrib, cluster.HDBSCAN теперь включён в scikit-learn. В нём отсутствуют некоторые возможности исходной реализации, которые будут добавлены в будущих выпусках. Выполняя модифицированную версию cluster.DBSCAN одновременно для нескольких значений epsilon, cluster.HDBSCAN обнаруживает кластеры различной плотности, что делает его менее чувствительным к выбору параметров, чем cluster.DBSCAN. Подробнее см. в руководстве пользователя.

import numpy as np

from sklearn.cluster import HDBSCAN
from sklearn.datasets import load_digits
from sklearn.metrics import v_measure_score

X, true_labels = load_digits(return_X_y=True)
print(f"number of digits: {len(np.unique(true_labels))}")

hdbscan = HDBSCAN(min_cluster_size=15, copy=True).fit(X)
non_noisy_labels = hdbscan.labels_[hdbscan.labels_ != -1]
print(f"number of clusters found: {len(np.unique(non_noisy_labels))}")

print(v_measure_score(true_labels[hdbscan.labels_ != -1], non_noisy_labels))
number of digits: 10
number of clusters found: 11
0.9694898472080092

TargetEncoder: новая стратегия кодирования категорий

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

import numpy as np

from sklearn.model_selection import KFold
from sklearn.preprocessing import TargetEncoder

X = np.array([["cat"] * 30 + ["dog"] * 20 + ["snake"] * 38], dtype=object).T
y = [90.3] * 30 + [20.4] * 20 + [21.2] * 38

enc = TargetEncoder(cv=KFold(shuffle=True, random_state=0))
X_trans = enc.fit_transform(X, y)

enc.encodings_
[array([90.3, 20.4, 21.2])]

Поддержка пропущенных значений в деревьях решений

Классы tree.DecisionTreeClassifier и tree.DecisionTreeRegressor теперь поддерживают пропущенные значения. Для каждого потенциального порога, определённого по непустым данным, алгоритм разделения проверяет вариант, в котором все пропущенные значения направляются в левый или правый узел. Подробнее см. в руководстве пользователя или в примере использования этой функции в HistGradientBoostingRegressor — возможности градиентного бустинга на гистограммах с деревьями.

import numpy as np

from sklearn.tree import DecisionTreeClassifier

X = np.array([0, 1, 6, np.nan]).reshape(-1, 1)
y = [0, 0, 1, 1]

tree = DecisionTreeClassifier(random_state=0).fit(X, y)
tree.predict(X)
array([0, 0, 1, 1])

Новый класс визуализации ValidationCurveDisplay

Теперь доступен класс model_selection.ValidationCurveDisplay для построения графиков результатов model_selection.validation_curve.

from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import ValidationCurveDisplay

X, y = make_classification(1000, 10, random_state=0)

_ = ValidationCurveDisplay.from_estimator(
    LogisticRegression(),
    X,
    y,
    param_name="C",
    param_range=np.geomspace(1e-5, 1e3, num=9),
    score_type="both",
    score_name="Accuracy",
)
plot release highlights 1 3 0

Функция потерь Гамма для градиентного бустинга

Класс ensemble.HistGradientBoostingRegressor поддерживает функцию потерь, основанную на девиансе Гамма, с помощью loss="gamma". Эта функция потерь полезна для моделирования строго положительных целевых значений с распределением, имеющим длинный правый хвост.

import numpy as np

from sklearn.datasets import make_low_rank_matrix
from sklearn.ensemble import HistGradientBoostingRegressor
from sklearn.model_selection import cross_val_score

n_samples, n_features = 500, 10
rng = np.random.RandomState(0)
X = make_low_rank_matrix(n_samples, n_features, random_state=rng)
coef = rng.uniform(low=-10, high=20, size=n_features)
y = rng.gamma(shape=2, scale=np.exp(X @ coef) / 2)
gbdt = HistGradientBoostingRegressor(loss="gamma")
cross_val_score(gbdt, X, y).mean()
np.float64(0.44587161562873445)

Группировка редких категорий в OrdinalEncoder

Как и preprocessing.OneHotEncoder, класс preprocessing.OrdinalEncoder теперь поддерживает объединение редких категорий в один выход для каждого признака. Параметры для включения группировки редких категорий: min_frequency и max_categories. Подробнее см. в руководстве пользователя.

import numpy as np

from sklearn.preprocessing import OrdinalEncoder

X = np.array(
    [["dog"] * 5 + ["cat"] * 20 + ["rabbit"] * 10 + ["snake"] * 3], dtype=object
).T
enc = OrdinalEncoder(min_frequency=6).fit(X)
enc.infrequent_categories_
[array(['dog', 'snake'], dtype=object)]

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

Launch binder
Launch JupyterLite

Download Jupyter notebook: plot_release_highlights_1_3_0.ipynb

Download Python source code: plot_release_highlights_1_3_0.py

Download zipped: plot_release_highlights_1_3_0.zip

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

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

Демонстрация алгоритма кластеризации HDBSCAN

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

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

© 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_3_0.html

Spec-Zone.ru

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