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).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.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(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

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

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

import numpy as np
from sklearn.model_selection import cross_val_score
from sklearn.datasets import make_low_rank_matrix
from sklearn.ensemble import HistGradientBoostingRegressor

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.46858513287221654)

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

Аналогично preprocessing.OneHotEncoder, класс preprocessing.OrdinalEncoder теперь поддерживает агрегирование редких категорий в один вывод для каждого признака. Параметры для включения сбора редких категорий — min_frequency и max_categories. Более подробную информацию см. в Руководстве пользователя.

from sklearn.preprocessing import OrdinalEncoder
import numpy as np

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,393 секунды)

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

Основные моменты выпуска scikit-learn 1.6

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

Основные моменты выпуска scikit-learn 0.24

© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/auto_examples/release_highlights/plot_release_highlights_1_3_0.html

Spec-Zone.ru

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