对中心化的数据矩阵X为什么Σ=(X^T)X/(n-1)这里我是用代码验证结果对不上。

对中心化的数据矩阵X为什么Σ=(X^T)X/(n-1)这里我是用代码验证结果对不上。

有疑问的特性:

https://img1.sycdn.imooc.com/climg/1d0755690900a0c010500109.jpg

课程中讲解的截图:

https://img1.sycdn.imooc.com/climg/eb7bb4690900a13418471048.jpg

这里有个疑问:计算方差的公式如下:

https://img1.sycdn.imooc.com/climg/c0db74690900a19307990228.jpg

计算协方差的公式如下:

https://img1.sycdn.imooc.com/climg/1f8dbf690900a1ae10780185.jpg

在课程中计算的方差Sx1^2,协方差Cov(x1, x2) 中每一项元素并没有减去期望值?很是疑惑,使用代码检查,发现计算结果也对不上,求老师解答:

https://img1.sycdn.imooc.com/climg/1fbf3e690900a2ea10341187.jpg

相关代码:

# 协方差矩阵
import numpy as np

A = np.array([1,2,3,4,2,3,4,5]).reshape(2, 4)
# 使用公式计算协方差矩阵
c = np.cov(A)
print(c) # 协方差矩阵
'''
[[1.66666667 1.66666667]
 [1.66666667 1.66666667]]
'''
At = A.T
# 使用公式验证
d = (A @ At) / (4 - 1)
print(d)
'''
[[10.         13.33333333]
 [13.33333333 18.        ]]
'''

# 两个结果对不上?









正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
哈哈大圣618 提问者 2025-10-28 21:51:27

什么叫做中心化,就是矩阵每个元组都已经减去了均值。。。

  • GuoSr #1

    是的,同学你的问题非常好。事实上A应该是“中心化”的矩阵,视频中的例子并不太合适。也就是说每个行向量的均值为0才合适。如果你用中心化的矩阵来验证这个例子,算出来的结果就能匹配,如下:


    # 协方差矩阵
    import numpy as np
    
    A = np.array([1,2,3,4,2,3,4,5]).reshape(2, 4)
    A = A - A.mean(axis=1, keepdims=True) # 中心化A
    
    # 使用公式计算协方差矩阵
    c = np.cov(A)
    print(c) # 协方差矩阵
    '''
    [[1.66666667 1.66666667]
     [1.66666667 1.66666667]]
    '''
    At = A.T
    # 使用公式验证
    d = (A @ At) / (4 - 1)
    print(d)
    
    print(f'c == d is {np.allclose(c, d)}')


    2025-10-29 14:10:14
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
深入AI/大模型必修数学体系
  • 参与学习       162    人

严选AI强关联数学干货,数学与代码结合、50+AI与数学实践,通俗易懂,旨在消除程序员在深入AI领域的数学屏障,无论你是想夯实数学基础,还是深耕AI领域,本课都将是你的首选

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师