【发布时间】:2017-05-22 13:55:15
【问题描述】:
我有 17 列的 45212 个元素的数据集,我想使用 kNN 算法找到最后一列的类标签,据我说一切都很好,但我总是想出错误
"Error in knn(train = data_train, test = data_test, cl = data_train_labels, :
no missing values are allowed"
这是我的代码
> data_train <-data[1:25000,]
> data_test <-data[25001:45212,]
> data_train_labels <- data[1:25000, 17]
> data_test_labels <- data[1:25000, 17]
> install.package("class")
> library(class)
> data_test_pred <- knn(train=data_train, test=data_test, cl=data_train_labels, k=10)
这是我的数据集的样子:
age,job,marital,education,default,balance,housing,loan,contact,day,month,duration,campaign,pdays,previous,poutcome,y
58,management,married,tertiary,no,2143,yes,no,unknown,5,may,261,1,-1,0,unknown,no
44,technician,single,secondary,no,29,yes,no,unknown,5,may,151,1,-1,0,unknown,no
33,entrepreneur,married,secondary,no,2,yes,yes,unknown,5,may,76,1,-1,0,unknown,no
47,blue-collar,married,unknown,no,1506,yes,no,unknown,5,may,92,1,-1,0,unknown,no
33,unknown,single,unknown,no,1,no,no,unknown,5,may,198,1,-1,0,unknown,no
35,management,married,tertiary,no,231,yes,no,unknown,5,may,139,1,-1,0,unknown,no
28,management,single,tertiary,no,447,yes,yes,unknown,5,may,217,1,-1,0,unknown,no
42,entrepreneur,divorced,tertiary,yes,2,yes,no,unknown,5,may,380,1,-1,0,unknown,no
58,retired,married,primary,no,121,yes,no,unknown,5,may,50,1,-1,0,unknown,no
43,technician,single,secondary,no,593,yes,no,unknown,5,may,55,1,-1,0,unknown,no
41,admin.,divorced,secondary,no,270,yes,no,unknown,5,may,222,1,-1,0,unknown,no
【问题讨论】:
-
调试你的代码。找出缺失值的位置,以及在哪一步得到它们。
-
编译器在谈论什么价值观?我的数据集中没有发现任何缺失值
-
data_train、data_test 或 data_train_labels 可能包含缺失值
-
您是如何检查缺失值的?你可以试试
length(complete.cases(data_train))和 data_test 和 data_train_labels 一样吗? -
顺便说一句,这是一个不同的问题,但你在 test_labels
data_test_labels <- data[1:25000, 17]应该是data_test_labels <- data[25001:45212, 17]中有一个剪切和粘贴错误