请原谅我的无知,我很新近python。我正在尝试使用MDP在Python中进行因子分析(尽管我可以使用另一个库如果有更好的解决方案)。

我有一个m矩阵(称为矩阵),我试图做到:

import mdp
mdp.nodes.FANode()(matrix)
.

但我收回错误。我猜我也许我的矩阵没有正确形成?我的目标是了解数据中有多少组件,并找出哪个行加载到哪些组件。

这是回溯:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "mdp/signal_node.py", line 630, in __call__
    return self.execute(x, *args, **kwargs)
  File "mdp/signal_node.py", line 611, in execute
    self._pre_execution_checks(x)
  File "mdp/signal_node.py", line 480, in _pre_execution_checks
    self.train(x)
  File "mdp/signal_node.py", line 571, in train
    self._check_input(x)
  File "mdp/signal_node.py", line 429, in _check_input
    if not x.ndim == 2:
AttributeError: 'list' object has no attribute 'ndim'
.

有没有人知道发生了什么,并且觉得将它解释为一个python newbie?

有帮助吗?

解决方案

我绝对没有MDP的经验,但它看起来它希望你的矩阵作为Numpy数组而不是列表。numpy是高性能科学计算的包装。您可以转到numpy 主页并安装它。这样做后,尝试将代码更改为此:

import mdp, numpy
mdp.nodes.FANode()(numpy.array(matrix))
.

其他提示

如斯蒂芬说,数据必须是numpy数组。更准确地是它必须是2D阵列,其中第一个索引表示不同的SAMPES和表示数据尺寸的第二索引(使用错误的顺序可以导致“奇异矩阵”错误)。

你还应该看看 mdp文档,应该回答你的所有问题。如果这没有帮助有MDP用户邮寄列表。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top