2016-02-08 27 views
3

工作是否有从Clojure的调用Python与SciPy的,numpy的,scikit学习做数据科学的手段没有什么好的办法,等的Clojure与SciPy的和numpy的

我知道它运行在Clojure中的实现python而不是java,但是这不会为我工作,因为我也需要在我的项目中调用java库。我也了解Jython,但我不知道有一个干净的方式可以在Clojure中使用它。

我想在我的项目中使用Clojure,因为我更喜欢它作为一种语言,但我不能否认Python有一个令人难以置信的社区,还有一些最美丽,设计精良的库。

+0

您可以从Clojure的[core.matrix](https://github.com/mikera/core.matrix)或者[Incanter](http://incanter.org/)获得一些您想要的内容。 )。 (我对scipy或numpy不太了解,所以我不能把它变成官方的答案。) – Mars

回答

2

不要试图让Jython与Clojure和numpy/scipy一起玩,你可以使用Hy。它在Python上托管,它有点类似于Clojure。

如果我真的想使用numpy/scipy,我会在Python(或Hy)中编写后端,将其作为单独的服务运行。如果我真的喜欢戒指,或者如果没有Instaparse就无法生活,我会在Clojure写一个前端。

作为一边Python有EDN库。将其中一个集成到Hy中,或者从头开始写一个将是一个有趣的项目。

+0

这个Hy的东西太棒了。 – pneumatics

+0

感谢您的建议。我知道这可能有点多,但我想问一下,是否有一种将Clojure和Python机器学习工具混合使用的好方法。我更喜欢用clojure编写代码,所以我当前的大部分机器学习堆栈都是用python/java的组合编写的,我想我希望可以为scipy/numpy功能打包一个很好的包装。 – particleq

+0

我也在寻找一种可以将自己的算法与scipy/numpy一起编写的方式,而不会放弃使用python造成的太多效率损失。 – particleq

0

给出toolz library a try, it's a functional standard library for Python that was designed to generally adhere to the API of the Clojure standard library

除此之外,我鼓励你找到你的计算之间的接缝,并以Clojure或Python的Unix方式编写单个工具,具体取决于哪一种似乎最适合该用例。在工具之间序列化数据,可以通过管道以text/JSON格式或使用像Protobuf这样的二进制序列化格式,它具有Java和Python的标准API。

如果你有一把枪到我的头,告诉我建立的Clojure/Python的互操作,我会用py4j开始,弥合通过Java接口两种语言,使用Python类implements成员和reify在Clojure的侧。