You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

复现复杂网络社区检测论文:乌鸦搜索算法(Crow Search Algorithm)与kmeans结合的实现疑问求助

复现复杂网络社区检测论文:乌鸦搜索算法(Crow Search Algorithm)与kmeans结合的实现疑问求助

我已经花了一年多的时间,尝试复现一篇基于深度学习的复杂网络社区检测的论文,但卡在了乌鸦搜索算法(CSA)和K-means结合的核心步骤上,始终没法得到和论文一致的结果,现在时间非常紧张,实在走投无路了,恳请大家帮忙!

我理解的论文核心流程

按照论文描述,CSA的实现应该是以下步骤:

  1. 生成初始种群
  2. 将种群位置传入适应度函数
  3. 用真实标签计算种群位置的NMI值
  4. 返回NMI得分最高的位置
  5. 筛选出最优位置
  6. 将最优位置作为初始聚类中心传入K-means
  7. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 15:54:34