作者回复: 你原来的代码里有两个误输入,
1. x矩阵中的[5, 5, 5, 0, 5]应该是[5, 5, 5, 0, 0]
2.print(" 与矩阵 x 一致? \n", U.dot(S).dot(VT.transpose()))应该是print(" 与矩阵 x 一致? \n", U.dot(S).dot(VT)),这里VT已经转置过了。
这样得到的奇异值是[9.64365076e+00 5.29150262e+00 7.52989891e-16 0.00000000e+00
0.00000000e+00],后面3个接近0,忽略不计
作者回复: x1...xn标准化之后,就意味着数据的分布呈现标准正态分布,均值为0,标准差为1。所有就有(x1-0)^2+...+(xn-0)^2=1,也就是∣∣Vi∣∣2=1。所以V'iVi=1,而这个1正好是矩阵V'V对角线上的值,对角线上全部为1,其他值全为0,所以V'V = I(单位矩阵)
作者回复: 你是指最后的文档集合的那个例子?对,这是分解后的结果