PythonにはMLライブラリがたくさんあります(すばらしいscikit-learnなど)。多くのアルゴ(回帰、分類、クラスタリング、相互検証、特徴処理)を含み、安定して維持され、大規模なデータセットを処理できるjava / scalaに何か良いものはありますか?
私は、Mahout、Breeze / Nak、Wekaを見つけたばかりですが、Pythonのものほど見栄えがよくありません。
さらに、同等のものがない場合、JavaコードをPythonに効率的に接続するにはどうすればよいですか?
PythonにはMLライブラリがたくさんあります(すばらしいscikit-learnなど)。多くのアルゴ(回帰、分類、クラスタリング、相互検証、特徴処理)を含み、安定して維持され、大規模なデータセットを処理できるjava / scalaに何か良いものはありますか?
私は、Mahout、Breeze / Nak、Wekaを見つけたばかりですが、Pythonのものほど見栄えがよくありません。
さらに、同等のものがない場合、JavaコードをPythonに効率的に接続するにはどうすればよいですか?
回答:
Apache Spark、特にそのコンポーネントMLlibは、まさにあなたが探しているもののように見えます。MLlibには、分類、回帰、次元削減などの実装が含まれています。Scala、Java、Pythonでプログラミングできます。
基本的には、Hadoopクラスターで実行できる非常に高速な分散コンピューティングフレームワークです。開発目的で、ローカルマシンでもスタンドアロンモード(Hadoopなし)で簡単に実行できます。
こちらのMLlibガイドをご覧ください。https://spark.apache.org/docs/latest/mllib-guide.html
JavaML(http://java-ml.sourceforge.net/)およびEncog(http://www.heatonresearch.com/encog)を見てください。後者は、多くのアルゴリズムよりもニューラルネットワークに重点を置いています。
また、wekaにはあまり友好的なJava APIがないかもしれませんが(まず第一に、それはライブラリではなくGUIアプリケーションであるため)、それに慣れると、そこに実装されているものの数がわかるようになります。
私はそれらすべてをうまく使いました。