为了账号安全,请及时绑定邮箱和手机立即绑定

协方差矩阵使用 np.matmul(data.T, data)

协方差矩阵使用 np.matmul(data.T, data)

aluckdog 2021-10-26 11:00:22
这是我在网上找到的代码d0 = pd.read_csv('./mnist_train.csv')labels = d0.label.head(15000)data = d0.drop('label').head(15000)from sklearn.preprocessing import StandardScalerstandardized_data = StandardScaler().fit_transform(data)#find the co-variance matrix which is : (A^T * A)/nsample_data = standardized_data# matrix multiplication using numpycovar_matrix = np.matmul(sample_data.T , sample_data) / len(sample_data)相同数据相乘如何得到np.matmul(sample_data.T, sample_data)协方差矩阵?根据我在网上找到的本教程,协方差矩阵是什么?最后一步是我不明白的。
查看完整描述

2 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

对于数学或统计堆栈交换来说,这可能是一个更好的问题,但我现在会在这里回答。

这来自协方差的定义。维基百科页面(链接)提供了很多细节,但协方差被定义为(在伪代码中)

cov = E[dot((x - E[x]), (x - E[x]).T)]

对于列向量,但在您的情况下,您可能有行向量,这就是为什么点积中的第一个元素被转置,而不是第二个元素的原因。所述E[...]装置预期值,这对于高斯分布的数据的平均值。当您执行 时StandardScaler().fit_transform(data),您基本上是在减去数据的平均值,所以这就是为什么您没有在点积中明确这样做的原因。

请注意,这StandardScaler()也除以方差,因此它将所有内容归一化为单位方差。这会影响你的协方差!因此,如果您需要未经归一化的数据的实际协方差,只需使用类似np.cov()numpy 模块的东西来计算它。


查看完整回答
反对 回复 2021-10-26
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

让我们一步一步地构建协方差矩阵,首先让我们定义方差。

一些随机变量 X 的方差衡量分布中的值相对于均值的平均变化程度。

现在我们必须定义协方差。协方差是两个随机变量联合概率的度量。它描述了两个变量如何一起变化。

所以现在你可以理解协方差矩阵是一个矩阵,它显示了每个特征如何随着其他特征的变化而变化。这可以计算为 

在那里你可以看到你对底部形成的等式感到困惑。如果您有任何进一步的疑问,请发表评论。


查看完整回答
反对 回复 2021-10-26
  • 2 回答
  • 0 关注
  • 260 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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