2012-04-10 23 views
8

forecastライブラリを使用してRで開発したARIMAモデルをJavaコードに変換したいと考えています。私は予測部分だけを実装する必要があることに注意してください。フィッティングは、R自体で行うことができます。 predict関数を見てJavaコードに変換します。他の誰かが似たような状況に陥っていたのかと思っていました。Matlab/RのモデルをC++/Javaに変換する

同様の行に沿って、おそらくこれは具体的な回答なしではより一般的な質問です。 Matlab/Rでモデル構築を行うことができるが、予測/予測をJava/C++で行う必要がある状況を処理する最良の方法は何ですか?ますます、私はこのような状況に何度も何度も直面してきました。私はあなたが弾を噛んで自分でコードを書く必要があると思いますが、これは一般にフィッティング/見積もりを書くほど難しくありません。トピックに関するアドバイスは参考になります。

+0

[PMML](http://en.wikipedia .org/wiki/Predictive_Model_Markup_Language) は、1つのソフトウェア( )で統計モデルを生成し、別の方法でそれらを実装する必要があります( )。 RはいくつかのPMMLモデルをエクスポートすることができますが、 ですが、時系列モデルには明らかに がありません(追加するのは簡単かもしれません)。 PMMLモデルを使用するには、Java/C++ライブラリ が必要です。 –

答えて

11

'RまたはMatlab'については、 'C++ or Java'に書きます。これは2 x 2の選択肢を与え、これは私の好みにあまりにも多くの自由度を与えます。ですから、C++をターゲットに集中することができます。

より簡単なケースを考えてみましょう:RのプロトタイピングとC++でのデプロイ実際に使用するRパッケージがCまたはC++で実装されている場合、これはかなり簡単になります。単に他の依存関係(ヘッダーファイル、定義、データ構造など)から後のルーチンを解き、必要なデータとパラメーターを提供する必要があります。私はこれまで生産システムのためにこれを行ってきました。

ここでは、forecastパッケージについて説明します。これは、Armadillo C++ライブラリをRに持っていくRcppArmadilloパッケージに依存します。実際には、これを自己完結したユニットとして書き直すことができるでしょう。

Armadillo MatlabをC++に移植する際にも、このタスクを念頭に置いて書かれているので興味深いです。私は比較的広範なMatlabコードをC++に移植し、大幅な速度向上を達成しました。

1

これはRで可能かどうかはわかりませんが、MatlabではJavaのMatlabコードと対話できます。http://www.cs.virginia.edu/~whitehouse/matlab/JavaMatlab.htmlを参照してください。これにより、Matlabにすべての予測コードを残して、 Javaで書かれたインタフェース。

また、予測コードをJavaで記述してモデルを作成し、Matlabに依存することなくモデルを使用するプログラムを配布できるようにすることもできます。 Matlab compilerはおそらくここで役に立つかもしれませんが、私はそれを使ったことはありません。

最後に、MatlabとJavaの間で混乱するような簡単な方法は、pseudoterminalsを使用して(Linux上で)、JavaとMatlabをインターフェースするpty/ttyペアを使用します。この場合、JavaからMatlabにデータを送信し、Matlabに予測結果を返すようにします。私はこれもRで動作すると期待していますが、構文はわかりません。

一般的に、コードを再実装することは適切な解決策であり、おそらくjava + matlabとのインタフェースやMatlabライブラリの作成方法を学ぶよりも早いでしょう。

1

リチャンテによって与えられた答えに関するいくつかの追加情報:Matlabにはがあります。 C/C++、C#、Javaなどのコンパイル済み言語との相互運用性に優れた機能があります。特定のケースでは、ツールボックスMatlab Builder JAが特に関連していることがあります。 MatlabコードをJavaに直接書き出すことができます。つまり、Matlabのモデル構築段階で構築したコードをJavaから直接呼び出すことができます。

さらに詳しい情報は、Mathworks hereから。

1

私はまた、 "RをJavaに変換する"ことにも関わっているので、その部分を話します。 Vincent Zooneykindがコメントしたように、RのPMMLライブラリは一般的にモデルエクスポートには意味がありますが、 "forecast"はまだサポートされていません。

代わりに、https://www.opencpu.org/のようなものを使用して、JavaプログラムからRを呼び出します。これは、HTTPサーバー上のRコードを表面化します。通常のhttp呼び出しのようにパラメータを指定して呼び出すだけで、java.net.HttpUrlConnectionまたはJavaで利用可能なhttpライブラリの選択を使用して、必要なものを返すことができます。 長所:Rコードを書き直す必要はない 短所:ライブプロセスでRサーバを呼び出すので、確実に処理されていることを確認する必要があります

関連する問題