生活随笔
收集整理的這篇文章主要介紹了
spark mllib和ml类里面的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
mllib是老的api,里面的模型都是基于RDD的,模型使用的時候api也是有變化的(model這里是naiveBayes),?
(1:在模型訓練的時候是naiveBayes.run(data: RDD[LabeledPoint])來訓練的,run之后的返回值是一個NaiveBayesModel對象,就可以使用NaiveBayesModel.predict(testData: RDD[Vector]): RDD[Double] 里面不僅可以傳入一個RDD[Vector] ,里面還可以傳入單個Vector,得到單個預測值,然后就可以調用save來進行保存了,具體的可以看官方文檔API?
(2:模型使用可以參考(1,模型的讀取是使用load方法去讀的
ml是新的API,ml包里面的模型是基于dataframe操作的?
(1:在模型訓練的時候是使用naiveBayes.fit(dataset: Dataset[]): NaiveBayesModel來訓練模型的,返回值是一個naiveBayesModel,可以使用naiveBayesModel.transform(dataset: Dataset[]): DataFrame,進行模型的檢驗,然后再通過其他的方法來評估這個模型,?
(2:模型的使用可以參考(1: 是使用transform來進行預測的,取預測值可以使用select來取值,使用select的時候可以使用“$”label””的形式來取值
訓練的時候是使用的NaiveBayes,使用的時候使用naiveBayesModel
ml包里的模型訓練代碼請參考ml包里面的模型訓練代碼?ml包里面的模型的使用
mllib代碼的使用會在稍后貼上:?
mllib的建模使用代碼:
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.mllib.feature.HashingTF
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.mllib.classification.LogisticRegressionWithSGDclass EmailClassification {}
object EmailClassification{def main(args: Array[String]): Unit = {val sc = getSparkCont()//每一行都以一封郵件val spam = sc.textFile("spam.txt");val nomal = sc.textFile("normal.txt")//創建一個hashingTF實例來吧郵件文本映射為包含10000個特征的向量val tf = new HashingTF(10000)//把郵件都被分割為單詞,每個單詞都被映射成一個向量val spamFeatures = spam.map { email => tf.transform(email.split(" ")) }val nomalFeatures = nomal.map { email => tf.transform(email.split(" ")) }//創建LabelPoint 的數據集val positiveExamples = spamFeatures.map { feature => LabeledPoint(1,feature) }val negativeExamples = nomalFeatures.map { feature => LabeledPoint(1,feature) }val trainingData = positiveExamples.union(negativeExamples)//使用SGD算法運行邏輯回歸 返回的類型是LogisticRegression 但是這個模型是有save,但是沒有load方法,我還在思考,讀者如果有什么意見或者看法可以下面評論的val model = new LogisticRegressionWithSGD().run(trainingData)//創建一個郵件向量進行測試val posTest = tf.transform("cheap stuff by sending money to ....".split(" "))val prediction = model.predict(posTest)println(prediction)}def getSparkCont():SparkContext={val conf = new SparkConf().setAppName("email").setMaster("local[4]")val sc = new SparkContext(conf)return sc}}
總結
以上是生活随笔為你收集整理的spark mllib和ml类里面的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。