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