Автор оригинала: Pankaj Kumar.
В этой статье мы увидим, как мы можем построить K-означает кластеры.
K-означает кластеризация кластеризации является метод итеративным кластеризом, который сегменты данных в к Кластеры, в которых каждое наблюдение принадлежит кластеру с ближайшим средним значением (кластерный центр).
Шаги для построения K-означает кластеры
Эта статья демонстрирует, как визуализировать кластеры. Мы будем использовать цифры набор данных для нашего дела.
1. Подготовка данных для построения
Сначала давайте будем готовы наши данные.
#Importing required modules from sklearn.datasets import load_digits from sklearn.decomposition import PCA from sklearn.cluster import KMeans import numpy as np #Load Data data = load_digits().data pca = PCA(2) #Transform the data df = pca.fit_transform(data) df.shape
Выход:
(1797, 2)
DiCits DataSet содержит изображения размера 8 × 8 пикселей, которые сплющены для создания функций вектора длины 64. Мы использовали PCA для уменьшения количества измерений, чтобы мы могли визуализировать результаты с использованием графика разброса 2D.
2. Примените k-средства для данных
Теперь давайте применим k – значит для наших данных для создания кластеров.
Здесь в цифрах набор данных мы уже знаем, что этикетки варьируются от 0 до 9, поэтому у нас есть 10 классов (или кластеров).
Но в реальных проблемах при выполнении k-означает наиболее сложную задачу – определить количество кластеров.
Существуют различные способы определения оптимального количества кластеров, то есть метод локтя, средний метод силуэта. Но определение количества кластеров будет предметом другого разговора.
#Import required module from sklearn.cluster import KMeans #Initialize the class object kmeans = KMeans(n_clusters= 10) #predict the labels of clusters. label = kmeans.fit_predict(df) print(label)
Выход:
out: [0 3 7 ... 7 4 9]
kmeans.fit_predict
Метод Возвращает массив кластерных меток, к каждой точке данных принадлежит.
3. Построение этикетки 0 K-означает кластеры
Теперь пришло время понять и посмотреть, как мы можем записать отдельные кластеры.
Массив этикеток сохраняет индекс или последовательность точек данных, поэтому мы можем использовать эту характеристику для фильтрации точек данных с использованием булевой индексации с Numpy.
Давайте визуализируем кластер с этикеткой 0 с помощью библиотеки MATPLOTLIB.
import matplotlib.pyplot as plt #filter rows of original data filtered_label0 = df[label == 0] #plotting the results plt.scatter(filtered_label0[:,0] , filtered_label0[:,1]) plt.show()
Код выше первых фильтров и сохраняет точки данных, которые принадлежат к кластеру метке 0, а затем создает график разброса.
Посмотрите, как мы прошли логические серии для фильтрации [Label]. Проиндексировали фильтрованные данные и передавались plt.scatter
как (x, y) на сюжет. [:, 0], [:, 1].
4. Построение дополнительных K-означает кластеры
Теперь, что у нас есть идея, давайте поговорка кластеров с этикеткой 2 и 8.
#filter rows of original data filtered_label2 = df[label == 2] filtered_label8 = df[label == 8] #Plotting the results plt.scatter(filtered_label2[:,0] , filtered_label2[:,1] , color = 'red') plt.scatter(filtered_label8[:,0] , filtered_label8[:,1] , color = 'black') plt.show()
Замечательный !
5. Сюжет все k-означает кластеры
Теперь, что мы получили рабочий механизм, давайте применим его ко всем кластерам.
#Getting unique labels u_labels = np.unique(label) #plotting the results: for i in u_labels: plt.scatter(df[label == i , 0] , df[label == i , 1] , label = i) plt.legend() plt.show()
Приведенный выше код итерации фильтрации данных в соответствии с каждым уникальным классом одной итерацией одной итерацией. В результате мы получаем окончательную визуализацию всех кластеров.
6. Построение кластерных центров
#Getting the Centroids centroids = kmeans.cluster_centers_ u_labels = np.unique(label) #plotting the results: for i in u_labels: plt.scatter(df[label == i , 0] , df[label == i , 1] , label = i) plt.scatter(centroids[:,0] , centroids[:,1] , s = 80, color = 'k) plt.legend() plt.show()
kmeans.cluster_centers_
Верните массив мест центроидов.
Вот полный код того, что мы только что видели выше.
#Importing required modules from sklearn.datasets import load_digits from sklearn.decomposition import PCA from sklearn.cluster import KMeans import numpy as np #Load Data data = load_digits().data pca = PCA(2) #Transform the data df = pca.fit_transform(data) #Import KMeans module from sklearn.cluster import KMeans #Initialize the class object kmeans = KMeans(n_clusters= 10) #predict the labels of clusters. label = kmeans.fit_predict(df) #Getting unique labels u_labels = np.unique(label) #plotting the results: for i in u_labels: plt.scatter(df[label == i , 0] , df[label == i , 1] , label = i) plt.legend() plt.show()
Заключение
В этой статье мы видели, как мы можем визуализировать кластеры, образованные алгоритмом K-означает. Пока мы не встретимся в следующий раз, счастливого изучения!