Spark mlib FPGrowth&nb…

原创 2016年08月29日 12:51:33

MLlib’s FP-growth implementation takes the following (hyper-)parameters:

  • minSupport: the minimum support for an itemset to be identified as frequent. For example, if an item appears 3 out of 5 transactions, it has a support of 3/5=0.6.
  • numPartitions: the number of partitions used to distribute the work.

spark mlib 的官方FPGrowth运行出错。
这是序列输出可能引起的错误,spark采用的kryo序列化方式比JavaSerializer方式更快,但是在1.4版本的spark上会产生错误,故解决方案是,要么在spark-defaults.conf中替换,要么只运行中直接替换,

所以加上下面蓝色这句好就好了
val conf = new SparkConf().setAppName("SimpleFPGrowth").set("spark.serializer", "org.apache.spark.serializer.JavaSerializer")



import org.apache.log4j.{Level, Logger}
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.mllib.fpm._
import org.apache.spark.rdd.RDD
// $example off$

object FPGrowth {
  def main(args: Array[String]) {
    // 屏蔽不必要的日志显示在终端上
    Logger.getLogger("org.apache.spark").setLevel(Level.WARN)
    Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF)
 
    // 设置运行环境
    val conf = new SparkConf().setAppName("SimpleFPGrowth").set("spark.serializer", "org.apache.spark.serializer.JavaSerializer")
    val sc = new SparkContext(conf)

    // $example on$
    val data = sc.textFile("xrli/sample_fpgrowth.txt")

    val transactions: RDD[Array[String]] = data.map(s => s.trim.split(' '))

    val fpg = new FPGrowth()
      .setMinSupport(0.5)
      .setNumPartitions(10)
    val model = fpg.run(transactions)

    model.freqItemsets.collect().foreach { itemset =>
      println(itemset.items.mkString("[", ",", "]") + ", " + itemset.freq)
    }

    val minConfidence = 0.8
    model.generateAssociationRules(minConfidence).collect().foreach { rule =>
      println(
        rule.antecedent.mkString("[", ",", "]")
          + " => " + rule.consequent .mkString("[", ",", "]")
          + ", " + rule.confidence)
    }
    // $example off$
  }
}
// scalastyle:on println}





//sample_fpgrowth.txt

//r z h k p
//z y x w v u t s
//s x o n r
//x z y m t s q e
//z
//x z y r q t p

数据集中每一行就是一项,以z为例,z在5项中都出现了,,所以支持度为5/6, itemset.freq打印了频度5。

model.generateAssociationRules(minConfidence).collect().foreach 
这是生成规则,如果数据集很大的话,推荐不要collect().  ,这样可以提升运行速度。

rule.antecedent 前提
rule.consequent结果


Spark <wbr>mlib <wbr>FPGrowth <wbr>运行错误解决方案

Spark&nbsp;mlib&nbsp;FPGrowth&amp;nb…

MLlib’s FP-growth implementation takes the following (hyper-)parameters: minSupport: the minimum s...
  • leexurui
  • leexurui
  • 2016年08月29日 12:51
  • 230

数据挖掘十大经典算法之NB

贝叶斯分类器          贝叶斯分类器的分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。目前研究较多的贝叶...
  • sky1203850702
  • sky1203850702
  • 2012年10月23日 22:06
  • 1689

朴素贝叶斯分类-NB算法

今天学习NB(nave Bayes)算法.看看此算法是不是真NB。 朴素贝叶斯法基于两点: 朴素贝叶斯定理 特征条件独立假设 学习方法及分类方法已知输入: 含有NN个样本的训练集,T={(x(1),...
  • dataningwei
  • dataningwei
  • 2017年01月06日 17:39
  • 493

NB-IoT频段

国内的NB-IoT主要运行在B5和B8频段。
  • zoomdy
  • zoomdy
  • 2017年05月26日 11:27
  • 2844

朴素贝叶斯算法(NB)

算法分析:贝叶斯分类器的分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。目前研究较多的贝叶斯分类器主要有四种,分别...
  • u013058160
  • u013058160
  • 2015年12月06日 16:51
  • 529

浅谈NB-IOT模块调试

在物联网的口号下,我们公司也有幸踏足NB物联这块,当然也只是二次应用开发。NB核心开发技术都掌握在几个大公司大佬手里,例如:华为海思、高通、intel。当然模块厂商又例如:移远 ublox等。芯片的...
  • wang2425559
  • wang2425559
  • 2017年06月24日 16:26
  • 804

NB5.5源代码分析之服务端生成

要生成NB5.5的服务端,首先编译“svchost”项目,该项目生成NBVip.dll和NBVip.lib动态库文件。之后,将这两个文件拷贝到“InstallServer”项目的目录下,打开“Inst...
  • hou09tian
  • hou09tian
  • 2017年04月27日 20:54
  • 267

weka之NB算法

@Override public void buildClassifier(Instances data) throws Exception { //检测分类器能否处...
  • kaikai_sk
  • kaikai_sk
  • 2017年05月08日 14:06
  • 222

NB-LOT L700 多频段CATM1/NB-IOT/GSM/GPRS/EDGE

L700是一款多模的IOT模块,其支持多个频段包括CATM1/NB-IOT/GSM/GPRS/EDGE, 其尺寸为30.0 × 30.0 × 2.6mm。其采用LCC的封装,成本优化的SMT形式,高集...
  • szdst
  • szdst
  • 2017年08月15日 17:57
  • 590

NB连网过程简介

NB之BC95-B8的联网流程
  • qwe15954250805
  • qwe15954250805
  • 2017年11月25日 21:27
  • 98
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spark&nbsp;mlib&nbsp;FPGrowth&amp;nb…
举报原因:
原因补充:

(最多只允许输入30个字)