错误:训练和测试中的关卡集不匹配(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 &lt;- factor(c("a","b","c")); test &lt;- factor(c("c","b")); test 并看到一个“a”神奇地出现在test 中)。最好使用test&lt;-factor(test, levels=levels(train)) 谢谢@MrFlick .. 效果很好。但是,现在它给了我一些因素有空水平的错误?你能帮忙解决这个问题吗?? @user3291389 您需要在问题中提供reproducible example 以进一步帮助您【参考方案2】:

也许我错了,但这不会仍然有问题,因为KNN algorithm 的基础是Euclidian distance calculations 的调整,对吧? 您是否仍然需要为分类特征的每个级别创建一个二进制变量,这意味着您会遇到问题,因为某些级别可能不会同时出现在训练和测试集中。

也许有人可以就此向我解释一下。

另外,请注意,这更像是一种刺激而不是劫持。

【讨论】:

以上是关于错误:训练和测试中的关卡集不匹配(knncat R)的主要内容,如果未能解决你的问题,请参考以下文章

错误评估分类器训练和测试数据集不兼容

Weka 中的训练和测试集不兼容

测试数据特征与 OneHotEncoder 的训练数据特征不匹配

找到的程序集的清单定义与程序集不匹配

深度学习训练集的损失曲线收敛很快而且验证集不下降是啥原因导致的?

神经网络与深度学习笔记训练集