スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【--/--/-- --:--】 | スポンサー広告 | page top↑
rpyでRにアクセス(主成分分析とdataframe)

統計パッケージRに、Pythonからアクセスするのに、rpyというモジュールがあるのを前に紹介しましたが、今回、Rに主成分分析をやらせて見ました。Rには、主成分分析をしてくれる関数が確か2つくらいありますが、今回はprcompを使っています。引数は、dataframeですが、2次元配列でもなんとかしてくれるのではないかと思い、強引にやってみるも・・・


>>> from rpy import *


>>> l = [[4,1],[5,2],[6,3]]
>>> r.prcomp(l)


Traceback (most recent call last):
  File "<pyshell#13>", line 1, in -toplevel-
    r.prcomp(l)
RException: 以下にエラーcolMeans(x, n, prod(dn), na.rm) :
 'x' は数値でなければなりません


と怒られてしまいました。


rpyのマニュアルを見ると、ダウンロードしたrpyの中のexample/usefulフォルダに、dataframe.pyがあると書いてありますが、1.0-RC1を使っているから、見当たりません。仕方ないので、rpy-0.99.2.zipを持ってきて、中から、erobj.pyとdataframe.pyをC:\Python24\Lib\site-packagesに放り込みました。


あとは、マニュアル通りにやればよく、


>>> from dataframe import *
>>> class_table['data.frame'] = DataFrame
>>> set_default_mode(CLASS_CONVERSION)
>>> e = r.as_data_frame({'foo': [4,5,6], 'bar': [1,2,3]})
>>> e


Traceback (most recent call last):
  File "<pyshell#8>", line 1, in -toplevel-
    e
  File "C:\Python24\lib\site-packages\dataframe.py", line 15, in __getattr__
    return self.__dict__[attr]
KeyError: '__repr__'
>>> print e
  foo bar
1   4   1
2   5   2
3   6   3
>>> r.prcomp(e)
{'x': [[-1.4142135623730951, 2.2204460492503131e-016], [0.0, 0.0], [1.4142135623730951, -2.2204460492503131e-016]], 'rotation': [[0.70710678118654768, 0.70710678118654746], [0.70710678118654746, -0.70710678118654768]], 'scale': False, 'sdev': [1.4142135623730947, 8.001412032943024e-017], 'center': {'foo': 5.0, 'bar': 2.0}}
>>> r.prcomp(e).get('x')
[[-1.4142135623730951, 2.2204460492503131e-016], [0.0, 0.0], [1.4142135623730951, -2.2204460492503131e-016]]


と、まあ、動いているように見えますが、Pythonでdataframe.__repr__を呼べないのが少し気になります。ま、いっか。


 

スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ

【2006/12/22 17:23】 | Python | トラックバック(0) | コメント(0) | page top↑
| ホーム |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。