タグ

ブックマーク / rindai87.hatenablog.jp (2)

  • RのC拡張を触ってみたら修論用のプログラムが爆速になって新年早々鼻血がでそうになった件 - 元データ分析の会社で働いていた人の四方山話

    以前からRにはC拡張というのがあって、そいつを利用すると凄まじい事になるという話を聞いていたのですが、色々あって後回しにしていました。 しかし、お正月なので(?)、ふと思い立って触ってみました。 意外とまとまった解説はなさそう(?)なので、今日は一番シンプルなインタフェイス関数.Cを利用する方法について紹介してみます。 参考 いきなりですが、参考にしたところ http://d.hatena.ne.jp/syou6162/20090117/1232120983 Rから他言語利用 - RjpWiki http://cran.r-project.org/doc/contrib/manuals-jp/R-exts.jp.pdf というかWriting R Extensionsの4章を読めば何とかなる!! 手順 まずは大まかな手順を説明します。 RからCに投げたい部分の関数を作成する。 Cの関数をR

    RのC拡張を触ってみたら修論用のプログラムが爆速になって新年早々鼻血がでそうになった件 - 元データ分析の会社で働いていた人の四方山話
    kkobayashi
    kkobayashi 2010/01/03
    「まとめ」がすばらしい。そもそもアルゴリズム的にオーダーが減らせないかを考えるのが最初なんだけど、Rのコードではそーいう機会は少ないかも
  • R de Isomap - 元データ分析の会社で働いていた人の四方山話

    RでIsomapを書いてみた。 ただそれだけ。 まだあんまりRのことは分かってないんだけど、for文を使うと明らかに実効速度的に不利であることは判明した。 applyとかでうまく回避するんだろうけど、C言語育ちの私にとっては「行列の全ての要素に何らかの処理を行う」ってなるとすぐにfor文が頭に浮かんでしまう。 というわけで、僕の書いたIsomapには二重ループがやたらと登場してきて実行速度的に速度的に非常にだめだめです。 どうしたものか。 まともに固有値・固有ベクトルを求めてソートをかけるのがめんどくさかったので、主成分分析の関数を代用してみたんだけどこれでいいのだろうか? まあ、前にPythonで書いたやつと結果が大きく違わないからいいんだろうけど... あと、eigen(A)とprincomp(A)とprcomp(A)で固有値が違う気がするのは俺だけ? # データ取得 swiss <-

    R de Isomap - 元データ分析の会社で働いていた人の四方山話
    kkobayashi
    kkobayashi 2009/05/15
    Cのextensionもいいけど、Rレベルでのoptimizationの余地もありそうな。distance関数なんかは sqrt(sum((x-y)^2)) とすればRっぽいし(多分)速い。内容がよく分かってないけど、dist関数が使えるかどうかも検討するといいかも
  • 1