使用聚类进行预测

时间:2015-06-12 23:06:00

标签: r cluster-analysis knn

我有一个60.000 obs / 40 Variable数据集,我使用了Clara,主要是由于内存限制。

library(cluster)    
library(dplyr)    

mutate(kddnew, Att=ifelse(Class=="normal","normal", "attack"))
ds <- dat[,c(-20,-21,-40)

clus <- clara(ds, 3, samples=500, sampsize=100, pamLike=TRUE)

这返回了一个带有medoids的表。

现在我正在尝试使用knn进行这样的预测:

medoidz <- clus$medoids
r <- knn(medoidz, ds, cl=ds$targetvariable)

它返回

  

'train'和'class'有不同的长度

有人可以说明如何使用它吗?

1 个答案:

答案 0 :(得分:4)

这有效:

require(cluster)
require(class)

data(iris)
ds   <- iris
ds$y <- as.numeric(ds$Species)
ds$Species <- NULL

idx      <- rbinom(nrow(ds), 2, .6)
training <- ds[idx,]
testing  <- ds[-idx,]
x        <- training
y        <- training$y
x1       <- testing
y1       <- testing$y

clus <- clara(x, 3, samples = 1, sampsize = nrow(x), pamLike=TRUE)

knn(train = x, test = x1, cl = clus$clustering, k = 10, l = 0, prob = T, use.all = T)

虽然3对于此数据集中的聚类数量来说显然是一个糟糕的选择,但预测并不好。希望您为数据选择正确数量的聚类,然后使用prediction.strength包中的fpc或其他方式测试预测强度。