我正在尝试使用R中的knncat进行knn分类,因为我的数据集中有分类属性。
knncat(FinalData, FinalTestData, k=10, classcol = 15)
当我执行上述语句时,它给出了以下错误:train和test中的级别集不匹配。
在检查所有属性的级别时,我确实得到了改变。我有一个country属性,可以在列车数据集中取1-41个值。
但是,在测试数据集中,某个特定国家/地区永远不会出现,因此会导致此错误。我该如何处理?
答案 0 :(得分:2)
我不确定,但您可以按照以下因素匹配。
train <- factor(c("a","b","c"))
test <- factor(c("a","b"))
levels(test) <- levels(train)
test
[1] a b
Levels: a b c
答案 1 :(得分:0)
也许我错了,但这不会有问题,因为KNN algorithm
的调整基于Euclidian distance calculations
,对吧?
您是否仍然需要为分类功能的每个级别创建二进制变量,这意味着如果某些级别可能不会出现在训练集和测试集中,则会出现问题。
有人可能会对此表示启发。
另外,作为一个注释,这意味着更多的是刺激而不是劫持。