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, преобразованный в новом пространстве.
Галерея примеров
© 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