错误:训练和测试中的关卡集不匹配(knncat R)
Posted
技术标签:
【中文标题】错误:训练和测试中的关卡集不匹配(knncat R)【英文标题】:Error : Sets of levels in train and test don't match (knncat R) 【发布时间】:2015-06-27 15:40:10 【问题描述】:我正在尝试在 R 中使用 knncat 进行 knn 分类,因为我的数据集中有分类属性。
knncat(FinalData, FinalTestData, k=10, classcol = 15)
当我执行上述语句时,它给我的错误是:训练和测试中的关卡集不匹配。
在检查所有属性的级别时,我确实有所不同。我有一个国家属性,可以从火车数据集中的 1-41 个值中获取。
但是,在测试数据集中,一个特定的国家/地区从未出现过,因此导致了此错误。我该怎么处理呢?
【问题讨论】:
【参考方案1】:我不确定,但您可以匹配以下因素水平。
train <- factor(c("a","b","c"))
test <- factor(c("a","b"))
levels(test) <- levels(train)
test
[1] a b
Levels: a b c
【讨论】:
实际上,重新分配这样的级别可能很危险(尝试使用train <- factor(c("a","b","c")); test <- factor(c("c","b")); test
并看到一个“a”神奇地出现在test
中)。最好使用test<-factor(test, levels=levels(train))
谢谢@MrFlick .. 效果很好。但是,现在它给了我一些因素有空水平的错误?你能帮忙解决这个问题吗??
@user3291389 您需要在问题中提供reproducible example 以进一步帮助您【参考方案2】:
也许我错了,但这不会仍然有问题,因为KNN algorithm
的基础是Euclidian distance calculations
的调整,对吧?
您是否仍然需要为分类特征的每个级别创建一个二进制变量,这意味着您会遇到问题,因为某些级别可能不会同时出现在训练和测试集中。
也许有人可以就此向我解释一下。
另外,请注意,这更像是一种刺激而不是劫持。
【讨论】:
以上是关于错误:训练和测试中的关卡集不匹配(knncat R)的主要内容,如果未能解决你的问题,请参考以下文章
测试数据特征与 OneHotEncoder 的训练数据特征不匹配