楼主: 跳蚤侠
10684 22

[问答] 运行一个循环,结果得到了numeric(0),但是循环内的每一次运算是正确的 [推广有奖]

11
跳蚤侠 发表于 2015-11-9 19:23:40
jinkelazzz 发表于 2015-11-9 19:12
j的循环加括号了,i为啥不加
都有啊

12
跳蚤侠 发表于 2015-11-9 19:32:35
jiangbeilu 发表于 2015-11-9 19:19
解释一下公式的意思可以不?因为我不做你这方向的研究,就算看一下公式,也不一定能准确理解这个意思。
...
P和Q是两种聚类方法对同一组数据得到的聚类结果,比如P=(1,1,2,2,2,3,3,3,3,2,1,1,2),Q=(1,1,1,1,2,2,3,3,3,2,2,1,1),表示的是整个数据集分三类,每一个样本数据属于哪一类,其中P是正确的分类结果,Q是有误差的结果,然后CER是一个判断Q的聚类结果好坏的指标,主要是计算错分的情况,1_P(i,i')指的是第i个和第i'个样本数据是不是在同一类,如果P(i)=p(i'),那么1_P(i,i')=1,如果不相等,就为0,用上面的数据为例,P[1]=1,P[2]=1,那么P(1,2)=1,因为P[1]=P[2],又P[2]=1,P[3]=2,那么P(2,3)=0,因为P[2]≠P[3],1_Q(i,i')和P的定义是相同的,然后对每一个i和i',计算1_P(i,i')—1_Q(i,i')的值,遍历每一个元素后进行差的绝对值求和,最后就是想要得到的CER的结果了。

13
jiangbeilu 学生认证  发表于 2015-11-9 21:21:45
  1. # 有两个变量
  2. p=c(1,2,3,1,1,1,2,2,3,4)
  3. q=c(1,2,3,4,5,6,6,7,7,6)
  4. # 转换思路,不用循环,用组合的形式
  5. # 那个i>i'的式子,想了好久,用组合还是比较合适的
  6. # comb(p,2)是从p向量中选出两个数,这样的组合,因为p长度为10
  7. # 共有45个,和你执行循环是一样的结果
  8. # 然后比较是否相同,这两个数,相同为1,不相同为0
  9. # 得到的lp,lq就是你式子中的对应部分
  10. lp=apply(t(combn(p,2)),1,function(x) ifelse(x[1]-x[2]==0,1,0))

  11. lq=apply(t(combn(q,2)),1,function(x) ifelse(x[1]-x[2]==0,1,0))
  12. # 求绝对值之和即可
  13. cer=sum(abs(lp-lq))
复制代码
已有 1 人评分学术水平 热心指数 收起 理由
求证1加1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

14
跳蚤侠 发表于 2015-11-9 22:26:22
jiangbeilu 发表于 2015-11-9 21:21
虽然计算结果不对,还是感谢,最后我用笨办法先算出循环结果,然后保存成vector,每一个item相加,算出来了

15
jiangbeilu 学生认证  发表于 2015-11-9 22:33:03
跳蚤侠 发表于 2015-11-9 22:26
虽然计算结果不对,还是感谢,最后我用笨办法先算出循环结果,然后保存成vector,每一个item相加,算出来 ...
问题是我按照你的说明做的,思路是没有问题的。
你再看一下,你用循环和这样的结果是一样的,而且你的循环也是有问题的。

如果思路准确,程序出错了,就只能再改程序。这是原则问题,错了不要紧,但是要向着正确的方向一步一步逼近。
也有可能你那边计算的式子也有问题。如果你给我的是某个课程的作业题的话,我相信你应该是前面算错了。
你自己算也好,如果是作业的话,自己做印象更深,也得到锻炼。

16
czrdiao 发表于 2015-11-11 14:45:48
for (i in 1:length(partition1)-1)  应该是for (i in 1:(length(partition1)-1)), 你漏了()

17
跳蚤侠 发表于 2015-11-12 15:18:43
czrdiao 发表于 2015-11-11 14:45
for (i in 1:length(partition1)-1)  应该是for (i in 1:(length(partition1)-1)), 你漏了()
这个不需要,两种情况是一样的

18
跳蚤侠 发表于 2015-11-12 15:21:51
jiangbeilu 发表于 2015-11-9 22:33
问题是我按照你的说明做的,思路是没有问题的。
你再看一下,你用循环和这样的结果是一样的,而且你的循 ...
嗯,感谢!

19
czrdiao 发表于 2015-11-14 15:16:17
跳蚤侠 发表于 2015-11-12 15:18
这个不需要,两种情况是一样的
1:10-1
1:(10-1)
上述两种情况是一样的??

20
跳蚤侠 发表于 2015-11-14 22:28:41
czrdiao 发表于 2015-11-14 15:16
1:10-1
1:(10-1)
上述两种情况是一样的??
在R中是一样的,我试过了

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 04:44