Spec-Zone.ru › scikit-learn

BisectingKMeans

classsklearn.cluster.BisectingKMeans(n_clusters=8, *, init='random', n_init=1, random_state=None, max_iter=300, verbose=0, tol=0.0001, copy_x=True, algorithm='lloyd', bisecting_strategy='biggest_inertia')[исходный код]

Кластеризация методом бисекции K-средних.

Подробнее см. в руководстве пользователя.

Добавлено в версии 1.1.

Параметры:
n_clustersint, default=8

Количество формируемых кластеров, а также количество генерируемых центроидов.

init{‘k-means++’, ‘random’} or callable, default=’random’

Метод инициализации для каждой бисекции.

‘k-means++’ : интеллектуальный выбор начальных центров кластеров для кластеризации методом k-средних, ускоряющий сходимость. Подробнее см. раздел «Примечания» в k_init.

‘random’: случайный выбор n_clusters наблюдений (строк) из данных в качестве начальных центроидов.

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

n_initint, default=1

Количество запусков внутреннего алгоритма k-средних с различными начальными значениями центроидов для каждой бисекции. Для каждой бисекции в результате будет выбран наилучший результат из n_init последовательных запусков по значению инерции.

random_stateint, RandomState instance or None, default=None

Определяет генерацию случайных чисел для инициализации центроидов во внутреннем алгоритме K-средних. Используйте int, чтобы сделать генерацию случайных чисел детерминированной. См. глоссарий.

max_iterint, default=300

Максимальное количество итераций внутреннего алгоритма k-средних для каждой бисекции.

verboseint, default=0

Уровень подробности вывода.

tolfloat, default=1e-4

Относительный допуск по норме Фробениуса разности центров кластеров двух последовательных итераций, используемый для определения сходимости. Применяется во внутреннем алгоритме k-средних на каждой бисекции для выбора наилучших возможных кластеров.

copy_xbool, default=True

При предварительном вычислении расстояний численная точность повышается, если сначала центрировать данные. Если copy_x равно True (по умолчанию), исходные данные не изменяются. Если False, исходные данные изменяются и восстанавливаются перед возвратом из функции, однако при вычитании и последующем прибавлении среднего значения данных могут возникнуть небольшие численные расхождения. Обратите внимание: если исходные данные не являются C-непрерывными, будет создана копия, даже если copy_x равно False. Если исходные данные разреженные, но не в формате CSR, будет создана копия, даже если copy_x равно False.

algorithm{“lloyd”, “elkan”}, default=”lloyd”

Внутренний алгоритм K-средних, используемый при бисекции. Классический алгоритм в стиле EM — это "lloyd". Вариант "elkan" может быть эффективнее на некоторых наборах данных с хорошо определёнными кластерами благодаря использованию неравенства треугольника. Однако он требует больше памяти из-за выделения дополнительного массива формы (n_samples, n_clusters).

bisecting_strategy{“biggest_inertia”, “largest_cluster”}, default=”biggest_inertia”

Определяет способ выполнения бисекции:

  • “biggest_inertia” означает, что BisectingKMeans всегда будет проверять все вычисленные кластеры, находить кластер с наибольшей SSE (суммой квадратов ошибок) и выполнять его бисекцию. Этот подход ориентирован на точность, но может потребовать значительного времени выполнения (особенно при большом количестве точек данных).
  • “largest_cluster” — BisectingKMeans всегда будет разделять кластер с наибольшим количеством точек среди всех ранее вычисленных кластеров. Этот способ должен работать быстрее, чем выбор по SSE (‘biggest_inertia’), и в большинстве случаев может давать похожие результаты.
Атрибуты:
cluster_centers_ndarray of shape (n_clusters, n_features)

Координаты центров кластеров. Если алгоритм останавливается до полной сходимости (см. tol и max_iter), они не будут согласованы с labels_.

labels_ndarray of shape (n_samples,)

Метки каждой точки.

inertia_float

Сумма квадратов расстояний от образцов до ближайшего центра кластера, взвешенная с учётом весов образцов, если они заданы.

n_features_in_int

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

feature_names_in_ndarray of shape (n_features_in_,)

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

См. также

KMeans

Исходная реализация алгоритма K-средних.

Примечания

При n_cluster меньше 3 алгоритм может быть неэффективным из-за ненужных вычислений в этом случае.

Примеры

>>> from sklearn.cluster import BisectingKMeans
>>> import numpy as np
>>> X = np.array([[1, 1], [10, 1], [3, 1],
...               [10, 0], [2, 1], [10, 2],
...               [10, 8], [10, 9], [10, 10]])
>>> bisect_means = BisectingKMeans(n_clusters=3, random_state=0).fit(X)
>>> bisect_means.labels_
array([0, 2, 0, 2, 0, 2, 1, 1, 1], dtype=int32)
>>> bisect_means.predict([[0, 0], [12, 3]])
array([0, 2], dtype=int32)
>>> bisect_means.cluster_centers_
array([[ 2., 1.],
       [10., 9.],
       [10., 1.]])

Сравнение BisectingKMeans и K-Means см. в примере Сравнение производительности бисекционного K-Means и обычного K-Means.

fit(X, y=None, sample_weight=None)[исходный код]

Вычислить кластеризацию методом бисекции k-средних.

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Обучающие экземпляры для кластеризации.

Примечание

Данные будут преобразованы в порядок C, что приведёт к копированию в памяти, если переданные данные не являются C-непрерывными.

yIgnored

Не используется; аргумент присутствует здесь по соглашению для единообразия API.

sample_weightarray-like of shape (n_samples,), default=None

Вес каждого наблюдения в X. Если None, всем наблюдениям назначается одинаковый вес. sample_weight не используется при инициализации, если init является вызываемой функцией.

Возвращает:
self

Обученная модель.

fit_predict(X, y=None, sample_weight=None)[исходный код]

Вычислить центры кластеров и предсказать индекс кластера для каждого образца.

Вспомогательный метод; эквивалентен вызову fit(X), за которым следует predict(X).

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Новые данные для преобразования.

yIgnored

Не используется; аргумент присутствует здесь по соглашению для единообразия API.

sample_weightarray-like of shape (n_samples,), default=None

Вес каждого наблюдения в X. Если None, всем наблюдениям назначается одинаковый вес.

Возвращает:
labelsndarray of shape (n_samples,)

Индекс кластера, к которому относится каждый образец.

fit_transform(X, y=None, sample_weight=None)[исходный код]

Выполнить кластеризацию и преобразовать X в пространство расстояний до кластеров.

Эквивалентно fit(X).transform(X), но реализовано более эффективно.

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Новые данные для преобразования.

yIgnored

Не используется; аргумент присутствует здесь по соглашению для единообразия API.

sample_weightarray-like of shape (n_samples,), default=None

Вес каждого наблюдения в X. Если None, всем наблюдениям назначается одинаковый вес.

Возвращает:
X_newndarray of shape (n_samples, n_clusters)

X, преобразованный в новое пространство.

get_feature_names_out(input_features=None)[исходный код]

Получить названия выходных признаков для преобразования.

К названиям выходных признаков будет добавлено имя класса в нижнем регистре. Например, если преобразователь выдаёт 3 признака, их названия будут следующими: ["class_name0", "class_name1", "class_name2"].

Параметры:
input_featuresarray-like of str or None, default=None

Используется только для проверки названий признаков на соответствие именам, обнаруженным в fit.

Возвращает:
feature_names_outndarray of str objects

Названия преобразованных признаков.

get_metadata_routing()[исходный код]

Получить настройки маршрутизации метаданных этого объекта.

О том, как работает механизм маршрутизации, см. в руководстве пользователя.

Возвращает:
routingMetadataRequest

Объект MetadataRequest, содержащий информацию о маршрутизации.

get_params(deep=True)[исходный код]

Получить параметры этой модели.

Параметры:
deepbool, default=True

Если True, будут возвращены параметры этой модели и содержащихся в ней подобъектов, являющихся моделями.

Возвращает:
paramsdict

Имена параметров и соответствующие им значения.

predict(X)[исходный код]

Предсказать, к какому кластеру относится каждый образец в X.

Предсказание выполняется путём спуска по иерархическому дереву в поиске ближайшего кластера-листа.

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

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Новые данные для предсказания.

Возвращает:
labelsndarray of shape (n_samples,)

Индекс кластера, к которому относится каждый образец.

score(X, y=None, sample_weight=None)[исходный код]

Значение целевой функции K-средних для X, взятое с противоположным знаком.

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Новые данные.

yIgnored

Не используется; аргумент присутствует здесь по соглашению для единообразия API.

sample_weightarray-like of shape (n_samples,), default=None

Вес каждого наблюдения в X. Если None, всем наблюдениям назначается одинаковый вес.

Возвращает:
scorefloat

Значение целевой функции K-средних для X, взятое с противоположным знаком.

set_fit_request(*, sample_weight:bool|None|str='$UNCHANGED$') → BisectingKMeans[исходный код]

Настроить, следует ли запрашивать передачу метаданных методу fit.

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

Для каждого параметра доступны следующие варианты:

  • True: метаданные запрашиваются и, если предоставлены, передаются в fit. Если метаданные не предоставлены, запрос игнорируется.
  • False: метаданные не запрашиваются, и метамодель не будет передавать их в fit.
  • None: метаданные не запрашиваются, и метамодель вызовет ошибку, если пользователь их предоставит.
  • str: метаданные следует передавать метамодели под указанным псевдонимом вместо исходного имени.

Значение по умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняет текущий запрос. Это позволяет изменить запрос для одних параметров, не затрагивая остальные.

Добавлено в версии 1.3.

Параметры:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра sample_weight метода fit.

Возвращает:
selfobject

Обновлённый объект.

set_output(*, transform=None)[исходный код]

Задать контейнер выходных данных.

Дополнительные сведения см. в руководстве пользователя, а пример использования API — в разделе Знакомство с API set_output.

Параметры:
transform{“default”, “pandas”, “polars”}, default=None

Настроить формат вывода для transform и fit_transform.

  • "default": формат вывода преобразователя по умолчанию
  • "pandas": вывод в формате DataFrame
  • "polars": вывод в формате Polars
  • None: конфигурация преобразования остаётся без изменений

Добавлено в версии 1.4: Добавлен параметр "polars".

Возвращает:
selfestimator instance

Экземпляр модели.

set_params(**params)[исходный код]

Задать параметры этой модели.

Метод работает как с простыми моделями, так и с вложенными объектами (например, Pipeline). У последних параметры имеют вид <component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.

Параметры:
**paramsdict

Параметры модели.

Возвращает:
selfestimator instance

Экземпляр модели.

set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') → BisectingKMeans[исходный код]

Настроить, следует ли запрашивать передачу метаданных методу score.

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

Для каждого параметра доступны следующие варианты:

  • True: метаданные запрашиваются и, если предоставлены, передаются в score. Если метаданные не предоставлены, запрос игнорируется.
  • False: метаданные не запрашиваются, и метамодель не будет передавать их в score.
  • None: метаданные не запрашиваются, и метамодель вызовет ошибку, если пользователь их предоставит.
  • str: метаданные следует передавать метамодели под указанным псевдонимом вместо исходного имени.

Значение по умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняет текущий запрос. Это позволяет изменить запрос для одних параметров, не затрагивая остальные.

Добавлено в версии 1.3.

Параметры:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра sample_weight метода score.

Возвращает:
selfobject

Обновлённый объект.

transform(X)[исходный код]

Преобразовать X в пространство расстояний до кластеров.

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

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Новые данные для преобразования.

Возвращает:
X_newndarray of shape (n_samples, n_clusters)

X, преобразованный в новое пространство.

Примеры из галереи

Сравнение производительности бисекционного и обычного алгоритмов K-средних

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

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.cluster.BisectingKMeans.html

Spec-Zone.ru

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