Кнн предсказания с кластеризацией

У меня есть набор данных 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)

Это вернуло стол с медоидами.

Сейчас я пытаюсь использовать knn сделать такой прогноз:

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

И это возвращается

"поезд" и "класс" имеют разную длину

Может кто-нибудь, пожалуйста, пролить свет на то, как его использовать?

1 ответ

Решение

Это работает:

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 или другими способами.

Другие вопросы по тегам