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

scipy调用contingency.association计算Tschuprow关联度报无属性错误

Tschuprow关联度计算scipy报错排查方案

报错根因排查顺序

  • 第一优先级检查scipy版本:scipy.stats.contingency.association 是scipy 1.7.0版本才正式上线的函数,低于该版本的scipy环境下contingency模块不存在这个属性,是触发该报错的最常见原因。
    执行以下代码检查当前scipy版本:
    import scipy
    print(scipy.__version__)
    
    如果版本号低于1.7.0,直接执行升级命令即可:
    • pip环境:pip install --upgrade scipy
    • conda环境:conda update scipy
  • 第二优先级检查子模块导入逻辑:仅写import scipy不会自动递归加载stats下的contingency子模块,哪怕版本符合要求,也可能出现属性识别失败的问题,需要显式导入对应子模块/函数。

现有代码逻辑错误修正

除了属性报错的问题,原有代码的传参逻辑也不符合函数要求,就算解决属性问题也无法正常运行:
association函数的observed入参要求传入两个变量交叉统计得到的二维列联表(频数表),不能直接把两个原始变量的序列拼成列表传入。
正确可运行的代码流程如下:

  1. 显式导入依赖
    import pandas as pd
    import numpy as np
    from scipy.stats.contingency import association, crosstab
    
  2. 提取变量并生成符合要求的列联表
    x = df["tablename1"]
    y = df["tablename2"]
    # 生成二维列联表,crosstab返回结果的count属性为频数统计矩阵
    observed_table = crosstab(x, y).count
    
    如果习惯用pandas生成列联表也可以,代码为:
    observed_table = pd.crosstab(x, y).values
    
  3. 调用函数计算Tschuprow关联度
    tschuprow_score = association(observed_table, method='tschuprow')
    

有效性验证

完成上述操作后,可以执行以下代码确认属性存在:

import scipy.stats.contingency
print('association' in dir(scipy.stats.contingency))

输出为True即说明属性问题已解决,传入正确格式的列联表即可得到计算结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:03:20