k_means#

sklearn.cluster.k_means(X, n_clusters, *, sample_weight=None, init='k-means++', n_init='auto', max_iter=300, verbose=False, tol=0.0001, random_state=None, copy_x=True, алгоритм='lloyd', return_n_iter=False)[источник]#

Выполнить алгоритм кластеризации K-средних.

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

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

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

n_clustersint

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

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

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

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

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

  • 'k-means++' : выбирает начальные центры кластеров для k-средних умным способом для ускорения сходимости. См. раздел Примечания в k_init для подробностей.

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

  • Если передается массив, он должен иметь форму (n_clusters, n_features) и задает начальные центры.

  • Если передаётся вызываемый объект, он должен принимать аргументы X, n_clusters и случайное состояние, возвращая инициализацию.

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

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

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

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

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

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

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

verbosebool, по умолчанию=False

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

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

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

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

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

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

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

алгоритм{"lloyd", "elkan"}, по умолчанию="lloyd"

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

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

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

return_n_iterbool, по умолчанию=False

Возвращать или нет количество итераций.

Возвращает:
центроидndarray формы (n_clusters, n_features)

Центроиды, найденные на последней итерации k-means.

меткаndarray формы (n_samples,)

The label[i] является кодом или индексом центроида, к которому наиболее близко i-е наблюдение.

инерцияfloat

Финальное значение критерия инерции (сумма квадратов расстояний до ближайшего центроида для всех наблюдений в обучающей выборке).

best_n_iterint

Количество итераций, соответствующих наилучшим результатам. Возвращается только если return_n_iter установлено в True.

Примеры

>>> import numpy as np
>>> from sklearn.cluster import k_means
>>> X = np.array([[1, 2], [1, 4], [1, 0],
...               [10, 2], [10, 4], [10, 0]])
>>> centroid, label, inertia = k_means(
...     X, n_clusters=2, n_init="auto", random_state=0
... )
>>> centroid
array([[10.,  2.],
       [ 1.,  2.]])
>>> label
array([1, 1, 1, 0, 0, 0], dtype=int32)
>>> inertia
16.0