翻譯http://spark.apache.org/docs/latest/ml-guide.html 機器學習庫MLib指南
MLib是運行在spark上的機器學習庫,目的是為了方便使用scala語言進行機器學習。提供如下功能: ML演算法:提供分類、迴歸、聚類和協作篩選等常用機器學習運算元 功能:特徵提取、轉換、降維,和選擇 管道線:構建、評估和調優工具 緩衝:儲存和載入運算元、模型和管道線 工具集:線性代數、統計、資料處理 公告:基於DataFrame的API是私人API
基於RDD的api目前處於維護階段。
從spark2.0開始,spark.mlib包中基於RDD的api已經進入維護階段,機器學習中私人API都存放在spark.ml包中,都是基於DataFrame的api。
上面的資訊意味著: MLib仍然支援spark.mlib包中基於RDD的API,並且會時不時修複個bug。 MLib目前不會增加新功能。 spark2.x後續更新會逐漸支援基於DataFrame的API,功能點與RDD的api類似。 一旦基與DataFrame的API開發完畢(預計在spark2.2版本時),基於RDD的API就廢棄了。 spark3.0徹底刪除基於RDD的api
為何放棄RDD的api,轉而支援DataFrame的api
DataFrame的API比RDD的API更加友好,DataFrame的優勢包括spark資料來源,SQL/DataFrame查詢, 鎢和催化劑的最佳化以及跨語言的統一API。
基於DataFrame的機器學習api,是一套統一的,跨機器學習演算法和跨多個語言的。 DataFrame也能促進使用ML管道線,尤其是功能轉換。
Spark ML是什麼。
Spark ML,並不是官方名稱,而是偶爾指代基於DataFrame的api,因為DataFrame的API的包名為org.apache.spark.ml。而且Spark ML Pipelines也是為了強調PipeLines的概念。
MLib已經廢棄了麼
還沒有。Mlib包括RDD和DataFrame兩種API,目前處於維護階段,既沒有廢棄,也不是MLib的全部。 依賴
MLib使用線性代數包Breeze(依賴最佳化資料處理的netlib-java包),如果原生庫在runtime沒有包含,JVM會報錯,且用一個乾淨的介面代替。
由於許可證的原因,原生我們並不包括netlib-java這個庫,需要自行安裝或匯入到項目中。
如果使用python語言,你需要1.4+版本的NumPy。 遷移指南
MLib目前仍處於開發階段,Experimental/DeveloperApi 標記的API意味著將來會有變更,下面介紹從2.0升級到2.1的變化 2.0 -》 2.1 改變 移除廢棄的方法 setLabelCol in feature.ChiSqSelectorModel numTrees in classification.RandomForestClassificationModel numTrees in regression.RandomForestRegressionModel model in regression.LinearRegressionSummary validateParams in PipelineStage validateParams in Evaluator 廢棄與變更 廢棄
Deprecate all Param setter methods except for input/output column Params for DecisionTreeClassificationModel, GBTClassificationModel, RandomForestClassificationModel, DecisionTreeRegressionModel, GBTRegressionModel and RandomForestRegressionModel 變更 SPARK-17870: Fix a bug of ChiSqSelector which will likely change its result. Now ChiSquareSelector use pValue rather than raw statistic to select a fixed number of top features. SPARK-3261: KMeans returns potentially fewer than k cluster centers in cases where k distinct centroids aren’t available or aren’t selected. SPARK-17389: KMeans reduces the default number of steps from 5 to 2 for the k-means|| initialization mode.