No final da aula, tínhamos como interesse observar a relação entre as variáveis do conjunto de dados e os clusters atribuídos pelo algoritmo de agrupamento. Sabemos que uma ou duas variáveis não explicam sozinhas as relações. Por isso, meu interesse neste momento é criar plots dos clusters determinados pelo KMeans, explicitando nos eixos, a cada vez, duas das quatro variáveis do conjunto de dados.

Notem que são quatro dimensões no conjunto de dados (quatro atributos) e que apenas duas estão representadas em cada gráfico (2D). Mesmo que o ponto esteja mais próximo do centro “errado”, se fosse possível incluir na representação gráfica as quatro dimensões, ele estaria mais próximo do cluster “certo”.

(Aqui certo e errado estão entre aspas porque, relembrando, não existe cluster certo ou errado)

newiris <- iris
newiris$Species <- NULL #Atribui o valor vazio a coluna da classe

set.seed(10)
kc <- kmeans(newiris, 3, 100)

plot(newiris[c("Sepal.Length", "Sepal.Width")], col=kc$cluster)
points(kc$centers[,c("Sepal.Length", "Sepal.Width")], col=1:3, pch=8, cex=2)

Notem que alguns pares de variáveis podem levar a melhores visualizações da separação entre os clusters do que outros.

Para comparar os resultados dos clusters obtidos pelo Kmeans e dos clusters originais, posso fazer os plots a seguir:

par(mfrow=c(2,3)) #Plota varios graficos em uma matriz de dimensao 2x3
plot(newiris[c("Sepal.Length", "Sepal.Width")], col=kc$cluster)
plot(newiris[c("Petal.Length", "Sepal.Width")], col=kc$cluster)
plot(newiris[c("Petal.Length", "Petal.Width")], col=kc$cluster)

plot(iris[c("Sepal.Length", "Sepal.Width")], col=iris$Species)
plot(iris[c("Petal.Length", "Sepal.Width")], col=iris$Species)
plot(iris[c("Petal.Length", "Petal.Width")], col=iris$Species)