我刚刚在R中编写了一个knn模型。但是,我不知道如何使用输出来预测新数据。
# split into train (treino) and test (teste)
treino_index <- sample(seq_len(nrow(iris)), size = round(0.75*nrow(iris)))
treino <- iris[treino_index, ]
teste <- iris[-treino_index, ]
# take a look at the sample
head(treino)
head(teste)
# save specie from later
treino_especie = treino$Species
teste_especie = teste$Species
# exclude species from train and test dataset
treino = treino[-5]
teste = teste[-5]
# runs knn
library(class)
iris_teste_knn <- knn(train = treino, test = teste, cl= treino_especie,k = 3,prob=TRUE)
# model performance using cross table
install.packages('gmodels')
library('gmodels')
CrossTable(x=teste_especie, y=iris_teste_knn, prop.chisq=FALSE)
如何将此应用于新数据。假设我有一个具有以下参数的物种:Sepal.Length = 5.0,Sepal.Width = 3.3,Petal.Length = 1.3,Petal.Width = 0.1。我怎么知道它来自哪个物种?
答案 0 :(得分:0)
Knn 是一个懒惰的分类器。它不会创建适合以后预测,如在逻辑回归,基于树的算法等其他分类器的情况下。 它同时适合和评估。完成性能参数调整后,将优化参数与新测试用例一起提供。使用:
x = c(5.0, 3.3, 1.3, 0.1) # test case
knn(train = treino , test = x , cl= treino_especie, k = 3,prob=TRUE)
答案 1 :(得分:0)
关于预测r中knn模型中的新数据,你可以简单地输入knn函数中的测试参数,例如:以下
irisk_teste_knn <- knn(train = treino, test = new.Data, cl = treino_especie, k = 3, prob = T)
在kNN模型中,您可以通过squareroot记录观察总数来指定k。要评估模型,您可以使用包含在gmodel包中的CrossTable函数,如下所示:
library(gmodels)
CrossTable(x = new.Data$label,
y = iris_teste_knn,
prop.chisq = F)