2016-02-08 23 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的側。