复现复杂网络社区检测论文:乌鸦搜索算法(Crow Search Algorithm)与kmeans结合的实现疑问求助
复现复杂网络社区检测论文:乌鸦搜索算法(Crow Search Algorithm)与kmeans结合的实现疑问求助
我已经花了一年多的时间,尝试复现一篇基于深度学习的复杂网络社区检测的论文,但卡在了乌鸦搜索算法(CSA)和K-means结合的核心步骤上,始终没法得到和论文一致的结果,现在时间非常紧张,实在走投无路了,恳请大家帮忙!
我理解的论文核心流程
按照论文描述,CSA的实现应该是以下步骤:
- 生成初始种群
- 将种群位置传入适应度函数
- 用真实标签计算种群位置的NMI值
- 返回NMI得分最高的位置
- 筛选出最优位置
- 将最优位置作为初始聚类中心传入K-means
- K-means输出最终的社区划分结果
遇到的核心问题
我在实现时,走到步骤3就卡壳了:生成的初始种群是连续数值,但我的数据集真实标签是离散的社区编号,根本没法直接计算NMI。
我试过ChatGPT给出的方案:在适应度函数里先对种群位置跑K-means,再用K-means的聚类结果和真实标签计算NMI。但这样的话,K-means就要用两次——一次在适应度函数里,一次在CSA流程的最后一步来生成最终社区。
我按这个方案实现后,结果完全不对:论文要求的四个评估指标(NMI、Precision、Recall、Modularity)没有一个能和论文表格里的数值对上。
论文第9页给出的算法伪代码
Input: S : Flock Size, d : number of dimensions, F : Set of all possible solutions and values, itermax : Max number of iterations, fl : flight length, AP : Awareness probability Output: Optimal positions 1: crowPositions ← InitializeRandomPosition(d, F, S) 2: Memory ← InitializeMemory(d, F, S) 3: Fitness ← CalculateFitness(CrowPositions) 4: score ← NMIscore(ActualLabels, PredictedClusterLabels) 5: while k < itermax 6: for i ← 1 to S 7: ri ← GenerateRandom() 8: RandomCrow ← ChooseRandomCrow(S) 9: NewPosn ← UpdatePosn(CrowPositions, i, Memory, RandomCrow, AP, ri) 10: endfor 11: if NewPosn ∈ F 12: CrowPostions ← NewPosn 13: endif 14: NewFitness ← CalculateFitness(CrowPostions) 15: if NewFitness > Fitness 16: Memory ← CrowPostions 17: endif 18: k ← k + 1 19: endwhile 20: return crow position with best fitness out of all CrowPostions
补充说明
我手头有论文里用到的所有数据集的真实标签,也试过各种调整参数的方法,但始终没进展。之前还花钱找别人帮忙实现,结果对方给的代码完全不对,既浪费了时间也没退回钱,现在真的非常焦虑。
如果有人读懂了这篇论文的实现逻辑,或者遇到过类似的问题,恳请指点我到底哪里错了,应该怎么修正这个流程?
备注:内容来源于stack exchange,提问作者Mahsa.S
相关产品推荐
相关产品推荐

