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.LogisticRegressionWithSGD class 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()
//把邮件都被分割为单词,每个单词都被映射成一个向量
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(,feature) }
val negativeExamples = nomalFeatures.map { feature => LabeledPoint(,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类里面的区别的更多相关文章

  1. spark MLlib DataType ML中的数据类型

    package ML.DataType; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; im ...

  2. Spark机器学习中ml和mllib中矩阵、向量

    1:Spark ML与Spark MLLIB区别? Spark MLlib是面向RDD数据抽象的编程工具类库,现在已经逐渐不再被Spark团队支持,逐渐转向Spark ML库,Spark ML是面向D ...

  3. 使用 Spark MLlib 做 K-means 聚类分析[转]

    原文地址:https://www.ibm.com/developerworks/cn/opensource/os-cn-spark-practice4/ 引言 提起机器学习 (Machine Lear ...

  4. Spark的MLlib和ML库的区别

    机器学习库(MLlib)指南 MLlib是Spark的机器学习(ML)库.其目标是使实际的机器学习可扩展和容易.在高层次上,它提供了如下工具: ML算法:通用学习算法,如分类,回归,聚类和协同过滤 特 ...

  5. Spark MLlib 机器学习

    本章导读 机器学习(machine learning, ML)是一门涉及概率论.统计学.逼近论.凸分析.算法复杂度理论等多领域的交叉学科.ML专注于研究计算机模拟或实现人类的学习行为,以获取新知识.新 ...

  6. 基于Spark Mllib的文本分类

    基于Spark Mllib的文本分类 文本分类是一个典型的机器学习问题,其主要目标是通过对已有语料库文本数据训练得到分类模型,进而对新文本进行类别标签的预测.这在很多领域都有现实的应用场景,如新闻网站 ...

  7. Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .机器学习概念 1.1 机器学习的定义 在维基百科上对机器学习提出以下几种定义: l“机器学 ...

  8. Spark Mllib框架1

    1. 概述 1.1 功能 MLlib是Spark的机器学习(machine learing)库,其目标是使得机器学习的使用更加方便和简单,其具有如下功能: ML算法:常用的学习算法,包括分类.回归.聚 ...

  9. RandomForest in Spark MLLib

    决策树类模型 ml中的classification和regression主要基于以下几类: classification:决策树及其相关的集成算法,Logistics回归,多层感知模型: regres ...

随机推荐

  1. #import 无法打开源文件msado.tlh

    #import 无法打开源文件msado.tlh #import "c:\program files\common files\system\ado\msado15.dll" no ...

  2. [转]ASP.NET MVC 5 - 查询Details和Delete方法

    在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法. 查询Details和Delete方法 打开Movie控制器并查看Details方法. public ActionResul ...

  3. UVa 10450 - World Cup Noise

    题目:构造一个01串,使得当中的1不相邻,问长度为n的串有多少中. 分析:数学,递推数列. 设长度为n的串有n个.则有递推关系:f(n)= f(n-1)+ f(n-2): 长度为n的结束可能是0或者1 ...

  4. PHP-003

    PHP函数大全(转) usleep() 函数延迟代码执行若干微秒.unpack() 函数从二进制字符串对数据进行解包.uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID.time_sl ...

  5. shell基础(八)-循环语句

    国庆过后:感觉有点慵懒些了:接着上篇:我们继续来学习循环语句. 一. for循环 与其他编程语言类似,Shell支持for循环. for循环一般格式为: for 变量 in 列表 do command ...

  6. 最简单的VS-Qt-CMake项目框架

    使用qtcreator新建一个空工程,可以得到main.cpp,mainwindow.cpp,mainwindow.h和mainwindow.ui四个文件 下面主要介绍CMakeLists.txt的内 ...

  7. poj_2352 线段树

    题目大意 对于二维平面上的n个点,给出点的坐标.定义一个点A覆盖的点的个数为满足以下条件的点B的个数:点B的x <= 点A的x坐标,点B的y坐标 <= 点A的y坐标.     给出N个点的 ...

  8. java.lang.NoSuchMethodException:com.yxq.action.AdminAction.addGoods()《转载》

    java.lang.NoSuchMethodException:com.yxq.action.AdminAction.addGoods()   在学习struts2的时有时会出现此异常,现将其总结如下 ...

  9. Listview Section 多个标题以及内容

    其中日期标题部分视图布局: 带图片的条目布局部分: 问题在于,如何在ListView中既有标题条目又有内容条目. 这里用到了设计模式中的Iterator模式.在java代码中示例有Iterator,可 ...

  10. IDEA Tomcat部署时war和war exploded区别以及平时踩得坑

    war和war exploded的区别 在使用IDEA开发项目的时候,部署Tomcat的时候通常会出现下边的情况: 是选择war还是war exploded 这里首先看一下他们两个的区别: war模式 ...