library(readr)
library(caret)
library(tidyverse)

Esta funcion es ideal para features numericas, si las features no son numericas desplegara un error.

data(iris)
iris.new <- iris[,3:4]
set.seed(61)
cluster_col <- c("red","Blue", "Black")
km.iris <- kmeans(iris.new,centers = 3,nstart=25,iter.max = 20)
plot(iris.new$Petal.Length,iris.new$Petal.Width,
     xlab = "Petal Length",
     ylab = "Petal Width",
     col = km.iris$cluster)
points(km.iris$centers,col= 1:3 , pch=8,cex=2)

wss <- 0
for (i in 1:15) {
  km.iris <- kmeans(iris.new, centers = i, nstart=25, iter.max = 50)
  wss[i] <- km.iris$tot.withinss
}

Scree Plot

plot(1:15, wss, type = "b", 
     xlab = "Numero de Clusters", 
     ylab = "Suma de cuadrados entre grupos")

par(mfrow = c(1, 1))
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7cn0NCmxpYnJhcnkocmVhZHIpDQpsaWJyYXJ5KGNhcmV0KQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpgYGANCg0KRXN0YSBmdW5jaW9uIGVzIGlkZWFsIHBhcmEgZmVhdHVyZXMgbnVtZXJpY2FzLCBzaSBsYXMgZmVhdHVyZXMgbm8gc29uIG51bWVyaWNhcyBkZXNwbGVnYXJhIHVuIGVycm9yLg0KDQpgYGB7cn0NCmRhdGEoaXJpcykNCmlyaXMubmV3IDwtIGlyaXNbLDM6NF0NCmBgYA0KDQoNCmBgYHtyfQ0Kc2V0LnNlZWQoNjEpDQpjbHVzdGVyX2NvbCA8LSBjKCJyZWQiLCJCbHVlIiwgIkJsYWNrIikNCmttLmlyaXMgPC0ga21lYW5zKGlyaXMubmV3LGNlbnRlcnMgPSAzLG5zdGFydD0yNSxpdGVyLm1heCA9IDIwKQ0KcGxvdChpcmlzLm5ldyRQZXRhbC5MZW5ndGgsaXJpcy5uZXckUGV0YWwuV2lkdGgsDQogICAgIHhsYWIgPSAiUGV0YWwgTGVuZ3RoIiwNCiAgICAgeWxhYiA9ICJQZXRhbCBXaWR0aCIsDQogICAgIGNvbCA9IGttLmlyaXMkY2x1c3RlcikNCnBvaW50cyhrbS5pcmlzJGNlbnRlcnMsY29sPSAxOjMgLCBwY2g9OCxjZXg9MikNCg0KYGBgDQoNCmBgYHtyfQ0Kd3NzIDwtIDANCmZvciAoaSBpbiAxOjE1KSB7DQogIGttLmlyaXMgPC0ga21lYW5zKGlyaXMubmV3LCBjZW50ZXJzID0gaSwgbnN0YXJ0PTI1LCBpdGVyLm1heCA9IDUwKQ0KICB3c3NbaV0gPC0ga20uaXJpcyR0b3Qud2l0aGluc3MNCn0NCmBgYA0KDQojIyMgU2NyZWUgUGxvdA0KDQpgYGB7cn0NCnBsb3QoMToxNSwgd3NzLCB0eXBlID0gImIiLCANCiAgICAgeGxhYiA9ICJOdW1lcm8gZGUgQ2x1c3RlcnMiLCANCiAgICAgeWxhYiA9ICJTdW1hIGRlIGN1YWRyYWRvcyBlbnRyZSBncnVwb3MiKQ0KDQpgYGANCg0KYGBge3J9DQpwYXIobWZyb3cgPSBjKDEsIDEpKQ0KYGBgDQoNCg0KDQo=