Примечание
Перейти в конец, чтобы скачать полный код примера или запустить этот пример в браузере с помощью 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",
)

Функция потерь Гамма для градиентного бустинга
Класс 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 секунды)
Связанные примеры
© 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