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. matlab彩色图像插值

    软件是MATLAB R2014b 使用的是matlab中已有的函数imresize(); 彩色图像分别对R.G.B三个通道进行插值,之后融合.[imresize函数不用,可以直接插值] clear;c ...

  2. Error 2 error C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &)'

    Error 2 error C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree ...

  3. win7 64位下android开发环境的搭建

    本文转自:http://www.cfanz.cn/index.php?c=article&a=read&id=65289 最近换了新电脑,装了win7 64位系统,安装了各种开发环境, ...

  4. Android Bigmap的操作(绘制,裁剪)

    绘制 依据某一种颜色绘制Bitmap Bitmap resultBitmap = Bitmap.createBitmap(600,800,Bitmap.Config.ARGB_8888); resul ...

  5. Codeforces Round #277.5 (Div. 2)部分题解

    A. SwapSort time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...

  6. Linux内核中断处理体系分析

    前一篇博文中:linux内核初始化阶段通过early_trap_init()函数完毕了把异常向量复制到0xFFFF0000開始的地方,这些异常向量大部分指向通过vector_stub宏定义的那段代码. ...

  7. python 协程(单线程中的异步调用)(转廖雪峰老师python教程)

    协程,又称微线程,纤程.英文名Coroutine. 协程的概念很早就提出来了,但直到最近几年才在某些语言(如Lua)中得到广泛应用. 子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B在 ...

  8. python2.0_s12_day15_django框架的基本使用

    day15本节内容介绍 上节作业讲解(让行进入编辑模式,批量编辑) CSS之特殊内容补充 CSS内容补充之伪类 伪类实例:返回顶部终极版 CSS内容补充之无法被覆盖 jQuery插件 jQuery插件 ...

  9. C语言中的文本流与二进制流的区别

    近期看到了文本流和二进制流的区别,书上讲的比较含糊,理解不透彻,于是细细琢磨了下,把心得跟大家分享一下: 一.首先回答,什么是文件,流 一个文件通常就是磁盘上的一段命名的存储区.比如 stdio.h ...

  10. 基于Cocos2d-x学习OpenGL ES 2.0系列——你的第一个立方体(5)

    在上篇文章中,我们介绍了VBO索引的使用,使用VBO索引可以有效地减少顶点个数,优化内存,提高程序效率. 本教程将带领大家一起走进3D--绘制一个立方体.其实画立方体本质上和画三角形没什么区别,所有的 ...