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

为何无法使用Python的statistics.correlation?AttributeError报错如何解决?

报错原因及解决方法

报错原因

statistics.correlation 是Python 3.10版本才新增的函数,若你当前使用的Python版本低于3.10,就会触发AttributeError: module 'statistics' has no attribute 'correlation'错误。IDE的语法提示基于高版本Python特性,和你实际运行的Python版本不匹配,才会出现这种提示与实际运行结果矛盾的情况。

解决方法

方法1:升级Python版本

将Python版本升级到3.10或更高版本,原代码即可正常执行,输出结果为1.0(完全相同的序列皮尔逊相关系数为1)。

方法2:使用第三方库计算相关性

若不想升级Python版本,可借助numpy或scipy库实现皮尔逊相关系数计算:

基于numpy实现

import numpy as np

x = [1, 2, 3, 4, 5, 6]
corr_matrix = np.corrcoef(x, x)
print(corr_matrix[0, 1])  # 输出1.0

基于scipy实现

from scipy.stats import pearsonr

x = [1, 2, 3, 4, 5, 6]
corr, p_value = pearsonr(x, x)
print(corr)  # 输出1.0

方法3:手动实现皮尔逊相关系数

若不想依赖第三方库,可手动编写计算逻辑:

def correlation(x, y):
    n = len(x)
    sum_x = sum(x)
    sum_y = sum(y)
    sum_xy = sum(a*b for a, b in zip(x, y))
    sum_x2 = sum(a**2 for a in x)
    sum_y2 = sum(b**2 for b in y)
    
    numerator = n * sum_xy - sum_x * sum_y
    denominator = ((n * sum_x2 - sum_x**2) * (n * sum_y2 - sum_y**2)) ** 0.5
    
    return numerator / denominator if denominator != 0 else 0.0

x = [1, 2, 3, 4, 5, 6]
print(correlation(x, x))  # 输出1.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:15:26