问题标签 [eigenvector]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - Eigenvector Centrality Algorithm/Pseudocode
I was wondering if anybody could point me in the direction of some eigenvector centrality pseudocode, or an algorithm (for social network analysis). I've already bounced around Wikipedia and Googled for some information, but I can't find any description of a generalized algorithm or pseudocode.
Thanks!
python - 特征分解容错
我有一个非常简单的问题。它与计算容差误差有关。
让我做(见最后)矩阵 A 在特征向量 V 和对角特征值 D 中的特征分解,并通过乘法 V^-1*D*V 再次构建它。
得到的值远不是A,误差很大。
我想知道我是否使用不正确的函数来执行此任务,或者至少,我怎样才能减少此错误。先感谢您
python - SciPy - 计算对称矩阵中特定特征值的特征向量
我有一个对称矩阵(无向图的邻接矩阵),我有一个特定的特征值(最大特征值),我想要与之关联的特征向量(左或右,任一个,因为我相信左只是转置对称矩阵的权利)。
我正在运行的图可以从数千个到数十万个节点,因此相应的邻接矩阵会很大。然而,密度是稀疏的,因此相应的矩阵也将是稀疏的。
在 SciPy 中有没有一种有效的方法来做到这一点?更好的是,有没有一种方法可以只计算给定对称矩阵的前导特征值和相应的特征向量(这意味着我不必自己显式地计算前导特征值linalg.eigvals
)。
networkx - 使用 NetworkX 计算特征向量中心性
我正在使用 NetworkX 库来处理一些中小型未加权、无符号、有向图,这些图表示 Web 2.0 站点的使用情况(最小的图:不到两打节点,最大的:几千个)。我要计算的一件事是特征向量中心性,如下所示:
但是,这会产生意想不到的结果:具有 0 出度但从非常中心的节点接收向内弧的节点出现在具有 0.0 特征向量中心度的列表的最后(不是数学家,我可能对此感到困惑,但我不认为向外的弧应该对节点对有向图的中心性有任何影响)。在调查这些结果的过程中,我从文档中注意到 NetworkX 默认计算“正确的”特征向量中心性;出于好奇,我决定通过推荐的方法计算“左”特征向量中心性,即在计算特征向量中心性之前反转图形(参见 Networkx 文档)。令我惊讶的是,我得到了完全相同的结果:每个节点都被计算为具有与以前完全相同的特征向量中心性。我认为这应该是一个非常不可能的结果(参见 Wikipedia 文章),但我已经用我正在使用的所有图表复制了它。谁能向我解释我做错了什么?
注意:使用 PageRank 算法的 NetworkX 实现提供了我所期望的结果,即从非常中心的节点接收向内弧的节点即使出度为 0 也具有高中心性。PageRank 通常被认为是特征向量中心性的变体(参见维基百科文章)。
编辑:根据 Aric 的请求,我已经包含了一些数据。这是我最小的图表的匿名版本。(如果问题特定于我的图表结构,我无法发布玩具数据。)在我的机器上运行下面的代码(使用 Python 2.7)似乎显示(a)每个节点的左右特征向量中心性是相同,并且 (b) 出度为 0 的节点也总是具有特征向量中心性 0,即使它们在整个图形中非常中心(例如节点 61)。
python - 最大特征向量和可能的 Scipy 怪异
不确定这是包中的错误还是由于其他原因,但我们开始了。
我正在使用以下包在相似度分数的对称矩阵(大小为 10x10)上找到最大的特征值及其对应的特征向量:
,像这样:
现在我的问题是,当我多次运行它时(使用相同的矩阵、设置等),有时特征向量中的值是正的,有时是负的(参见运行 3)。
有谁知道这可能是为什么,或者它是一个错误?它似乎没有模式,但它只发生在我运行代码而不在每次迭代后关闭 Python 时(即每次运行后按 F5)。
这不是一个大问题,但我不喜欢我的代码中的不确定性 ;-)
提前谢谢了,
马丁
r - 如何在R中获得矩阵的右特征向量?
版:我的问题是我试图S
从方程 8中找到矩阵,但这个方程有错误。
如何直接获得 R 中矩阵的右特征向量?'eigen()' 只给出左特征向量
真的是上一版,我在这里搞得一团糟,但这个问题对我来说真的很重要:
eigen()
提供了一些特征向量矩阵,来自函数帮助:
" 如果 'r <- eigen(A)' 和 'V <- r$vectors; lam <- r$values',那么
(直到数值模糊),其中Lmbd =diag(lam)
“
也就是说A V = V Lmbd
,其中 V 是矩阵现在我们检查它:
我想找到右特征向量矩阵R
,
定义左特征向量矩阵的方程L
是:
定义右特征向量矩阵的方程R
是:
并且 eigen() 仅提供矩阵V
:
我想获得矩阵R
和可能是负定LambdaM
的实矩阵。A
c++ - 通过与许多 3D 平面相交获得最小二乘调整的单线
我正在使用许多 3D 平面并为以下情况寻找最小二乘解决方案。
如果我有许多 3D 平面只知道一个点和法线向量(例如 O1 和 N1),并且所有这些平面彼此相交并形成几乎非常接近的 3d 线,那么如何计算最小二乘调整一个单个 3d 线来表示所有这些交叉点。
为了清楚起见,我插入了一个数字。
- 已知:一个点和每个平面的法向量。
- 查找:最小二乘拟合单 line3d
因为我想用 c++ 做这个,所以我也使用 c++ 标签。
matlab - 谱聚类
首先,我必须说我是 matlab 的新手(和这个网站......),所以请原谅我的无知。
我正在尝试在 matlab 中编写一个函数,该函数将使用光谱聚类将一组点分成两个簇。
我的代码如下
如果我理解正确,那么通过使用第二小的特征向量,我应该能够将数据划分为两个集群 - 如果第二个特征向量的第 i 个成员为正,则第 i 个数据点将在一个集群中,否则它将在另一个集群中。
但是,当我尝试以下
我希望前四个点会形成一个集群,而后四个点会形成另一个集群。
但是,我收到
取第二个特征向量
我发现一个集群包括点 1,0;0,1;100,100;101,100,而另一个集群由点 1,1;0,0;100,101;101,101 组成
我想知道我做错了什么。
注意:作为家庭作业项目的一部分,我正在处理上述内容。
提前致谢!
numpy - scipy.linalg.eig 是否给出了正确的左特征向量?
我有一个关于 scipy.linalg.eig 如何计算左右特征向量的问题。也许我误解了一切,但事情似乎不适合我......
从一开始就。为了获得特征值和两个特征向量,我使用了以下内容:
ev, left_v, right_v = scipy.linalg.eig(A, left=True)
根据手册,在left=True
调用函数进行设置后,我应该期望将左特征向量作为left_v
第 i 列指第 i 个特征值的列。然而,结果不是我预期的,所以我做了一个简单的检查。
我计算了两次调用该函数的左右特征向量(查看此处了解详细信息):
其中 的列left_v_2
是与 中的相应值相关联的特征向量left_ev
。值得强调的是,两者都right_ev_2
给出left_ev_2
相同的特征值,但是它们的顺序不同,需要加以说明。
比较left_ev
and left_ev_2
(在对特征值重新排序之后)可以很快发现前者是后者的共轭,因此left_ev
从scipy.linalg.eig
with获得left=True
的不是有效的左特征向量。
可以基于以下事实对特征向量的有效性进行另一项检查:对于任意实方矩阵,左右特征向量是双正交的,即:
left_v.T.dot(right_v)
应该给出一个对角矩阵,但它没有,直到我将其更改为:left_v.T.conj().dot(right_v)
,
尽管:
left_v_2.T.dot(right_v_2)
给出一个预期的对角矩阵.
有没有人遇到过类似的问题?我说的对吗?sciPy 手册在描述时是否有点不精确eig
?你能给点建议吗?
非常感谢!
r - 用于计算 R 中矩阵的特征值的函数
我想写一个函数eigen()
来计算任意矩阵的特征值和特征向量。我写了以下代码来计算特征值,我需要一个函数或方法来求解得到的线性方程。
我需要解决det(x)=0
一个多项式线性方程来找到 的值lambda
。有什么办法吗?