当前位置: 首页 > news >正文

网站主办单位变更手机界面设计教程

网站主办单位变更,手机界面设计教程,公司网站如何优化,在wordpress上下载的模板咋用在FP Tree算法原理总结和PrefixSpan算法原理总结中#xff0c;我们对FP Tree和PrefixSpan这两种关联算法的原理做了总结#xff0c;这里就从实践的角度介绍如何使用这两个算法。由于scikit-learn中没有关联算法的类库#xff0c;而Spark MLlib有#xff0c;本文的使用以Spa…    在FP Tree算法原理总结和PrefixSpan算法原理总结中我们对FP Tree和PrefixSpan这两种关联算法的原理做了总结这里就从实践的角度介绍如何使用这两个算法。由于scikit-learn中没有关联算法的类库而Spark MLlib有本文的使用以Spark MLlib作为使用环境。 1. Spark MLlib关联算法概述     在Spark MLlib中也只实现了两种关联算法即我们的FP Tree和PrefixSpan而像Apriori,GSP之类的关联算法是没有的。而这些算法支持Python,Java,Scala和R的接口。由于前面的实践篇我们都是基于Python本文的后面的介绍和使用也会使用MLlib的Python接口。      Spark MLlib关联算法基于Python的接口在pyspark.mllib.fpm包中。FP Tree算法对应的类是pyspark.mllib.fpm.FPGrowth(以下简称FPGrowth类)从Spark1.4开始才有。而PrefixSpan算法对应的类是pyspark.mllib.fpm.PrefixSpan(以下简称PrefixSpan类)从Spark1.6开始才有。因此如果你的学习环境的Spark低于1.6的话是不能正常的运行下面的例子的。      Spark MLlib也提供了读取关联算法训练模型的类分别是 pyspark.mllib.fpm.FPGrowthModel和pyspark.mllib.fpm.PrefixSpanModel。这两个类可以把我们之前保存的FP Tree和PrefixSpan训练模型读出来。 2. Spark MLlib关联算法参数介绍     对于FPGrowth类使用它的训练函数train主要需要输入三个参数数据项集data支持度阈值minSupport和数据并行运行时的数据分块数numPartitions。对于支持度阈值minSupport它的取值大小影响最后的频繁项集的集合大小支持度阈值越大则最后的频繁项集数目越少默认值0.3。而数据并行运行时的数据分块数numPartitions主要在分布式环境的时候有用如果你是单机Spark则可以忽略这个参数。     对于PrefixSpan类 使用它的训练函数train主要需要输入四个参数序列项集data支持度阈值minSupport 最长频繁序列的长度maxPatternLength 和最大单机投影数据库的项数maxLocalProjDBSize。支持度阈值minSupport的定义和FPGrowth类类似唯一差别是阈值默认值为0.1。maxPatternLength限制了最长的频繁序列的长度越小则最后的频繁序列数越少。maxLocalProjDBSize参数是为了保护单机内存不被撑爆。如果只是是少量数据的学习可以忽略这个参数。     从上面的描述可以看出使用FP Tree和PrefixSpan算法没有什么门槛。学习的时候可以通过控制支持度阈值minSupport控制频繁序列的结果。而maxPatternLength可以帮忙PrefixSpan算法筛除太长的频繁序列。在分布式的大数据环境下则需要考虑FPGrowth算法的数据分块数numPartitions以及PrefixSpan算法的最大单机投影数据库的项数maxLocalProjDBSize。 3. Spark FP Tree和PrefixSpan算法使用示例     这里我们用一个具体的例子来演示如何使用Spark FP Tree和PrefixSpan算法挖掘频繁项集和频繁序列。     完整代码参见我的github: https://github.com/ljpzzz/machinelearning/blob/master/classic-machine-learning/fp_tree_prefixspan.ipynb     要使用 Spark 来学习FP Tree和PrefixSpan算法首先需要要确保你安装好了Hadoop和Spark版本不小于1.6并设置好了环境变量。一般我们都是在ipython notebook(jupyter notebook)中学习所以最好把基于notebook的Spark环境搭好。当然不搭notebook的Spark环境也没有关系只是每次需要在运行前设置环境变量。     如果你没有搭notebook的Spark环境则需要先跑下面这段代码。当然如果你已经搭好了则下面这段代码不用跑了。 import os import sys#下面这些目录都是你自己机器的Spark安装目录和Java安装目录 os.environ[SPARK_HOME] C:/Tools/spark-1.6.1-bin-hadoop2.6/sys.path.append(C:/Tools/spark-1.6.1-bin-hadoop2.6/bin) sys.path.append(C:/Tools/spark-1.6.1-bin-hadoop2.6/python) sys.path.append(C:/Tools/spark-1.6.1-bin-hadoop2.6/python/pyspark) sys.path.append(C:/Tools/spark-1.6.1-bin-hadoop2.6/python/lib) sys.path.append(C:/Tools/spark-1.6.1-bin-hadoop2.6/python/lib/pyspark.zip) sys.path.append(C:/Tools/spark-1.6.1-bin-hadoop2.6/python/lib/py4j-0.9-src.zip) sys.path.append(C:/Program Files (x86)/Java/jdk1.8.0_102)from pyspark import SparkContext from pyspark import SparkConfsc SparkContext(local,testing)     在跑算法之前建议输出Spark Context如下如果可以正常打印内存地址则说明Spark的运行环境搞定了。 print sc     比如我的输出是 pyspark.context.SparkContext object at 0x07D9E2B0     现在我们来用数据来跑下FP Tree算法为了和FP Tree算法原理总结中的分析比照我们使用和原理篇一样的数据项集一样的支持度阈值20%来训练数据。代码如下 from pyspark.mllib.fpm import FPGrowth data [[A, B, C, E, F,O], [A, C, G], [E,I], [A, C,D,E,G], [A, C, E,G,L],[E,J],[A,B,C,E,F,P],[A,C,D],[A,C,E,G,M],[A,C,E,G,N]] rdd sc.parallelize(data, 2) #支持度阈值为20% model FPGrowth.train(rdd, 0.2, 2)     我们接着来看看频繁项集的结果代码如下 sorted(model.freqItemsets().collect())     输出即为所有 满足要求的频繁项集大家可以和原理篇里面分析时产生的频繁项集比较。代码输出如下 [FreqItemset(items[uA], freq8),FreqItemset(items[uB], freq2),FreqItemset(items[uB, uA], freq2),FreqItemset(items[uB, uC], freq2),FreqItemset(items[uB, uC, uA], freq2),FreqItemset(items[uB, uE], freq2),FreqItemset(items[uB, uE, uA], freq2),FreqItemset(items[uB, uE, uC], freq2),FreqItemset(items[uB, uE, uC, uA], freq2),FreqItemset(items[uC], freq8),FreqItemset(items[uC, uA], freq8),FreqItemset(items[uD], freq2),FreqItemset(items[uD, uA], freq2),FreqItemset(items[uD, uC], freq2),FreqItemset(items[uD, uC, uA], freq2),FreqItemset(items[uE], freq8),FreqItemset(items[uE, uA], freq6),FreqItemset(items[uE, uC], freq6),FreqItemset(items[uE, uC, uA], freq6),FreqItemset(items[uF], freq2),FreqItemset(items[uF, uA], freq2),FreqItemset(items[uF, uB], freq2),FreqItemset(items[uF, uB, uA], freq2),FreqItemset(items[uF, uB, uC], freq2),FreqItemset(items[uF, uB, uC, uA], freq2),FreqItemset(items[uF, uB, uE], freq2),FreqItemset(items[uF, uB, uE, uA], freq2),FreqItemset(items[uF, uB, uE, uC], freq2),FreqItemset(items[uF, uB, uE, uC, uA], freq2),FreqItemset(items[uF, uC], freq2),FreqItemset(items[uF, uC, uA], freq2),FreqItemset(items[uF, uE], freq2),FreqItemset(items[uF, uE, uA], freq2),FreqItemset(items[uF, uE, uC], freq2),FreqItemset(items[uF, uE, uC, uA], freq2),FreqItemset(items[uG], freq5),FreqItemset(items[uG, uA], freq5),FreqItemset(items[uG, uC], freq5),FreqItemset(items[uG, uC, uA], freq5),FreqItemset(items[uG, uE], freq4),FreqItemset(items[uG, uE, uA], freq4),FreqItemset(items[uG, uE, uC], freq4),FreqItemset(items[uG, uE, uC, uA], freq4)]     接着我们来看看使用PrefixSpan类来挖掘频繁序列。为了和PrefixSpan算法原理总结中的分析比照我们使用和原理篇一样的数据项集一样的支持度阈值50%同时将最长频繁序列程度设置为4来训练数据。代码如下 from pyspark.mllib.fpm import PrefixSpan data [[[a],[a, b, c], [a,c],[d],[c, f]],[[a,d], [c],[b, c], [a, e]],[[e, f], [a, b], [d,f],[c],[b]],[[e], [g],[a, f],[c],[b],[c]]] rdd sc.parallelize(data, 2) model PrefixSpan.train(rdd, 0.5,4)    我们接着来看看频繁序列的结果代码如下  sorted(model.freqSequences().collect())    输出即为所有满足要求的频繁序列大家可以和原理篇里面分析时产生的频繁序列比较。代码输出如下  [FreqSequence(sequence[[ua]], freq4),FreqSequence(sequence[[ua], [ua]], freq2),FreqSequence(sequence[[ua], [ub]], freq4),FreqSequence(sequence[[ua], [ub], [ua]], freq2),FreqSequence(sequence[[ua], [ub], [uc]], freq2),FreqSequence(sequence[[ua], [ub, uc]], freq2),FreqSequence(sequence[[ua], [ub, uc], [ua]], freq2),FreqSequence(sequence[[ua], [uc]], freq4),FreqSequence(sequence[[ua], [uc], [ua]], freq2),FreqSequence(sequence[[ua], [uc], [ub]], freq3),FreqSequence(sequence[[ua], [uc], [uc]], freq3),FreqSequence(sequence[[ua], [ud]], freq2),FreqSequence(sequence[[ua], [ud], [uc]], freq2),FreqSequence(sequence[[ua], [uf]], freq2),FreqSequence(sequence[[ub]], freq4),FreqSequence(sequence[[ub], [ua]], freq2),FreqSequence(sequence[[ub], [uc]], freq3),FreqSequence(sequence[[ub], [ud]], freq2),FreqSequence(sequence[[ub], [ud], [uc]], freq2),FreqSequence(sequence[[ub], [uf]], freq2),FreqSequence(sequence[[ub, ua]], freq2),FreqSequence(sequence[[ub, ua], [uc]], freq2),FreqSequence(sequence[[ub, ua], [ud]], freq2),FreqSequence(sequence[[ub, ua], [ud], [uc]], freq2),FreqSequence(sequence[[ub, ua], [uf]], freq2),FreqSequence(sequence[[ub, uc]], freq2),FreqSequence(sequence[[ub, uc], [ua]], freq2),FreqSequence(sequence[[uc]], freq4),FreqSequence(sequence[[uc], [ua]], freq2),FreqSequence(sequence[[uc], [ub]], freq3),FreqSequence(sequence[[uc], [uc]], freq3),FreqSequence(sequence[[ud]], freq3),FreqSequence(sequence[[ud], [ub]], freq2),FreqSequence(sequence[[ud], [uc]], freq3),FreqSequence(sequence[[ud], [uc], [ub]], freq2),FreqSequence(sequence[[ue]], freq3),FreqSequence(sequence[[ue], [ua]], freq2),FreqSequence(sequence[[ue], [ua], [ub]], freq2),FreqSequence(sequence[[ue], [ua], [uc]], freq2),FreqSequence(sequence[[ue], [ua], [uc], [ub]], freq2),FreqSequence(sequence[[ue], [ub]], freq2),FreqSequence(sequence[[ue], [ub], [uc]], freq2),FreqSequence(sequence[[ue], [uc]], freq2),FreqSequence(sequence[[ue], [uc], [ub]], freq2),FreqSequence(sequence[[ue], [uf]], freq2),FreqSequence(sequence[[ue], [uf], [ub]], freq2),FreqSequence(sequence[[ue], [uf], [uc]], freq2),FreqSequence(sequence[[ue], [uf], [uc], [ub]], freq2),FreqSequence(sequence[[uf]], freq3),FreqSequence(sequence[[uf], [ub]], freq2),FreqSequence(sequence[[uf], [ub], [uc]], freq2),FreqSequence(sequence[[uf], [uc]], freq2),FreqSequence(sequence[[uf], [uc], [ub]], freq2)]   在训练出模型后我们也可以调用save方法将模型存到磁盘然后在需要的时候通过FPGrowthModel或PrefixSpanModel将模型读出来。   以上就是用Spark学习FP Tree算法和PrefixSpan算法的所有内容希望可以帮到大家。   欢迎转载转载请注明出处。欢迎沟通交流 liujianping-ok163.com转载于:https://www.cnblogs.com/pinard/p/6340162.html
http://wiki.neutronadmin.com/news/151213/

相关文章:

  • 阜城网站建设公司seo发帖网站
  • 建设网站需要什么人员百度收录网站方法
  • 合肥做企业网站的网络公司展示型网站 数据库
  • 网站的ftp地址是什么制作简历的免费网站
  • 网站域名怎么取无锡画室网站建设
  • 哪些网站可以做直播小程序外包公司哪家好
  • php婚庆网站源码软件开发学什么专业好
  • 哪里有免费的网站模板下载 迅雷下载 迅雷下载软件如何向百度提交网站地图
  • 网站编程软件有哪些做网站用什么开发好
  • 湘潭网站建设出色磐石网络网站会员系统方案
  • 微信商城网站方案网站仿制
  • 济南行知网站建设做响应式网站最大宽度
  • 网站平台建设服务承诺书黄山旅游攻略必去景点
  • 网站开发人员职责网站建设的市场定位
  • 360网站托管西安网络科技公司
  • 网站根目录表示在线医疗 网站建设
  • 小企业网站免费建设湛江做网站开发
  • 做片头 网站wordpress如何去除分类
  • 做一个响应式网站价格婚庆租车
  • 洛阳洛龙区网站建设推广手段和渠道有哪些
  • 武强营销型网站建设费用沈阳行业网站建设
  • 湛江cms建站wordpress的自定义菜单图标
  • 个人网站不备案wordpress网站部署
  • 一 网站建设的目的与意义新型互联网项目代理
  • 汽车网站建设论文关于网站建设心得体会
  • 网站首页怎么制作wordpress post date
  • 建设管理部门网站查询推广普通话的意义简短
  • 哪里有网站开发企业地情网站建设
  • 腾飞网站建设网站建设程序结构
  • 广元市建设银行网站wordpress统计分类数量