使用caret包train()函数调用knn3方法报错:模型不在内置库
解决caret train()中"knn3 not in built-in library"的报错
这个问题的根源很明确:knn3模型的实现并不包含在caret包本身里,caret只是提供了调用它的训练接口,你需要先安装对应的依赖包;另外也有可能是你的caret版本太旧,没有收录这个模型的接口定义。
下面是一步步的解决方法:
更新caret到最新版本
旧版本的caret可能没有添加knn3的接口支持,先把caret更到最新版,同时安装所有依赖:install.packages("caret", dependencies = TRUE) library(caret)安装并加载
kknn包knn3对应的底层模型实现来自kknn包,caret本身不包含这个模型的代码,所以必须手动安装它:install.packages("kknn") library(kknn)重新运行训练代码
现在再执行你的模型训练代码,应该就能正常运行了:model_KNN <- train(Y ~ ., training, method = "knn3", trControl = trainControl(method = "cv", number = 10, verboseIter = TRUE))
额外小技巧:你可以用modelLookup("knn3")在R里查看这个模型的详细信息,包括依赖包、可调参数等,方便以后排查类似问题。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

