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

Markov聚类(MCL)模块化计算报错:float对象不可迭代问题求助

Markov聚类(MCL)modularity计算报错排查

问题重现

使用Markov聚类算法对6个数据点聚类时,基于自定义相似性矩阵遍历inflation参数并计算modularity,触发如下错误:

TypeError: 'float' object is not iterable

相关代码片段:

# 遍历1.5到2.5的inflation值并计算modularity
for inflation in [i / 10 for i in range(15, 26)]:
    result = mc.run_mcl(Matrix, inflation=inflation)
    clusters = mc.get_clusters(result)
    Q = mc.modularity(matrix=result, clusters=clusters)
    print("inflation:", inflation, "modularity:", Q)

错误原因

mc.modularity()函数的第一个参数要求传入原始邻接/相似性矩阵,而非mc.run_mcl()返回的MCL迭代结果矩阵。错误传入MCL处理后的矩阵result,导致函数内部处理逻辑出现类型不兼容问题。

注:markov_clustering库的get_clusters()默认返回嵌套列表格式(每个子列表对应一个聚类),因此格式问题并非本次报错的核心原因,但可后续验证确认。

修复方案

将mc.modularity()的matrix参数替换为原始相似性矩阵Matrix:

# 修正后的代码
for inflation in [i / 10 for i in range(15, 26)]:
    result = mc.run_mcl(Matrix, inflation=inflation)
    clusters = mc.get_clusters(result)
    # 传入原始相似性矩阵Matrix而非MCL结果矩阵
    Q = mc.modularity(matrix=Matrix, clusters=clusters)
    print("inflation:", inflation, "modularity:", Q)

额外验证

若仍有异常,可先打印聚类结果格式确认是否符合要求:

print("聚类结果格式:", clusters)

正常输出应为嵌套列表,例如:

聚类结果格式: [[0], [1], [2], [3], [4], [5]]

或

聚类结果格式: [[0,2], [1,4,5], [3]]

内容的提问来源于stack exchange,提问作者aam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:55:20