全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
10549 22
2015-11-09
代码如下:
CER <- function(partition1,partition2){
  if (length(partition1)!= length(partition2))
    stop("partition1 and 2 dont have the same observations")
  mycer=0
  for (i in 1:length(partition1)-1){
    for (j in (i+1):length(partition1)){
      mycer <- mycer+abs(as.numeric(partition1[i]==partition1[j])-as.numeric(partition2[i]==partition2[j]))
    }
  }
  error_rate <- mycer/(length(partition1)*(length(partition1)-1)/2)
  return (error_rate)
}
测试的数据为:
partition1<- c(3,3,1,1,1,3,1,1,1,1,1,3,3,1,3,1,3,1,3,1,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 2, 1, 3, 2, 3, 2, 1, 1, 3, 3, 1, 1, 3, 1, 2, 1, 1, 3)
partition2<-c(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 ,3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
先运行循环
mycer=0
  for (i in 1:length(partition1)-1){
    for (j in (i+1):length(partition1)){
      mycer <- mycer+abs(as.numeric(partition1[i]==partition1[j])-as.numeric(partition2[i]==partition2[j]))
    }
得到的结果是 mycer为numeric(0),但是单独运行每一个循环,能得到正确的数字,不知道是怎么回事

二维码

扫码加我 拉你入群

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

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

全部回复
2015-11-9 17:55:14
你要把mycer保存成一个矩阵形式才行啊,
试一下,
mycer=matrix(NA,i,j)
然后把循环里的:
复制代码
二维码

扫码加我 拉你入群

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

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

2015-11-9 18:02:21
jiangbeilu 发表于 2015-11-9 17:55
你要把mycer保存成一个矩阵形式才行啊,
试一下,
mycer=matrix(NA,i,j)
好像不行,出来都是NA,而且mycer也不是一个矩阵,他得到的应该是一个数值
二维码

扫码加我 拉你入群

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

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

2015-11-9 18:07:01
你把你要用这两串数做什么,简单明了地说一下吧,我看一下不用循环怎么做。
在R里,能不用循环就不用循环的
二维码

扫码加我 拉你入群

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

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

2015-11-9 18:18:15
jiangbeilu 发表于 2015-11-9 18:07
你把你要用这两串数做什么,简单明了地说一下吧,我看一下不用循环怎么做。
在R里,能不用循环就不用循环的 ...
本意是做一个针对聚类结果的评估的,Partition1和partition2是两种聚类结果,参考的公式是
其中,n是样本个数,P和Q为两个聚类结果
二维码

扫码加我 拉你入群

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

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

2015-11-9 18:26:39
公式看不见额
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群