楼主: pandaxiong2012
15428 4

[问答] R语言Knn算法中的训练集和测试集必须各占一半吗? [推广有奖]

  • 21关注
  • 4粉丝

讲师

30%

还不是VIP/贵宾

-

威望
0
论坛币
992 个
通用积分
5.9100
学术水平
11 点
热心指数
10 点
信用等级
9 点
经验
8118 点
帖子
422
精华
0
在线时间
489 小时
注册时间
2012-5-30
最后登录
2022-8-11

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
今天遇到一个很奇怪的问题,在R中用Knn算法实现数据集iris3聚类时,本来把50份数据按30份训练数据,20份测试数据进行编码时,运行出现错误,说是“训练集和类长度不一致(错误于knn.cv(train, test, cl, k = 3, prob = TRUE) :  'train' and 'class' have different lengths)”,但是仅仅把数据按照25作为训练集,25作为测试集则能运行通过。这是为什么呢?搞不懂。求坛里的大牛帮忙解释解释。感激不尽!(现在把代码都粘在下面)
library(FNN)
library(gmp)
library(rknn)

data(iris3)
  train <- rbind(iris3[1:30,,1], iris3[1:30,,2], iris3[1:30,,3])  #选前30个数据为训练数据
  test <- rbind(iris3[31:50,,1], iris3[31:50,,2], iris3[31:50,,3])#剩下的为测试数据
  cl <- factor(c(rep("s",30), rep("c",30), rep("v",30)))
  knn.cv(train, test, cl, k = 2, prob=TRUE)                         #进行KNN算法分类,此处出现错误

错误于knn.cv(train, test, cl, k = 3, prob = TRUE) :  'train' and 'class' have different lengths

#下面这份代码能运行通过
> data(iris3)
>     train <- rbind(iris3[1:25,,1], iris3[1:25,,2], iris3[1:25,,3])
>     test <- rbind(iris3[26:50,,1], iris3[26:50,,2], iris3[26:50,,3])
>     cl <- factor(c(rep("s",25), rep("c",25), rep("v",25)))
>     knn(train, test, cl, k = 3, prob=TRUE)



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Knn算法 测试集 R语言 knn 训练集 R语言 Knn算法 iris3 测试集 训练集

本帖被以下文库推荐

最近一直在学R,累坏了,而且进展太慢!
沙发
peterf 在职认证  发表于 2013-10-21 19:16:37 |只看作者 |坛友微信交流群
You can  explore  it have "ties".
徘徊在统计学的大门之外

使用道具

藤椅
lww1993 发表于 2014-6-18 21:30:42 |只看作者 |坛友微信交流群
你的第一段代码写错了:
最后一行应该是 knn(train, test, cl, k = 2, prob=TRUE) ,而不是用knn.cv,knn.cv是用来做cross validation的。
在使用knn.cv的时候,你的第二个参数应该是cl,而不是test,所以会报错。
p.s.不知道这个时候回答是不是太晚了。

使用道具

板凳
xf409 发表于 2015-4-14 14:07:44 |只看作者 |坛友微信交流群
该函数自动设立train和test集,是leave one out,只定一个是test,其余全部当做train。所以无需你去设置。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-20 04:38