下面使用稀疏的和普通的linalg库中的eigh和eigsh不是应该给出同样的答案吗?
from numpy import random
from scipy.linalg import eigh as E1
from scipy.sparse.linalg import eigsh as E2
# Number of eigenvectors to check
kv = 4
# Make a symmetric matrix
N = 20
A = random.random((N,N))
A += A.T
assert( (A==A.T).all() )
L1,V1 = E1(A)
L
我正在尝试使用numpy包将一些MATLAB代码转换为Python,但不确定eig(A)和diag(A)返回的确切内容,其中A是我的问题标题的矩阵。 例如,我在matlab中有以下代码: [U,autoval] = eig(S);
[d,i] = sort(-diag(autoval));
% where S is a 2 x 2 matrix, [1.1762 1.2076; 1.2076 1.5364] 在numpy中,我可以通过执行以下操作来复制第一行: autoval, U = np.linalg.eig(S) 我得把订单过滤掉。如果我错了,请纠正我,在MATLAB中,第一行eig
我需要按特征值大小的降序对特征值-特征向量对进行排序,在调用.sort()函数时,有时(~1/3的时间)会出现以下错误:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
在eigenPairs.sort()调用中,生成错误的代码是这样的:
eigenPairs = [] # list of tuples of (eigenVal, eigenVect)
for i in range(len(eigenVals)):
eigen
我有一个由13列组成的数据集,我希望使用PCA进行数据约简以删除不需要的列。我的问题是PCA没有真正显示列名,而是PC1、PC2等。我发现额外的树分类器做了同样的事情,但确实显示了每个列的变化。我只是想确定他们是否有相同的目标,或者他们的结果是否不同。还有人会建议一种更好的数据缩减方法吗?
我的最后一个问题是,我有一个额外的树分类器的代码,并想确认它是否正确?
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.ensemble im
我是R中的newby,我有一个100x100的方阵。我想找出这个矩阵的最大特征值。我试过了
is.indefinite(x)
但它写道
is.indefinite(x) : argument x is not a symmetric matrix
有人知道求特征值的函数吗,或者更好的是R中最大的特征值?
我正在尝试寻找拉普拉斯矩阵的两个最小特征值的两个特征向量。我是这样做的
[v,c]=eigs(L,M,2,'SM');
其中L是拉帕尔西亚星,M是质量矩阵。
结果,我得到了这个错误
Error using eigs/checkInputs/LUfactorAminusSigmaB (line 1041)
The shifted operator is singular. The shift is an eigenvalue.
Try to use some other shift please.
Error in eigs/checkInputs (line 855)
数周来,我在模拟中遇到了一个数值问题,我终于把它缩小到了MATLAB中Eig函数的问题。在不涉及太多细节的情况下,这里有一个设置两个矩阵K1和K的小脚本,如果您打印它们,它们是完全相同的。但由于某些原因,Eig函数没有返回正确的K特征向量,我不知道为什么。在这个矩阵中,我在长度为1的均匀网格上使用了相邻点之间的网格距离dx = x(i+1)-x(i),但这是与在K1中设置的网格的唯一区别,在那里,我只使用dx=1/N,有人能看到到底发生了什么吗?而且,问题似乎只发生在足够大的N,即小网格距离。我不知道为什么,但我对此感到非常沮丧,因为这对我的硕士论文至关重要。
clear all
在Python3应用程序中,我使用NumPy计算对称实矩阵的特征值和特征向量。
下面是我的演示代码:
import numpy as np
a = np.random.rand(3,3) # generate a random array shaped (3,3)
a = (a + a.T)/2 # a becomes a random simmetric matrix
evalues1, evectors1 = np.linalg.eig(a)
evalues2, evectors2 = np.linalg.eigh(a)
除了符号外,我使用np.linalg.eig和np