1

私の無知を許してください、私はPythonに非常に慣れていません。MDP を使用して Python で因子分析を実行しようとしています (ただし、より良い解決策があれば別のライブラリを使用できます)。

私はm×nの行列(行列と呼ばれる)を持っていて、やろうとしました:

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 の初心者に説明したいと思いますか?

4

2 に答える 2

4

mdp の経験はまったくありませんが、行列がリストではなく Numpy 配列として渡されることを期待しているようです。Numpy は高性能科学計算用のパッケージです。Numpyのホームページにアクセスしてインストールできます。その後、コードを次のように変更してみてください。

import mdp, numpy
mdp.nodes.FANode()(numpy.array(matrix))
于 2011-05-20T12:56:15.427 に答える
4

Stephen が言ったように、データは numpy 配列でなければなりません。より正確には、最初のインデックスが異なるサンプルを表し、2 番目のインデックスがデータ次元を表す 2D 配列でなければなりません (ここで間違った順序を使用すると、「特異行列」エラーが発生する可能性があります)。

また、すべての質問に答えるMDP ドキュメントも参照してください。それでも解決しない場合は、MDP ユーザー メーリング リストがあります。

于 2011-06-07T07:58:27.403 に答える