Кластеризация K-средних в R-программировании
Кластеризация средств K в программировании на R - это неконтролируемый нелинейный алгоритм, который объединяет данные в кластеры на основе сходства или похожих групп. Он стремится разделить наблюдения на заранее заданное количество кластеров. Сегментация данных позволяет назначить каждый обучающий пример сегменту, называемому кластером. В неконтролируемом алгоритме дается высокая степень зависимости от необработанных данных с большими затратами на ручной просмотр для проверки актуальности. Он используется в различных областях, таких как банковское дело, здравоохранение, розничная торговля, СМИ и т. Д.
Теория
Кластеризация K-средних группирует данные по схожим группам. Алгоритм следующий:
- Выберите количество K кластеров.
- Выберите произвольно K точек, центроидов (не обязательно из заданных данных).
- Назначьте каждую точку данных ближайшему центроиду, который формирует K кластеров.
- Вычислите и поместите новый центроид каждого центроида.
- Переназначьте каждую точку данных новому кластеру.
После окончательного переназначения назовите кластер Final cluster.
Набор данных
Iris
данных ириса состоит из 50 образцов каждого из 3 видов ириса (Iris setosa, Iris virginica, Iris versicolor) и многомерного набора данных, представленного британским статистиком и биологом Рональдом Фишером в его статье 1936 года Использование множественных измерений в таксономических задачах. В каждом образце были измерены четыре характеристики, то есть длина и ширина чашелистиков и лепестков, и на основе комбинации этих четырех характеристик Фишер разработал линейную дискриминантную модель, чтобы отличить виды друг от друга.
# Loading data data(iris) # Structure str (iris) |
Выполнение кластеризации K-средних в наборе данных
Использование алгоритма кластеризации K-средних для набора данных, который включает 11 человек и 6 переменных или атрибутов
# Installing Packages install.packages( "ClusterR" ) install.packages( "cluster" ) # Loading package library(ClusterR) library(cluster) # Removing initial label of # Species from original dataset iris_1 < - iris[, - 5 ] # Fitting K-Means clustering Model # to training dataset set .seed( 240 ) # Setting seed kmeans.re < - kmeans(iris_1, centers = 3 , nstart = 20 ) kmeans.re # Cluster identification for # each observation kmeans.re$cluster # Confusion Matrix cm < - table(iris$Species, kmeans.re$cluster) cm # Model Evaluation and visualization plot(iris_1[c( "Sepal.Length" , "Sepal.Width" )]) plot(iris_1[c( "Sepal.Length" , "Sepal.Width" )], col = kmeans.re$cluster) plot(iris_1[c( "Sepal.Length" , "Sepal.Width" )], col = kmeans.re$cluster, main = "K-means with 3 clusters" ) ## Plotiing cluster centers kmeans.re$centers kmeans.re$centers[, c( "Sepal.Length" , "Sepal.Width" )] # cex is font size, pch is symbol points(kmeans.re$centers[, c( "Sepal.Length" , "Sepal.Width" )], col = 1 : 3 , pch = 8 , cex = 3 ) ## Visualizing clusters y_kmeans < - kmeans.re$cluster clusplot(iris_1[, c( "Sepal.Length" , "Sepal.Width" )], y_kmeans, lines = 0 , shade = TRUE, color = TRUE, labels = 2 , plotchar = FALSE, span = TRUE, main = paste( "Cluster iris" ), xlab = 'Sepal.Length' , ylab = 'Sepal.Width' ) |
Выход:
- Модель kmeans_re:
Изготовлены 3 кластера размером 50, 62 и 38 соответственно. Внутри кластера сумма квадратов составляет 88,4%.
- Идентификация кластера:
Модель достигла точности 100% при значении p менее 1. Это означает, что модель хороша.
- Матрица неточностей:
Итак, 50 сетоса правильно классифицируются как сетоса. Из 62 Versicolor 48 классифицируются как Versicolor, а 14 классифицируются как virginica. Из 36 вирджиниек 19 вирджиники правильно классифицируются как вирджиника, а 2 - как разноцветные.
- График K-средних с 3 кластерами:
Модель показывала 3 кластерных графика трех разных цветов, с длиной сепала и шириной сепала.
- Построение центров кластеров:
На графике центры кластеров отмечены крестиками того же цвета, что и кластер.
- Участок кластеров:
Итак, образуются 3 кластера с различной длиной и шириной чашелистиков. Следовательно, алгоритм кластеризации K-средних широко используется в отрасли.