用线性回归无编码实现文章浏览数预测

继 无编码利用协同算法实现个性化推荐,我纯粹使用SQL和配置实现了一个更为复杂一些的,计算文章词汇的tf/idf值,将浏览数作为预测值,使用线性回归算法进行模型训练的示例。帮助大家更好的了解StreamingPro对算法的优秀支持。这篇文章的示例将会跑在Spark 2.0 上了。为了方便大家体验,我已经将Spark 安装包,StreamignPro,以及分词包都准备好,大家下载即可。

准备工作

我们假设你下载的StreamingPro,ansi-seg包在/tmp目录下。然后将Spark 2.0 解压,进入主目录。

复制如下模板

  1. 我已经发布了三个配置文件,分别计算:
  2. 词汇的 idf 值 ,链接 
  3. 给每个词汇生成一个唯一的数字标示,链接
  4. 使用线性回归算法进行训练, 链接

PS : 有道笔记有时候第一次刷不出来,你刷新下就好。

复制保存三个文件:

  1. /tmp/idf.json
  2. /tmp/term-index.json
  3. /tmp/lr-train.json

本机运行

生成idf 文件:

cd  $SPARK_HOME

./bin/spark-submit   --class streaming.core.StreamingApp \
--master local[2] \
--name test \
--jars /tmp/ansj_seg-5.0.0-all-in-one.jar \
/tmp/streamingpro-0.3.3-SNAPSHOT-online-mllib-2.0.0.jar \
-streaming.name test    \
-streaming.platform spark   \
-streaming.job.file.path file:///tmp/idf.json

生成内容会存储成Parquet文件。在/tmp/idf 目录下可以看到具体文件。

接着生成 term index ,文件位于 /tmp/term-with-index,最后进行模型训练,训练好的模型在/tmp/lr-model

后续只要在Spark Streaming中加载,即可完成流式计算。

配置文件简要说明

以lr-train.json为例,大体框架如下:

{
  "lr1": {
    "desc": "LR模型训练Job",
    "strategy": "streaming.core.strategy.SparkStreamingStrategy",
    "compositor": [  ]
  },
  "udf_register": {
    "desc": "通过这个方式可以注册你自己开发的udf函数",
    "strategy": "streaming.core.strategy.SparkStreamingRefStrategy",
        "compositor": [  ]
  },
  "term_index_ref_table": {
    "desc": "在这里申明表,可以在job中被引用",
    "strategy": "streaming.core.strategy.SparkStreamingRefStrategy",
    "algorithm": [],
    "ref": [],
     "compositor": [  ]
  },
  "term_idf_ref_table": {
    "desc": "在这里申明表,可以在job中被引用",
    "strategy": "streaming.core.strategy.SparkStreamingRefStrategy",
    "algorithm": [],
    "ref": [],
     "compositor": [  ]
  }
}

这里有一个job,两个关联表,一个UDF函数注册模块。我在配置文件的描述中已经有说明。job 是一个可执行的main函数,你可以这么理解。关联表申明后可以直接在job的sql中使用。UDF函数注册模块则可以使得你很容易扩展SQL的功能。

他们唯一的区别是,Job 的strategy 是 SparkStreamingStrategy,而其他非Job则是SparkStreamingRefStrategy。

因为一个配置文件里可能有多个Job,每个Job引用的关联表也是不一样,你需要显示指定引用,在Job 的ref中申明即可:

  "lr1": {
    "strategy": "streaming.core.strategy.SparkStreamingStrategy",
    "ref": [
      "udf_register",
      "term_index_ref_table",
      "term_idf_ref_table"
    ],
    "compositor": [

这样框架自动为你准备好关联引用,注册UDF函数,然后在lr1 这个job中就可以使用了。比如lr里的parse 函数就是通过udf_register模块提供的。

之后就是定义输入,执行的SQL,以及输出(存储或者模型引擎)。 SQL在案例中你可以看到,可以非常复杂,多个SQL模块之间可以互相作用,通过多条SQL实现一个复杂的逻辑。比如我们这里试下了tf/idf计算等功能。

文/祝威廉(简书作者)

原文链接:http://www.jianshu.com/p/d053a21944f5

著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

时间: 2024-08-08 05:33:49

用线性回归无编码实现文章浏览数预测的相关文章

Wordpress实现php代码版文章浏览数

我个人只要"统计和输出浏览数"功能,所以挪用了主体函数部分    代码如下 复制代码 function custom_the_views($post_id, $echo=true, $unit=' views') {     $count_key = 'views';     $views = get_post_custom($post_id);     $views = intval($views['views'][0]);     if ($views == '') {      

基于行数预测的长文章分页

说句老实话,我是个不大习惯写博的主,而且本次写博目的是想过来发个小广告,哈哈,都是园子里的兄弟不要拿砖头扔我 园子里的兄弟时间都是很宝贵的.为了大家消消火,少让大家过来扔砖头.所以就把最近项目里碰到的一个长文章自动分页的问题跟大家分享下.说起长文章分页也是属于老生常谈了,网上搜下可以找到一箩筐.目前网上流传的代码大多是基于对文章中字符的多少来进行,这种方法对于图片等这些标记就束手无策了. 由于目前文章上传大多采用HTML编辑器,使得里面参杂的HTML代码严重影响到场文章分页的效果.我现在想说的是

php+mysql文章浏览次数统计及发布时间

一个网页能显示出"文件上传时间"和"浏览人数",不仅是文章历史的纪录,也能反映出该文章的受众欢迎度."文件上传时间"和"浏览人数"记录方法肯定很多,笔者根据自己的理解用php+mysql写了一个,不知代码够不够优化,但使用起来感觉不错,没有问题,今写出来和大家一起分享. 思路 1.文章上传时先在数据库中写入"网页地址"."上传时间time()"和"计数起点0". 2.

php ajax 局部刷新实现无刷新发表文章评论(兼容主浏览器)

php教程 ajax 局部刷新实现无刷新发表文章评论(兼容主浏览器) 在网站发表评论的经历,传统的发表过程无非是:发表->提交页面表单->等待刷新页面, 这样在网络比较拥挤的时候,往往需要漫长的等待,今天介绍用PHP+Ajax实现页面无刷新发 表评论,希望对初学ajax的PHPer有所帮助.   那么首先,我们需要一个基本的ajax开发框 架,文件ajax.js就包含了这个框架,代码如下: var http_request=false;   function send_request(url)

wordpress可防刷新文章浏览次数统计代码

第一步 按照惯例,把以下代码扔到functions.php里  代码如下 复制代码 /***********文章统计*********/  function process_postviews() {       global $user_ID, $post;       if(check_cookie($post))           return;       if(is_int($post)) {           $post = get_post($post);       }  

BCD编码的进制数为整数,如何判断这个数是整数还是负数?

问题描述 BCD编码的进制数为整数,如何判断这个数是整数还是负数? BCD编码的进制数为整数,如何判断这个数是整数还是负数?求大神指点啊!!! 解决方案 在二进制码中,为了区分正负数,采用最高位是符号位的方法来区分,正数的符号位为0.负数的符号位为1.剩下的就是这个数的绝对值部分,可以采用原码.反码.补码3种形式来表示绝对值部分.原码最简单,也最好理解.原码就是绝对值的二进制数形式:例如+7的8位二进制原码是00000111,-7的8位二进制原码是10000111.但对于二进制运算而言,原码的运

代码-求大神指导!!!!!如何实现记录用户浏览数,将浏览的类型记录下来,根据次数形成用户标签来做推广

问题描述 求大神指导!!!!!如何实现记录用户浏览数,将浏览的类型记录下来,根据次数形成用户标签来做推广 我做的是一个o2o的活动网站,线上报名活动,同时线上有论坛 我希望根据用户经常报名的活动类型或者参与的论坛版块记录下这些浏览数, 然后在数据库表里将浏览的主题和次数形成用户的标签,来做相应的活动或产品推广 我的活动表activity里有type就是活动的类型 帖子表tiezi有版块就是帖子的类型 然后要怎么记录用户的浏览数的代码如何实现, 然后是新建一张表里面有userid,浏览次数,标签呢

无觅相关文章插件实现大博客战略

中介交易 SEO诊断 淘宝客 云主机 技术大厅 在大博客向大家推荐无觅相关文章插件前,我们对这个工具进行了比较全面的试用,借助我们自己的博客以及一些热心的我烧网博主帮助,我们可以得出结论--无觅插件的安装和使用是非常简单的,而且安装上以后,出相关文章的速度也很快.这里以WordPress为例向大家介绍一下无觅插件的使用方法. 在WordPress上使用无觅相关文章插件和安装其他插件一样,你可以通过在WordPress后台插件管理中心搜索"wumii"找到"无觅相关文章插件&q

大博客推荐 无觅相关文章插件

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 近日,广受关注的我烧网大博客战略向众多博主推荐了一项服务--无觅相关文章插件.无觅相关文章插件对于很多站长来说已经不是一个新鲜事物了,大博客此次也是希望能将一个广受赞誉的工具推荐给更多还不了解它的博主们. 无觅相关文章插件是一个为博客提供相关博文推荐的插件,直观上的第一感觉,无觅与其他的相关文章最大的不同在于图文并茂,更能吸引读者的眼球.而实