2016-03-02 79 views
-4

我現在用Spark很多工作。例如,我用MLlib包和推薦系統(Java或Python)產生不同的評估。我已經看過關於Spark on github的文檔。根據文檔,我可以使用train方法調用Spark中的模型。這裏是:Spark Apache源代碼

JavaRecommendationExample

我在代碼行數50-53特殊興趣:

// Build the recommendation model using ALS 
int rank = 10; 
int numIterations = 10; 
MatrixFactorizationModel model = ALS.train(JavaRDD.toRDD(ratings), rank, numIterations, 0.01); 

我想知道這個方法的源代碼。

別的,我已經在Python example找到了自己可能的實現。我對240-275線特別感興趣。以下是代碼中的文檔:

訓練一個矩陣分解模型,給出由用戶 針對產品子集的RDD評級。評級矩陣近似爲給定級別(數量爲 特徵)的兩個較低級矩陣的 乘積。爲了解決這些功能,ALS以迭代方式與 並行運行。

在下面的代碼中,我看不到矩陣的任何迭代。有人可以幫助我,並提供正確的源代碼,在哪裏實施迭代步驟?或者請在此確認,列車方法不是開源的。

+0

你在問什麼不清楚!這意味着什麼?有人可以幫助我並提供正確的源代碼,在哪裏實現迭代步驟?或者請在此確認,列車方法不是開源的。 – eliasah

+0

@eliasah,我的問題是,如何實施方法訓練。 – Guforu

+1

試過谷歌?嘗試eclipse(例如:我假設在你的eclipse項目中,你指向一個或多個JAR的SPARK的東西。很多時候,這些JAR帶有源代碼;或者至少;有單獨的源代碼JAR可用...使它們可以用於日食,而「F3」將把你帶到你正在尋找的源頭)。最壞的情況...轉向一些Java反編譯器,如jd-gui。 – GhostCat

回答

1

好吧,我不知道你已經搜查了train方法有多深,但有一樣的東西:

for (iter <- 1 to maxIter) { 
    ... 
} 

(l.651爲implicits和l.672爲明確星火的源代碼1.6.0)。你可以在火花的頁面上找到源代碼,看看org.apache.spark.ml.recommendation.ALS(注意現在實現在ML上而不在MLLib上)。

Here's the source code(來自以上評論!)

+0

好的,我只看到MLlib。萬分感謝。這對我來說似乎是正確的方向。 – Guforu

+0

是的,如果我記得好的話,它已經在1.4或1.5中移動了!你可以在MLlib的版本中通過NewALS.train [Int](...)這行看到它。 –