KNNCAT 错误 "some classes have only one member"

KNNCAT error "some classes have only one member"

我正在尝试 运行 使用 knncat 的 knncat 函数对汽车数据进行 KNN 分析。我的训练集大约有 700,000 个观察值。当我尝试实施分析时会发生以下情况。我试图在读取数据时使用完整案例方法删除 NA。我不确定如何处理错误或它们的含义。

kdata.training = kdataf[ind==1,]
kdata.test = kdataf[ind==2,]
kdata_pred = knncat(train = kdata.training, test = kdata.test, classcol = 4)

Error in knncat(train = kdata.training, test = kdata.test, classcol = 4) : Some classes have only one member. Check "classcol"

当我尝试 运行 训练集和测试集的一小部分(分别为 200 和 70 个观察值)时,出现以下错误:

kdata_strain = kdata.training[1:200,]
kdata_stest = kdata.test[1:70,]
kdata_pred = knncat(train = kdata_strain, test = kdata_stest, classcol = 4)

Error in knncat(train = kdata_strain, test = kdata_stest, classcol = 4) : Some factor has empty levels

这是在 kdataf 上调用的 str 方法,上面的数据是为其采样的数据帧:

 str(kdataf)
'data.frame':   1159712 obs. of  9 variables:
 $ vehicle_sales_price: num  13495 11999 14499 12495 14999 ...
 $ week_number: Factor w/ 27 levels "1","2","3","4",..: 11 10 13 10 10 9 18 10 10 10 ...
 $ county: Factor w/ 219 levels "Anderson","Andrews",..: 49 49 49 49 49 49 49 49 49 49 ...
 $ ownership_code     : Factor w/ 23 levels "1","2","3","4",..: 11 11 3 1 11    11 11 11 11 11 ...
 $ X30_days_late      : Factor w/ 2 levels "0","1": 1 1 2 1 1 1 1 1 1 1 ...
 $ X60_days_late      : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 2 1 1 1 ...
 $ penalty            : num  0 0 55.3 0 0 ...
 $ processing_time    : int  28 24 32 29 19 20 63 27 28 24 ...
 $ transaction_code   : Factor w/ 2 levels "TITLE","WDTA": 2 2 2 2 2 2 2 2 2 2 ...

种子设置为“1234”,训练数据与测试数据的比率为2:1

首先,我对 R 知之甚少,所以对我的回答持保留态度。 我有同样的问题,这没有意义,因为没有 NA。我一开始以为我的数据中有奇怪的字符,例如 '、/ 等。但是不,当我在定义我的训练集后放置以下三行代码时,knncat 算法可以处理这些字符(我使用 data.table 因为我的数据很大):

write.csv(train, file="train.csv")
train <- fread("train.csv", sep=",", header=T, stringsAsFactors=T)
train[,V1:=NULL]

然后,没有更多的消息'Some factor has empty levels'或'Some classes have only one member. Check "classcol"'。 我知道这不是真正解决问题的办法,但至少,你可以完成你的工作。 希望对你有帮助。