Spec-Zone.ru › scikit-learn

KMeans

classsklearn.cluster.KMeans(n_clusters=8, *, init='k-means++', n_init='auto', max_iter=300, tol=0.0001, verbose=0, random_state=None, copy_x=True, algorithm='lloyd')[source]

Кластеризация K-Means.

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

Параметры:
n_clustersint, по умолчанию=8

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

Пример выбора оптимального значения для n_clusters см. в Выбор количества кластеров с помощью анализа силуэта для кластеризации KMeans.

init{‘k-means++’, ‘random’}, callable или массив-подобный объект формы (n_clusters, n_features), по умолчанию=’k-means++’

Метод инициализации:

  • ‘k-means++’ : выбирает начальные центроиды кластеров с использованием выборки, основанной на эмпирическом распределении вероятностей вклада точек в общую инерцию. Этот метод ускоряет сходимость. Реализованный алгоритм — «жадный k-means++». Он отличается от обычного k-means++ тем, что на каждом шаге выборки выполняется несколько проб и выбирается лучший центроид среди них.
  • ‘random’: выбирает n_clusters наблюдений (строк) случайным образом из данных для начальных центроидов.
  • Если передается массив, он должен иметь форму (n_clusters, n_features) и задает начальные центры.
  • Если передается вызываемый объект, он должен принимать аргументы X, n_clusters и random_state и возвращать инициализацию.

Пример использования различных стратегий init см. в Демонстрация кластеризации K-Means на данных рукописных цифр.

Оценку влияния инициализации см. в примере Эмпирическая оценка влияния инициализации k-means.

n_init‘auto’ или int, по умолчанию=’auto’

Количество раз, когда алгоритм k-means выполняется с различными начальными точками центроидов. Конечный результат — лучший результат из n_init последовательных запусков с точки зрения инерции. Несколько запусков рекомендуется для разреженных высокоразмерных задач (см. Кластеризация разреженных данных с помощью k-means).

Когда n_init='auto', число запусков зависит от значения init: 10, если используется init='random' или init — вызываемый объект; 1, если используется init='k-means++' или init — массив-подобный объект.

Добавлен в версии 1.2: Добавлена опция ‘auto’ для n_init.

Изменено в версии 1.4: Значение по умолчанию для n_init изменено на 'auto'.

max_iterint, по умолчанию=300

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

tolfloat, по умолчанию=1e-4

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

verboseint, по умолчанию=0

Режим отображения подробностей.

random_stateint, экземпляр RandomState или None, по умолчанию=None

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

copy_xbool, по умолчанию=True

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

algorithm{“lloyd”, “elkan”}, по умолчанию=”lloyd”

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

Изменено в версии 0.18: Добавлен алгоритм Elkan

Изменено в версии 1.1: Переименовано «full» в «lloyd» и устарело «auto» и «full». Изменено «auto» на использование «lloyd» вместо «elkan».

Атрибуты:
cluster_centers_массив формы (n_clusters, n_features)

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

labels_массив формы (n_samples,)

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

inertia_float

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

n_iter_int

Количество выполненных итераций.

n_features_in_int

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

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

feature_names_in_массив формы (n_features_in_,)

Имена признаков, увиденные во время fit. Определяются только тогда, когда X имеет имена признаков, которые все являются строками.

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

См. также

MiniBatchKMeans

Альтернативная онлайн-реализация, которая выполняет инкрементные обновления позиций центров с использованием мини-пакетов. Для обучения больших масштабов (скажем, n_samples > 10k) MiniBatchKMeans, вероятно, будет значительно быстрее, чем реализация по умолчанию.

Примечания

Проблема k-means решается с использованием алгоритма Lloyd или алгоритма Elkan.

Средняя сложность задается формулой O(k n T), где n — количество образцов, а T — количество итераций.

Сложность в худшем случае задается формулой O(n^(k+2/p)) с n = n_samples, p = n_features. Подробнее см. “How slow is the k-means method?” D. Arthur and S. Vassilvitskii - SoCG2006.

На практике алгоритм k-means очень быстрый (один из самых быстрых алгоритмов кластеризации), но он упирается в локальные минимумы. Именно поэтому может быть полезно перезапустить его несколько раз.

Если алгоритм останавливается до полной сходимости (из-за tol или max_iter), labels_ и cluster_centers_ не будут согласованы, то есть cluster_centers_ не будет средним значением точек в каждом кластере. Кроме того, оценщик перераспределит labels_ после последней итерации, чтобы сделать labels_ согласованным с predict на обучающем наборе.

Примеры

>>> from sklearn.cluster import KMeans
>>> import numpy as np
>>> X = np.array([[1, 2], [1, 4], [1, 0],
...               [10, 2], [10, 4], [10, 0]])
>>> kmeans = KMeans(n_clusters=2, random_state=0, n_init="auto").fit(X)
>>> kmeans.labels_
array([1, 1, 1, 0, 0, 0], dtype=int32)
>>> kmeans.predict([[0, 0], [12, 3]])
array([1, 0], dtype=int32)
>>> kmeans.cluster_centers_
array([[10.,  2.],
       [ 1.,  2.]])

Примеры распространенных проблем с K-Means и способы их решения см. в Демонстрация предположений k-means.

Демонстрация использования K-Means для кластеризации текстовых документов см. в Кластеризация текстовых документов с помощью k-means.

Сравнение K-Means и MiniBatchKMeans см. в примере Сравнение алгоритмов кластеризации K-Means и MiniBatchKMeans.

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

fit(X, y=None, sample_weight=None)[source]

Вычисление кластеризации k-средних.

Параметры:
X{массив-подобный объект, разреженная матрица} формы (n_samples, n_features)

Обучающие объекты для кластеризации. Следует отметить, что данные будут преобразованы в порядок C, что вызовет копирование памяти, если предоставленные данные не являются непрерывными в порядке C. Если передается разреженная матрица, будет создана копия, если она не в формате CSR.

yИгнорируется

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

sample_weightмассив-подобный объект формы (n_samples,), по умолчанию=None

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

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

Возвращает:
selfобъект

Обученный эстиматор.

fit_predict(X, y=None, sample_weight=None)[source]

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

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

Параметры:
X{массив-подобный объект, разреженная матрица} формы (n_samples, n_features)

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

yИгнорируется

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

sample_weightмассив-подобный объект формы (n_samples,), по умолчанию=None

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

Возвращает:
labelsмассив формы (n_samples,)

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

fit_transform(X, y=None, sample_weight=None)[source]

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

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

Параметры:
X{массив-подобный объект, разреженная матрица} формы (n_samples, n_features)

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

yИгнорируется

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

sample_weightмассив-подобный объект формы (n_samples,), по умолчанию=None

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

Возвращает:
X_newмассив формы (n_samples, n_clusters)

X преобразован в новом пространстве.

get_feature_names_out(input_features=None)[source]

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

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

Параметры:
input_featuresмассив-подобный объект из str или None, по умолчанию=None

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

Возвращает:
feature_names_outмассив объектов str

Имена преобразованных признаков.

get_metadata_routing()[source]

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

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

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

MetadataRequest, encapsulating routing information.

get_params(deep=True)[source]

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

Параметры:
deepbool, по умолчанию=True

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

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

Имена параметров, сопоставленные со значениями.

predict(X)[source]

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

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

Параметры:
X{массив-подобный объект, разреженная матрица} формы (n_samples, n_features)

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

Возвращает:
labelsмассив формы (n_samples,)

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

score(X, y=None, sample_weight=None)[source]

Обратное значение целевой функции K-means для X.

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

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

yИгнорируется

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

sample_weightarray-like формы (n_samples,), по умолчанию=None

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

Возвращаемое значение:
scorefloat

Обратное значение целевой функции K-means для X.

set_fit_request(*, sample_weight:bool|None|str='$UNCHANGED$') → KMeans[source]

Запрос метаданных, передаваемых в метод fit.

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

Варианты для каждого параметра:

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

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

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

Примечание

Этот метод актуален только если этот оценщик используется в качестве под-оценщика мета-оценщика, например, внутри Pipeline. В противном случае он не имеет эффекта.

Параметры:
sample_weightstr, True, False, или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

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

Возвращаемое значение:
selfобъект

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

set_output(*, transform=None)[source]

Установить контейнер вывода.

См. Представление API set_output для примера использования API.

Параметры:
transform{“default”, “pandas”, “polars”}, по умолчанию=None

Настроить вывод transform и fit_transform.

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

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

Возвращаемое значение:
selfэкземпляр оценщика

Экземпляр оценщика.

set_params(**params)[source]

Установить параметры этого оценщика.

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

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

Параметры оценщика.

Возвращаемое значение:
selfэкземпляр оценщика

Экземпляр оценщика.

set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') → KMeans[source]

Запрос метаданных, переданных методу score.

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

Варианты для каждого параметра:

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

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

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

Примечание

Этот метод актуален только если этот эстиматор используется как под-эстиматор мета-эстиматора, например, внутри Pipeline. В противном случае он не оказывает влияния.

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

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

Returns:
selfobject

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

transform(X)[source]

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

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

Parameters:
X{array-like, sparse matrix} of shape (n_samples, n_features)

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

Returns:
X_newndarray of shape (n_samples, n_clusters)

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

Галерея примеров

Основные улучшения scikit-learn 1.1

Основные улучшения scikit-learn 0.23

Демонстрация кластеризации K-Means на данных рукописных цифр

Сравнение производительности Bisecting K-Means и обычного K-Means

Сравнение алгоритмов кластеризации K-Means и MiniBatchKMeans

Демонстрация предположений k-means

Эмпирическая оценка влияния стратегий инициализации k-means

Выбор числа кластеров с помощью анализа силуэта для кластеризации KMeans

Кластеризация текстовых документов с помощью k-means

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

Spec-Zone.ru

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