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

平稳性检验后计算相关性报name 'correl' is not defined错误求助

问题原因

触发name 'correl' is not defined报错的核心原因是Python缩进错误引发的作用域异常:

  1. 你写的correl = correl.drop(...)和return语句没有缩进在get_pair_above_threshold函数的代码块内,属于全局作用域代码
  2. correl、pairs_to_drop是仅在函数内部定义的局部变量,全局作用域无法访问这两个变量,运行时自然会报变量未定义错误
  3. 原代码重复调用3次X.corr()做重复计算,会产生不必要的性能开销,可以一并优化。
修复后代码
def get_pair_above_threshold(X, threshold):
    # 仅计算一次相关系数矩阵,避免重复运算
    corr_matrix = X.corr().abs()
    correl = corr_matrix.unstack()
    pairs_to_drop = set()
    cols = corr_matrix.columns
    col_num = corr_matrix.shape[1]
    for i in range(col_num):
        for j in range(i + 1):
            pairs_to_drop.add((cols[i], cols[j]))
    # 以下两行缩进至函数内部,修复作用域问题
    correl = correl.drop(labels=pairs_to_drop).sort_values(ascending=False)
    return correl[correl > threshold].index

# 调用函数
print(get_pair_above_threshold(X, 0.7))
修复逻辑说明
  • 调整缩进:将剔除重复相关对、排序、返回结果的逻辑全部放入函数体内部,保证代码可以正常访问函数内定义的局部变量
  • 性能优化:将重复调用的相关系数计算逻辑提前缓存为corr_matrix变量,减少冗余计算
  • 原有业务逻辑完全保留:自动剔除矩阵对角线的变量自相关结果、重复的变量对组合,最终返回相关系数绝对值高于设定阈值的变量对。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:21:22