我正在尝试使用knncat的knncat函数对自动数据运行KNN分析。我的训练集大约有700,000个观察值。当我尝试实施分析时,会发生以下情况。在读取数据时,我尝试使用完整的case方法删除NA。我不确定确切如何处理错误或它们的含义。
kdata.training = kdataf[ind==1,]
kdata.test = kdataf[ind==2,]
kdata_pred = knncat(train = kdata.training, test = kdata.test, classcol = 4)
knncat中的错误(train = kdata.training,test = kdata.test,classcol = 4):
有些班只有一名成员。检查“ 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)
knncat中的错误(train = kdata_strain,test = kdata_stest,classcol = 4):
一些因素的水平为空
这是在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]
这样,就不再有“某些因素的水平为空”或“某些类别的成员只有一个”的消息。检查“ classcol”。
我知道这不是解决问题的真正方法,但是至少您可以完成工作。
希望能帮助到你。
关于r - KNNCAT错误“某些类只有一个成员”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38924713/