可否請你指導我如何創建並執行一個機器學習模型/統計模型(迴歸,決策樹,K均值聚類,樸素貝葉斯,記分卡/線性/邏輯迴歸等和GBM,GLM)在基於Java/JVM的應用程序(在生產中)。如何適應和用Java/JVM基於應用的得分機器學習模型
我們有一種基於Java的ETL產品,可以完成大部分數據機器學習的準備步驟,如從JDBC,文件,HDFS,無SQL等數據提取,連接和聚合等(需要對於特徵工程),現在我們想要使用機器學習/統計建模來添加分析功能。
現在,我們使用JPMML評估器對使用R和python(以及Knime)在PMML格式中創建的模型進行評分,但它需要三個獨立且未連接的步驟: - 1-在我們的Java中進行數據準備的第一步/ JVM應用程序並將採樣數據(訓練和測試)數據保存在csv文件或數據庫中, - 2-在R和python(和Knime)中創建機器學習模型並將其導出爲PMML 4.2格式 - 3-導入/在基於Java的應用程序中部署PMML,並使用JPMML評估器在生產環境中執行。
我確定這是機器學習中的常見問題,因爲通常在生產中JAVA比Python或R更受歡迎。您能否建議什麼是更好的方法來創建以及執行基於python/scikit的機器學習模型在基於JVM的應用程序中。
什麼是您認爲實現的步驟#2,#3更無縫地在基於JVM的應用程序,而不會影響性能和可用性: -
1調用Java程序,它在內部調用python scikit script(下引擎蓋)到create a model in PMML,然後使用JPMML評估器。它會假裝用戶他在單個基於JVM的應用程序(更好的可用性)。我不確定使用PMML會有什麼侷限性和缺點,因爲並非所有功能都在jpmml-sklearn中受支持。調用一個內部調用python腳本的java程序,並在外部python環境中執行模型創建和執行,並將模型和結果序列化到文件/ csv或內存數據庫(或緩存,如hazelcast)從那裏父Java應用程序將獲取結果等。我研究了我不能使用Jython來執行Sci-kit模型。 3-我可以使用Jep(在Java中嵌入Python)將Cpython嵌入到JVM中嗎?有人試用過sci-kit模型嗎?
或者,我應該探討在我的基於JVM的應用程序中使用Mahout或weka - 基於java的機器學習庫。 (我需要同時支持Windows和非Windows平臺)
我也在探索基於java的H2Oai。有人試過嗎?
Spark/Hadoop設置的數據不夠大。它通常在50到1GB之間變化(有幾百行)。現在,我使用[H2o,ai](https://www.h2o.ai),因爲它是基於Java的,所以對於我的基於Java的產品來說它很順利。但它具有有限的ML算法(無SVM等)。最後,我想從基於Java的應用程序中調用python(或R)來使用豐富的ML算法。 –
我的意思是說 - 數據大小在50 MB到1 GB之間(最大) –
給定這些數據大小,在Python或R中實現ML應該是微不足道的。我建議不要試圖從R或Python調用Java,將數據串行化爲可接收的格式(例如CSV),並進行系統調用(批處理/ bash)以運行Python或R中的處理。這與支持跨平臺編譯的需求緊密相關。 – lohithbb