python的MapReduce的应用案例

2023-05-16

 在学习这个项目中用到许多数学公式,有的自己不太懂,所以上传上来进行实地应用。

参考资料:

 

 

 

 

 

 

 

generate_train_feature_map.py

#!/usr/bin/env python
# encoding=UTF-8

"""
生成训练数据
支持CTR/CVR
支持特征选择
支持紧密和稀疏2种特征格式

输入数据格式(24): 

key: feature
"""
import os
import sys
from optparse import OptionParser

FORMAT_DENSE = 0  # 紧密
FORMAT_SPARSE = 1  # 稀疏
DATA_TYPE_CTR = "ctr"
DATA_TYPE_CVR = "cvr"
MISSING_VALUE = "-70000.0"
DOUBLESTR="1.7976931348623157E308"
INFINITY="Infinity"
NAN="NaN"

MAYBE_UNKNOWN={}
MAYBE_UNKNOWN["DISTANCE"] = 1
MAYBE_UNKNOWN["ADISTANCE"] = 1
MAYBE_UNKNOWN["CTR"] = 1
MAYBE_UNKNOWN["CXR"] = 1
MAYBE_UNKNOWN["CVR"] = 1
MAYBE_UNKNOWN["RCTR"] = 1
MAYBE_UNKNOWN["RCXR"] = 1


LABEL_NEG = "0"
LABEL_POS = "1"


class Transfer(object):
    def __init__(self, file_select_feature):
        self._select_feature_file = file_select_feature
        self._load_select_feature()

    def _load_select_feature(self):
        self._selected_features = []
        for row in open(self._select_feature_file, 'r'):
            self._selected_features.append(row.strip())

    def transform(self, features_s, format_out):
        if format_out == FORMAT_DENSE:
            return self.transform_to_dense(features_s)
        elif format_out == FORMAT_SPARSE:
            return self.transform_to_sparse(features_s)
        else:
            return "-1"

    def transform_to_dense(self, features_s):
        feature_values = {}
        feats = features_s.split(",")
        for feat_s in feats:
            try:
                feat, v = feat_s.split(":")
                if v == DOUBLESTR or v == INFINITY or v == NAN or v== MISSING_VALUE:
                    continue
                feature_values[feat] = v
            except ValueError:
                continue
        value_list = []
        index = -1
        for feat in self._selected_features:
            index += 1
            try:
                value = feature_values[feat]
                if feat == "DISTANCE" or feat == "ADISTANCE":
                    if float(value) > 3.0E6:
                        continue
                value_list.append("%d:%s" % (index, value))
            except KeyError:
                if not MAYBE_UNKNOWN.has_key(feat):
                    value_list.append("%d:%s" % (index, "0.0"))
                continue
        value_str = " ".join(value_list)
        return value_str

    def transform_to_sparse(self, features_s):
        feature_values = {}
        feats = features_s.split(",")
        for feat_s in feats:
            try:
                feat, v = feat_s.split(":")
                if v == DOUBLESTR or v == INFINITY or v == NAN:
                    continue
                feature_values[feat] = v
            except ValueError:
                continue
        value_list = []
        index = -1
        for feat in self._selected_features:
            index += 1
            try:
                value = feature_values[feat]
                if feat == "DISTANCE" or feat == "ADISTANCE":
                    if float(value) > 3.0E6:
                        value = MISSING_VALUE
            except KeyError:
                if MAYBE_UNKNOWN.has_key(feat):
                    value = MISSING_VALUE
                else:
                    value = "-1"
            value_list.append("%d:%s" % (index, value))
            #value_list.append(value)
        value_str = " ".join(value_list)
        return value_str


parser = OptionParser()
parser.add_option("-d", "--data_type", dest="data_type", help="data type [ctr|cvr]")
parser.add_option("-f", "--file", dest="feature_file", help="select feature file")
parser.add_option("-t", "--feature_format", dest="feature_format", type="int", help="feature format [0|1]")

(options, args) = parser.parse_args()

# 数据类型
if options.data_type:
    data_type = options.data_type
    if data_type != DATA_TYPE_CTR and data_type != DATA_TYPE_CVR:
        print "parameter data_type error"
        parser.print_help()
        sys.exit(1)
else:
    data_type = DATA_TYPE_CTR

# 特征文件
if not options.feature_file:
    parser.print_help()
    sys.exit(1)
if not os.path.isfile(options.feature_file):
    print "select_feature_file error"
    parser.print_help()
    sys.exit(1)

# 特征格式
if options.feature_format:
    feat_format = options.feature_format
    if feat_format != FORMAT_DENSE and feat_format != FORMAT_SPARSE:
        print "parameter feature_format error"
        parser.print_help()
        sys.exit(1)
else:
    feat_format = FORMAT_DENSE
    #feat_format = FORMAT_SPARSE

transfer = Transfer(options.feature_file)

pos_num = 0
neg_num = 0

for line in sys.stdin:
    line = line.strip("\n\r")
    cols = line.split("\t")
    if len(cols) == 24:
        feature_str = cols[23]
        # global_id = cols[15]
        clicked = cols[0]
        ordered = cols[1]
        try:
            feature_vector = transfer.transform(feature_str, feat_format)
        except:
            print >> sys.stderr, "reporter:counter:My Stat,Map Feature_str,1"
            continue
        if feature_vector == "":
            print >> sys.stderr, "reporter:counter:My Stat,Map Feature Empty,1"
            continue
        if data_type == DATA_TYPE_CTR:
            label = clicked
        elif data_type == DATA_TYPE_CVR:
            label = ordered
        if label == LABEL_NEG:
            neg_num += 1
        elif label == LABEL_POS:
            pos_num += 1
        else:
            print >> sys.stderr, "reporter:counter:My Stat,Map Label Error,1"
            continue
        print "%s\t%s" % (feature_vector, label)
        print >> sys.stderr, "reporter:counter:My Stat,Map OK,1"
    else:
        print >> sys.stderr, "reporter:counter:My Stat,Map Length Error,1"

print >> sys.stderr, "reporter:counter:My Stat,Map Pos Num,%d" % pos_num
print >> sys.stderr, "reporter:counter:My Stat,Map Neg Num,%d" % neg_num

generate_train_feature_reducer.py

#!/usr/bin/env python
# encoding=UTF-8

"""
生成CTR训练数据
支持GBDT/LIBSVM 2种输出格式
GBDT格式: Init label weight feature
LIBSVM格式: label feature
输入数据格式(2): feature,label
"""

import sys
from optparse import OptionParser

FORMAT_GBDT = "gbdt"
FORMAT_LIBSVM = "libsvm"

parser = OptionParser()
parser.add_option("-o", "--instance_format", dest="instance_format", help="instance format[gbdt|libsvm]")

(options, args) = parser.parse_args()

# 输出格式
if options.instance_format:
    ins_format = options.instance_format
    if ins_format != FORMAT_GBDT and ins_format != FORMAT_LIBSVM:
        print "parameter instance_format error"
        parser.print_help()
        sys.exit(1)
else:
    ins_format = FORMAT_GBDT

for line in sys.stdin:
    cols = line.strip("\n\r").split("\t")
    if len(cols) == 2:
        feature = cols[0]
        label = cols[1]
        if ins_format == FORMAT_GBDT:
            print "%s %s %d %s" % ("0.0", label, 1, feature)
        elif ins_format == FORMAT_LIBSVM:
            print "%s %s" % (label, feature)
        else:
            print >> sys.stderr, "reporter:counter:My Stat,Reduce Format Error,1"
            continue
    else:
        print >> sys.stderr, "reporter:counter:My Stat,Reduce Length Error,1"

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python的MapReduce的应用案例 的相关文章

  • SUMO等距离或随机车流仿真

    1 使用netedit构建路网 xff0c 由gneE0 xff0c gneE1 xff0c gneE2 xff0c gneE3四个路段构成 xff0c 保存为abc net xml xff1b 2 构建车流文件abc rou xml 下面
  • STM32关于systick计时器时间不对的一点问题

    STM32关于systick计时器时间不对的一点问题 我是新手刚接触STM32 xff0c 我设定的时间总是实际时间的一半 xff0c 检查许久也不知道是哪里出了问题 下面是延时函数和计时器的配置 void SysTick Init u8
  • 项目综合管理:CMMI和敏捷实践分析

    转自 http www examda com pm Know zonghe 20100507 105035776 html 由于上次已经说过CMMI与敏捷的关系在企业宏观面的思考 xff0c 这里只谈在企业实施层面的共同点和区别 一 共同点
  • MySQL 修改root用户密码和设置权限

    方法1 xff1a 用SET PASSWORD命令 mysql u root p mysql gt SET PASSWORD FOR 39 root 39 64 39 localhost 39 61 PASSWORD 39 newpass
  • A-Softmax(SphereFace)的总结及与L-Softmax的对比

    目录 1 A Softmax的推导 2 A Softmax Loss的性质 3 A Softmax的几何意义 4 源码解读 A Softmax的效果 与L Softmax的区别 引言 SphereFace在MegaFace数据集上识别率在2
  • keil编译不过的常见问题

    keil编译不过的常见问题 1 编码方式不统一编译报错例解决方法 改成同一编码方式 2 重复定义编译报错解决方法保证工程里只有一个含有main xff08 xff09 的c文件或者保证USER里只有一个含有main xff08 xff09
  • Chrome 无法携带跨站cookie的各种解决方案

    同源策略的历史及对应的解决方案 当页面内发起请求时 xff0c 会默认携带该域名下的cookie 而cookie同源策略是指 xff1a 除非当前域名和请求域名是同源 xff0c 才会默认携带cookie 这就导致 xff0c localh
  • 华为OJ_2129_素数伴侣

    输入 有一个正偶数N xff08 N 100 xff09 xff0c 表示待挑选的自然数的个数 后面给出具体的数字 xff0c 范围为 2 30000 输出 输出一个整数K xff0c 表示你求得的 最佳方案 组成 素数伴侣 的对数 输入
  • 深度学习-神经网络之函数拟合

    理论上神经网络可以拟合任意的函数 xff08 应该用逼近更贴切一些 xff09 定义好神经网 xff0c 送进去x和y xff0c 模型就学完了 但实际上 xff0c 远没有这么简单 不信 xff0c 我们来看个简单例子 拟合一个y 61
  • XServer基本概念 + x11vnc配置远程桌面

    前言 读研发论文难啊 xff0c 之前所有的blog都写在了自己的笔记本上 xff0c 因为觉的写的太好了浪费时间 xff0c 自己可以看懂就够了 xff0c 但是白岩松老师的 34 机会大多数取决于别人背后怎么评价你 34 和雄子的 将复
  • LCD1602按照5x7点阵显示字符,可显示一些简单的汉字

    xff01 本博客是 LCD1602自定义点阵字符 的学习笔记以及补 xff08 chao xff09 充 xff08 xie xff09 LCD1602能存8个自定义字符 首地址分别为0X40 0X48 0X50 0X58 0X60 0X
  • mysql修改root密码

    打开mysql命令终端 MySQL 8 0 Command Line Client xff0c 然后输入密码进入 紧接着输入如下命令 xff0c 可将密码更改为 rootcgcl alter user root 64 localhost i
  • Linux下vncviewer和vncserver的安装

    1 安装vncserver xff08 1 xff09 需要以root用户进行vncserver的安装 xff0c 命令行为 xff1a yum install tigervnc server xff08 2 xff09 安装vncview
  • 怎样把shell结果赋值给变量 | shell 中获取命令语句结果的方式

    怎样把shell结果赋值给变量 xff0c shell 中获取命令语句结果的方式 xff0c 通常采用以下两种方式 xff1a 1 执行符号方式 96 96 如 xff1a a 61 96 echo abc 96 echo a abc 2
  • CSS的替换元素

    CSS的 替换元素 xff1a 通过修改某个元素的属性值呈现的内容就可以被替换的元素 替换元素的特性 xff1a 内容不受页面上的CSS的影响 也就是样式表现在CSS作用域之外大部分有自己默认的尺寸 xff0c lt img gt 标签没有
  • Jack 服务编译问题 Android 7.0

    jack 服务常见错误解决方法 当你编译Android时 xff0c 你不需要修改任何内容 Jack是Andriod M的默认编译工具 只需使用标准的makefile命令执行即可 当第一次执行jack时 xff0c 它会在你的机器上启动一个
  • Tomcat+Nginx+HTTPS

    root 64 lb01 conf d cat etc nginx conf d proxy zrlog oldboy com conf upstream zrlog server 172 16 1 7 8080 server 172 16
  • PHP多进程异步处理复杂接口类似微服务(企业真实案例)

    需求 用户下单 推荐合师傅给用户 类似滴滴派单 场景 在线服务平台有各类技术师傅入驻 顾客在下单后需要根据在线师傅及顾客位置计算推荐总分排行后返回推荐的师傅给用户 问题 1 php fpm 框架 无法多线程工作 2 平台师傅有多个评分属性
  • Swoole数据库连接池分析及实现

    使用PHP swoole 由于其内存常驻及协程特性 一般是需要使用数据库链接池来减少链接创建的开支的 一个连接池的实现难点在哪 下面分析 1 如何判断是否该获取新的链接 A 默认规则一个协程对应一个数据库连接 同一个协程里应该返回同一个链接
  • Api接口数据安全及数据加密方式主要流程实现

    简述接口数据安全的主要实现方式 一 数据校验 常用算法 MD5 SHA1 流程 1 前端生成数据后按照约定方式生成一个sign 校验字段 一般通过MD5或者SHA1 方式 一并提交给后端 2 后端获得参数后通过同样的方式生成sign 然后跟

随机推荐

  • 简述PHP执行流程

    目的 xff1a 本文主要介绍PHP执行流程 目的是梳理php代码是如何最终转换成为机器二进制指令而被执行的 参考文章 xff1a https blog csdn net diavid article details 81035188 PH
  • Java为啥比PHP快?

    一直都说php比java要慢 今天从理论跟实际测试看看php是否真的慢 慢在哪里 一 运行模式对比 java 一般用java 语言开发的网站项目都是以命令行模式运行 部分可能以可执行文件 xff08 exe xff09 的形式运行 php
  • PHP微服务 hyperf+nacos使用

    PHP微服务 hyperf 43 nacos使用 这里简单说下微服务 及架构方面东西 1 微服务对php 43 fpm 模式意义不是很大 原因就是php 43 fpm 天生支持模块拆分 热更新 如果只是性能上的考虑 那php 43 fpm
  • PHP项目临时拓容Nginx负载均衡实操记录

    项目域名 test baidu com 服务器A 127 0 0 1 内网ip 原有服务器 服务器B 172 30 228 254 内网ip 需求 项目本在服务器A中正常运行 现在临时搞活动 需要拓容一台 多台服务器 在最小成本跟改动下完成
  • layui templet中html标签获取js全局变量方法

    开发中涉及layui中 xff0c 在使用到table的模板方法时templet xff0c 会遇到其内部除了使用table field xff08 此处通过d 来获取 xff0c 就不啰嗦了 xff09 然后如果想获取某个外部js中的全局
  • PHP分布式部署代码同步Git实现

    PHP 分布式部署后 代码自动同步实现 项目架构如下 需要更新代码时我们只需要把代码传到主服务器后通过定时任务主服务器自动push 代码到Git服务端 之后其他从服务器则自动从Git云端拉取最新的代码即可 需要用到 expect 软件 安装
  • nginx 负载均衡502问题

    项目架构 nginx 43 php fpm 负载均衡 负载均衡关键配置如下 引入负载均衡配置 include proxy conf 负载均衡 upstream test balance server 172 28 196 xxx 80 we
  • 用Android 动画 演示冒泡排序

    之前面试遇到的一道机试题 当时时间不够没有调出来 有时间把它整了一下 代码 public class MainActivity extends ActionBarActivity implements OnClickListener pri
  • 教你怎么阅读外文文献

    转载自 http www douban com group topic 14551517 NO 1 中科院大博士是如何进行文献检索和阅读的 xff08 好习惯受益终生 xff09 一 如何进行文献检索 我是学自然科学的 xff0c 平时确实
  • webpack打包时提示Invalid configuration object错误

    初学者如果是通过网上教程来学习webpack xff0c 第一次用webpack打包时通常会遇到下面这样的问题 xff1a 实际上出错信息已经说明了问题原因 xff1a Invalid configuration object Webpac
  • Maven核心概念(1)--坐标

    注 xff1a 转载时请注明原作者 lreis2010 及出处 http blog csdn net lreis2010 xff01 作者初次接触Maven是希望有一种方式能够自动化地管理项目中使用的Jar包 随着对于Maven的学习 xf
  • 【UML】四种关系

    一 在学习UML中的时候含有的四种关系是 xff1a 关联Association xff1a 是一种结构化的关系 xff0c 指一种对象和另一种对象有联系 xff0c 给定关联的两个类 xff0c 可以从其中的一个类的对象访问到另一个类的相
  • vnc,在windows系统上安装vnc,操作教程

    VNC是一款可以实现远程桌面控制 方面很实用的小工具 xff0c 今天给大家分享如何在在windows系统上安装vnc的操作方法 xff1a 小编在这里用到了 xff1a IIS7服务器管理工具来操作的 具体操作的如下 xff1a 一 首先
  • 51单片机手动自动智能窗户窗帘控制系统手动自动定时

    实践制作DIY GC 00 45 智能窗户窗帘控制系统 一 功能说明 xff1a 基于 51 单片机设计 智能窗户窗帘控制系统 二 功能介绍 xff1a STC89C52 AT89C52 系列最小系统板 43 5VUSB电源 43 ULN2
  • linux下 bash-completion 离线安装(Ubuntu或centos )

    bash completion 安装 实现k8s命令自动补全 xff0c 我们需要安装bash completion 在github下载离线包 下载地址解压 tar xvJf bash completion 2 11 tar xz 命令补全
  • ROS自定义地图(CAD、手绘等)

    0x00 概述 在前面的文章中 xff0c 我们介绍如何自动导航时 xff0c 都是基于使用gmapping或者hector mapping创建的地图 当然使用其他的建图方法创建的地图也可以 xff0c 但是目前为止 xff0c 无论使用哪
  • STM32 控制蜂鸣器播放音乐的原理和实例

    STM32 控制蜂鸣器播放音乐的原理和实例 本文通过将乐谱里的每个音符的声音频率和声音时长保存在两个数组里面 1 使用通用定时器TIM4实现无中断的微秒级延时函数 xff0c 控制每个音符的发声时长 2 使用系统滴答时钟Systick实现带
  • 影响力最大化——CELF算法的简介与python实现

    CELF算法是Leskovecl等人利用IC模型的子模特性对爬山贪心算法进一步改进得到的优化算法 子模函数的定义为 任意函数f 将有限集合映射为非负实数集并且满足收益递减特性即为子模函数 设集合s T xff0c 任意元素v添加到集合S中获
  • Qos队列调度算法(SP/WRR/DWRR)

    本文重点分析sonic中支持的三种Qos队列调度算法 xff1a 1 SP xff08 Strict Priority xff0c 严格优先级 xff09 也称为PQ xff08 Priority Queuing xff09 调度 xff0
  • python的MapReduce的应用案例

    在学习这个项目中用到许多数学公式 xff0c 有的自己不太懂 xff0c 所以上传上来进行实地应用 参考资料 generate train feature map py usr bin env python encoding 61 UTF