如何将 knn 模型用于 R 中的新数据?
Posted
技术标签:
【中文标题】如何将 knn 模型用于 R 中的新数据?【英文标题】:How do I use knn model for new data in R? 【发布时间】:2018-11-10 22:41:39 【问题描述】:我刚刚在 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。我怎么知道它来自哪个物种?
【问题讨论】:
【参考方案1】:Knn 是一个惰性分类器。它不会像其他分类器(如逻辑回归、基于树的算法等)那样创建适合以后预测的模型。 它同时拟合和评估。完成性能参数的调整后,将优化的参数连同新的测试用例一起提供给 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)
【讨论】:
以上是关于如何将 knn 模型用于 R 中的新数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何将经过训练和测试的随机森林模型应用于 tidymodels 中的新数据集?
使用类包中的 knn() 在 R 中查找 k-Nearest-Neighbor