22_多易教育之《yiee数据运营系统》用户画像-消费行为性别预测篇

目录

一、性别预测需求

二、算法选择-逻辑回归分类算法

三、特征工程-选择特征

四、特征工程-数据加工

五、机器学习-模型训练

六、机器学习-性别预测


多易教育,专注大数据培训; 课程引领市场,就业乘风破浪
多易教育官网地址
https://www.51doit.cn
多易教育在线学习平台
https://v.51doit.cn

一、性别预测需求

用户注册时,所填写的性别,存在大概率的随意性;
不能完全作为用户画像的性别参考;

在无法通过直接手段获得用户真实性别的情况下,需要通过用户的各种行为特征,来对用户的性别进行预测;

二、算法选择-逻辑回归分类算法

可以用朴素贝叶斯做;
也可以用逻辑回归算法来做;

三、特征工程-选择特征

有以下样本特征数据,需要对未知数据进行消费行为性别预测
category1: 30天内买得最多的品类
category2: 30天内买得第二多的品类
category3: 30天内买得第三多的品类
brand1: 30天内买得最多的品牌
brand2: 30天内买得第二多的品牌
brand3: 30天内买得第三多的品牌
day30_buy_cnts: 30天内的购买单数
day30_buy_amt: 30天内的消费总金额

还可以加:30天兴趣关键词中的top10个 ......
label,gid,category1,category2,category3,brand1,brand2,brand3,day30_buy_cnts,day30_buy_amt
0.0,1,105.0,106.0,102.0,1101.0,1108.0,1109.0,20.0,100.0
0,2,105,107,102,1101,1108,1105,25,80
0,3,106,104,102,1102,1108,1109,20,100
0,4,106,107,105,1103,1108,1105,30,90
0,5,112,107,105,2103,1108,1105,38,60
1,6,112,116,112,2101,2107,2109,10,3000
1,7,115,117,112,2103,2107,2105,9,1800
1,8,112,118,113,2102,2108,2109,10,1009
1,9,116,113,118,2103,2106,2105,5,2000
1,10,115,117,102,2101,2108,2105,8,800

四、特征工程-数据加工

对上述数据,简单转向量即可

五、机器学习-模型训练

import cn.doitedu.commons.utils.SparkUtil
import org.apache.spark.ml.classification.LogisticRegression
import org.apache.spark.ml.linalg.Vectors
import org.apache.spark.mllib.evaluation.MulticlassMetrics
import org.apache.spark.sql.{Dataset, Row}

/**
  * @date: 2019/9/26
  * @site: www.doitedu.cn
  * @author: hunter.d 涛哥
  * @qq: 657270652
  * @description:
  */
object GenderPre {

  def main(args: Array[String]): Unit = {
    val spark = SparkUtil.getSparkSession(this.getClass.getSimpleName)
    import spark.implicits._

    val dfsample = spark.read.option("header", true).option("inferSchema", true).csv("rec_system/data/lgreg/lgreg_sample.csv")
    dfsample.printSchema()

    val dftest = spark.read.option("header", true).option("inferSchema", true).csv("rec_system/data/lgreg/lgreg_test.csv")
    dftest.printSchema()


    val vecsample = dfsample.map({
      case Row(label: Double, gid: Int, category1: Double, category2: Double, category3: Double, brand1: Double, brand2: Double, brand3: Double, day30_buy_cnts: Double, day30_buy_amt: Double)
      => {
        val fts = Array(category1, category2, category3, brand1, brand2, brand3, day30_buy_cnts, day30_buy_amt)
        (gid, label, Vectors.dense(fts))
      }
    }).toDF("gid", "label", "features")

    vecsample.show(10, false)

    val vectest = dftest.map({
      case Row(label: Double, gid: Int, category1: Double, category2: Double, category3: Double, brand1: Double, brand2: Double, brand3: Double, day30_buy_cnts: Double, day30_buy_amt: Double)
      => {
        val fts = Array(category1, category2, category3, brand1, brand2, brand3, day30_buy_cnts, day30_buy_amt)
        (gid, label, Vectors.dense(fts))
      }
    }).toDF("gid", "label", "features")

    val lg = new LogisticRegression()
      .setRegParam(0.5)
      .setLabelCol("label")
      .setFeaturesCol("features")

    val res = lg.fit(vecsample).transform(vectest)
    res.show(10, false)


    val rd = res.rdd.map(row => (row(1).asInstanceOf[Double], row(5).asInstanceOf[Double]))
    rd.take(10).foreach(println)

    /**
      * 算法评估
      */
    val mc = new MulticlassMetrics(rd)
    // 准确度
    println(mc.accuracy)
    // 精确度
    println(mc.precision(1.0))
    // 混淆矩阵
    val iter = mc.confusionMatrix.rowIter
    iter.foreach(println)
    // 召回率
    println(mc.recall(1.0))

    spark.close()
  }
}

六、机器学习-性别预测


    val res = lg.fit(vecsample).transform(vectest)
    res.show(10, false)


    val rd = res.rdd.map(row => (row(1).asInstanceOf[Double], row(5).asInstanceOf[Double]))
    rd.take(10).foreach(println)

    /**
      * 算法评估
      */
    val mc = new MulticlassMetrics(rd)
    // 准确度
    println(mc.accuracy)
    // 精确度
    println(mc.precision(1.0))
    // 混淆矩阵
    val iter = mc.confusionMatrix.rowIter
    iter.foreach(println)
    // 召回率
    println(mc.recall(1.0))

多易教育,专注大数据培训; 课程引领市场,就业乘风破浪
多易教育官网地址
https://www.51doit.cn
多易教育在线学习平台
https://v.51doit.cn

课程简介:  本项目课程是一门极具综合性和完整性的大型项目课程;课程项目的业务背景源自各类互联网公司对海量用户浏览行为数据和业务数据分析的需求及企业数据管理、数据运营需求。 本课程项目涵盖数据采集与预处理、数据仓库体系建设、用户画像系统建设、数据治理(元数据管理、数据质量管理)、任务调度系统数据服务层建设、OLAP即席分析系统建设等大量模块,力求原汁原味重现一个完备的企业级大型数据运营系统。  拒绝demo,拒绝宏观抽象,拒绝只讲不练,本课程高度揉和理论与实战,并兼顾各层次的学员,真正从0开始,循序渐进,每一个步骤每一个环节,都会带领学员从需求分析开始,到逻辑设计,最后落实到每一行代码,所有流程都采用企业级解决方案,并手把手带领学员一一实现,拒绝复制粘贴,拒绝demo化的实现。并且会穿插大量的原创图解,来帮助学员理解复杂逻辑,掌握关键流程,熟悉核心架构。   跟随项目课程,历经接近100+小时的时间,从需求分析开始,到数据埋点采集,到预处理程序代码编写,到数仓体系搭建......逐渐展开整个项目的宏大视图,构建起整个项目的摩天大厦。  由于本课程不光讲解项目的实现,还会在实现过程反复揉和各种技术细节,各种设计思想,各种最佳实践思维,学完本项目并勤于实践的话,学员的收获将远远超越一个项目的具体实现,更能对大型数据系统开发产生深刻体悟,对很多技术的应用将感觉豁然开朗,并带来融会贯通能力的巨大飞跃。当然,最直接的收获是,学完本课程,你将很容易就拿到大数据数仓建设或用户画像建设等岗位的OFFER课程模块: 1. 数据采集:涉及到埋点日志flume采集系统,sqoop业务数据抽取系统等; 2. 数据预处理:涉及到各类字典数据构建,复杂结构数据清洗解析,数据集成,数据修正,以及多渠道数据的用户身份标识打通:ID-MAPPING等;3. 数据仓库:涉及到hive数仓基础设施搭建,数仓分层体系设计,数仓分析主题设计,多维分析实现,ETL任务脚本开发,ETL任务调度,数据生命周期管理等;4. 数据治理:涉及数据资产查询管理,数据质量监控管理,atlas元数据管理系统,atlas数据血缘管理等;5. 用户画像系统:涉及画像标签体系设计,标签体系层级关系设计,各类标签计算实现,兴趣类标签的衰减合并,模型标签的机器学习算法应用及特征提取、模型训练等;6. OLAP即席分析平台:涉及OLAP平台的整体架构设计,技术选型,底层存储实现,Presto查询引擎搭建,数据服务接口开发等;7. 数据服务:涉及数据服务的整体设计理念,架构搭建,各类数据访问需求的restapi开发等;课程所涉及的技术: 整个项目课程,将涉及到一个大型数据系统所用到的几乎所有主要技术,具体来说,包含但不限于如下技术组件:l Hadoopl Hivel HBasel SparkCore /SparkSQL/ Spark GRAPHX / Spark Mllibl Sqoopl Azkabanl Flumel lasal Kafkal Zookeeperl Solrl Prestop
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值