2013-07-10 1 views
3

После завершения анализа кластера, когда я ввожу некоторые новые данные, как мне узнать, к какому кластеру принадлежат данные?Как узнать, к какому кластеру относятся новые данные после завершения анализа кластера

data(freeny) 
library(RSNNS) 
options(digits=2) 
year<-as.integer(rownames(freeny)) 
freeny<-cbind(freeny,year) 
freeny = freeny[sample(1:nrow(freeny),length(1:nrow(freeny))),1:ncol(freeny)] 
freenyValues= freeny[,1:5] 
freenyTargets=decodeClassLabels(freeny[,6]) 
freeny = splitForTrainingAndTest(freenyValues,freenyTargets,ratio=0.15) 
km<-kmeans(freeny$inputsTrain,10,iter.max = 100) 
kclust=km$cluster 

ответ

3

kmeans возвращает объект, содержащий координаты центров кластеров в $centers. Вы хотите, чтобы найти кластер, к которому новый объект находится ближе (с точки зрения суммы квадратов расстояний):

v <- freeny$inputsTrain[1,] # just an example 
which.min(sapply(1:10, function(x) sum((v - km$centers[x,])^2))) 

Вышеприведенные возвращается 8 - такой же, как кластер, к которому был присвоен первый ряд freeny$inputsTrain ,

В альтернативном подходе вы можете сначала создать кластеризацию, а затем использовать контролируемую машину для обучения модели, которую вы затем будете использовать в качестве предсказания. Однако качество модели будет зависеть от того, насколько хорошо кластеризация действительно представляет структуру данных и сколько данных у вас есть. Я осмотрел свои данные с PCA (мой любимый инструмент):

pca <- prcomp(freeny$inputsTrain, scale.= TRUE) 
library(pca3d) 
pca3d(pca) 

У меня сложилось впечатление, что у вас есть не более 6-7 четких классов для работы с:

enter image description here

Однако следует запускать больше kmeans диагностические (локтевые участки и т.д.), чтобы определить оптимальное количество кластеров:

wss <- sapply(1:10, function(x) { km <- kmeans(freeny$inputsTrain,x,iter.max = 100) ; km$tot.withinss }) 
plot(1:10, wss) 

enter image description here

Этот участок предлагает 3-4 класса в качестве оптимального. Для более сложного и информативного подхода проконсультируйтесь с кламограммами: http://www.r-statistics.com/2010/06/clustergram-visualization-and-diagnostics-for-cluster-analysis-r-code/