能给我相同特征向量的数据?

时间:2015-03-06 04:14:16

标签: python pandas statistics

关于什么样的数据集可以说nXd(n行,d列)的任何建议会给我相同的特征向量?

我相信它应该是每个细胞中具有相同绝对值的那个。像交替+1和-1。但它似乎不然。

任何指针?

1 个答案:

答案 0 :(得分:0)

这有点开放,但基本思想有很多方法是从你想要的特征向量开始并改变特征值和/或重新排列特征向量以创建不同的数据集

这是两个简单的工作示例。首先,您可以缩放矩阵A的特征值,然后生成矩阵B,它将是不同的但具有完全相同的特征向量(按相同的顺序):

>>> import numpy
>>>
>>> numpy.random.seed(1)
>>> A = numpy.random.random((2, 2,))
>>> A = numpy.matrix(A)
>>>
>>> E, Q = numpy.linalg.eig(A)
>>>
>>> B = (Q * numpy.diag(2 * E) * Q.I)
>>>
>>> print(A)
[[  4.17022005e-01   7.20324493e-01]
 [  1.14374817e-04   3.02332573e-01]]
>>> print(B)
[[  8.34044009e-01   1.44064899e+00]
 [  2.28749635e-04   6.04665145e-01]]
>>>
>>> EP, QP = numpy.linalg.eig(A)
>>> print(Q)
[[  9.99999509e-01  -9.87408230e-01]
 [  9.91087124e-04   1.58192878e-01]]
>>> print(QP)
[[  9.99999509e-01  -9.87408230e-01]
 [  9.91087124e-04   1.58192878e-01]]

使用此方法可以生成具有相同特征向量的无限数量的不等矩阵。实际上,如果需要,特征值可以是随机对角矩阵。

另一种方法(在众多方法中)是重新排列特征向量和特征值:

>>> QF = numpy.fliplr(Q)
>>> C = (QF * numpy.diag(-1.0 * E) * QF.I)
>>> print(A)
[[  4.17022005e-01   7.20324493e-01]
 [  1.14374817e-04   3.02332573e-01]]
>>> print(C)
[[ -3.02332573e-01   7.20324493e-01]
 [  1.14374817e-04  -4.17022005e-01]]
>>> EF, QF = numpy.linalg.eig(C)
>>> print(Q)
[[  9.99999509e-01  -9.87408230e-01]
 [  9.91087124e-04   1.58192878e-01]]
>>> print(QF)
[[  9.99999509e-01  -9.87408230e-01]
 [  9.91087124e-04   1.58192878e-01]]