2016-07-04 24 views
2

我在探索pyspark以及將scikit-learn與pyspark集成的可能性。我想用scikit-learn在每個分區上訓練一個模型。這意味着,當我的RDD被定義並且分佈在不同的工作節點之間時,我想在每個工作節點上存在的每個分區上使用scikit-learn並訓練一個模型(比方說一個簡單的k-means)。由於scikit學習算法需要熊貓數據框,我最初的想法是爲每個分區調用toPandas,然後訓練我的模型。但是,toPandas函數將DataFrame收集到驅動程序中,這不是我正在尋找的。有沒有其他方法可以實現這樣的目標?將scikit-learn與pyspark集成

+0

如果我能以某種方式將每個分區轉換爲一個數據框到一個類似數組的結構中,那麼這是可能的,對吧? –

+1

我看不出在每個分區上計算模型有什麼相關性。甚至意味着什麼?在實踐中,你如何組裝模型? – eliasah

+0

所以我們假設如果我在每個分區上運行kmeans,那麼我應該將所有質心點傳輸給驅動程序。這就像一個近似的k-means。但是,我現在不知道如何將質心點傳送給駕駛員。任何想法? –

回答

3

scikit-learn目前無法與spark完全集成,原因是scikit-learn算法沒有實現,因爲它只能在一臺機器上運行。不過,您可以在spark-sklearn中找到準備使用Spark-Scikit集成工具,該工具支持在Spark上執行GridSearch進行交叉驗證(現在時刻)。

+0

如果我想執行任意模型,該怎麼辦?比方說,在每個分區上運行一個kmeans。這是支持spark-sklearn? –

+0

這個庫只支持我上次檢查過的分佈式網格搜索。現在看起來情況仍然如此。不幸的是,分發算法不僅僅是即插即用,或者它會非常簡單。除非sklearn直接在火花上實現這些算法,否則將不可能整合這種簡單。 – eliasah