![](/img/trans.png)
[英]How to get eigen values for the sklearn.decomposition.PCA analysis?
[英]How to use the eigen decomposition in numpy?
在下面的算法中,权重是一个 2017x2017 的秩为 7 的对称矩阵。
我正在尝试对特征分解的列做一些事情,但是我什至无法让它们与原始矩阵相加。 neoweights1 = 权重,但 neoweights = 完全不同的东西。 这里有什么错误?
w,v = np.linalg.eig(weights)
neoweights1 = w2 * (v2 @ v2.T)
neoweights = np.zeros((matsize,matsize))
for i in range(7):
neoweights += np.real(w2[i] * (v2[i] @ v2[i].T))
您的示例没有显示 w2 和 v2 的来源,但我猜它们也是 np.linalg.eig 的结果。 在这种情况下,请注意 v2 中的每一列都是一个特征向量。 但是v2[i]
给了你一行。
接着, v2[i] @ v2[i].T
是向量点积,意思是整个表达式neoweights += np.real(w2[i] * (v2[i] @ v2[i].T))
只需为矩阵的每个元素添加一个标量值。
这就是你想要的:
neoweights = sum(np.real(np.outer(w[i] * v[:,i], v[:,i])) for i in range(7))
对于矩阵表达式,您必须小心何时以及如何与权重相乘。 这应该工作: np.real(w * v @ vT)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.