knn 聚类预测
knn predictions with Clustering
我有一个 60.000 obs/40 变量数据集,我在其中使用了 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)
这返回了带有中心点的 table。
现在我正在尝试使用 knn
进行如下预测:
medoidz <- clus$medoids
r <- knn(medoidz, ds, cl=ds$targetvariable)
而且它 returns
'train' and 'class' have different lengths
有人可以解释一下如何使用它吗?
这个有效:
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 对于此数据集中的聚类数量显然是一个糟糕的选择,因此预测效果不佳。希望您会为您的数据选择正确数量的聚类,并且您可以使用包 fpc
中的 prediction.strength
或其他方式测试您的预测强度。
我有一个 60.000 obs/40 变量数据集,我在其中使用了 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)
这返回了带有中心点的 table。
现在我正在尝试使用 knn
进行如下预测:
medoidz <- clus$medoids
r <- knn(medoidz, ds, cl=ds$targetvariable)
而且它 returns
'train' and 'class' have different lengths
有人可以解释一下如何使用它吗?
这个有效:
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 对于此数据集中的聚类数量显然是一个糟糕的选择,因此预测效果不佳。希望您会为您的数据选择正确数量的聚类,并且您可以使用包 fpc
中的 prediction.strength
或其他方式测试您的预测强度。