KNNCAT错误"有些班级只有一名成员"

时间:2016-08-12 18:53:14

标签: r machine-learning knn

我尝试使用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

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”'。 我知道这不是问题的真正解决方案,但至少,你可以完成你的工作。 希望它有所帮助。

相关问题