我尝试使用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)
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方法,kdataf为上面的数据采样的数据帧:
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
答案 0 :(得分: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”'。 我知道这不是问题的真正解决方案,但至少,你可以完成你的工作。 希望它有所帮助。