深度学习入门笔记5 Facebook营销组合分类预测

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 深度学习入门笔记5 Facebook营销组合分类预测

Facebook营销组合分类预测

背景信息

在Facebook注册用户超过20亿人,每天会产生超过百亿条的消息、近10亿张新图片,借助大数据技术,Facebook可以跟踪用户网络行为、进行面部识别和标注、分析用户喜好等等,从而向广告客户的市场营销人员展示受众对于品牌、事件、活动和主题的反应。Facebook实际上已经成为一家大数据驱动的广告公司。为了展示其收集和挖掘大数据的能力,Facebook找伦敦创意机构Human After All设计了一副【市场洞察扑克牌】,每张牌都图文并茂地提供了一条关于用户的数据洞察信息,例如:

  • 41%的英国人在11月就开始圣诞节采购
  • 已婚人士比单身更喜欢讨论食物(31% vs 24%)
  • 63%谈论奢侈品话题的用户年龄在18-34岁之间
  • 61%的英国Facebook用户提前一周就开始为情人节做准备
  • 刚刚有宝宝的父母们花在手机上的时间是没有宝宝的用户的 1.6 倍
  • 母亲节那天,关于母亲节的讨论多达 9430 万次

任务说明

假设你是Facebook的大数据科学家,你的职责是为某个目标客户群,提供一组【市场洞察扑克牌】组合,为其提供市场营销策略指导,在帮助客户成功的同时也为Facebook获得广告收入。

基础规则是:你只能给客户5张牌。客户基于这5条不同的市场洞察信息制定市场营销策略,因此5张牌的不同组合方案,会产生截然不同的经济效果,也为Facebook带来不一样的收入。

52张牌对应52条市场洞察信息,会产生过百万的组合方式,你需要通过大数据技术,找出不同组合方案所对应的效果,并分出“市场洞察信息组合优化等级”,Facebook广告销售人员就可以根据这个优化等级表开展销售工作。

经Facebook允许,你做了一次小规模内测,通过内测你收到了25000条的反馈数据,根据客户反馈回来的收益,你对每条数据进行了0~9的组合优化等级标注。

接下去,你需要设计算法,根据上述 25000条内测数据及其优化等级标注,找出内在规律,为剩余100万条随机组合方案进行优化等级标注。

数据集描述

训练数据集包括11个字段,字段的含义如下所示,牌面花色用C,D,H,S表示,分表代表梅花、方块、红桃和黑桃,牌面大小用1-10以及J、Q、K来表示。需要注意,字段11是每条数据的优化等级标注。

程序实现

import numpy as np
import pandas as pd
from sklearn.preprocessing import  LabelEncoder
from sklearn.preprocessing import OneHotEncoder
import tensorflow as tf
from sklearn.model_selection import train_test_split
def load_data(path):
    """数据加载方法。
    根据指定文件的路劲进行数据的加载。
    进行数据清洗及必要的转换
    将非数值类型转换成数值类型(one-hot编码)
    Parameters
    -------
    """
    data = pd.read_csv(path,header=None)
    # data.head()
#     data.info()
    # 查看重复值有几个
    # np.sum(data.duplicated())
    # data[data.duplicated()]
    data.drop_duplicates(inplace=True)
    # data[data.duplicated()]
#     display(data.head(10))
#     将数据集分为特征与标签
    X, y = data.iloc[:,:-1],data.iloc[:,-1]
    display(X.head(10))
#     进行标签编码
    le = LabelEncoder()
#     针对每一个操作
# 进行排序之后再编码 保证每一个字符在不同的列编码一致
# 原本的数据没有大小之分 使用标签编码之后有大小之分  权重影响不一致 
    X = X.apply(lambda item: le.fit_transform(item))
#     display(X.head(10))
#     当数据没有大小之分 映射到多维空间 one-hot 编码 彼此距离相等
# 默认返回的是稀疏矩阵的类型 可以调用toarray转换为ndarray数组
    onh = OneHotEncoder()
#     display(onh.fit_transform(X).toarray())
#     
    X = pd.DataFrame(onh.fit_transform(X).toarray())
#     display(X.head())
#     目前列标签是数值类型的 对我们后面的应用TensorFlow会出现问题 支持python中合法的标识符
#     的形式  我们对列表签进行转换 转换成合法的标识符的形式  
    X.columns = X.columns.map(lambda name: f"c{name}")
#     display(X.head())
    return X, y
X ,y = load_data('data.csv')
y.value_counts()
X ,y = load_data('data.csv')
# 查看具体数据 发现数据不均衡
y.value_counts()
# 用深度神经网络来解决 DNN                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
def train_input_fn(features, labels):
    """用来训练的函数 在分类器中会调用该函数 
    Parameters
    -----
    features : 类数组对象  形状(样本数量,样本标签)
        用来训练的样本特征
    labels : 样本数据的标签 形状(样本数量)
        样本对应的标签
    Returns 
    ----
    data : tf.Data.DataSet
        用于训练的数据集
    """
#     创建数据集
    dataset = tf.data.Dataset.from_tensor_slices( (dict(features), labels))
#     对数据集进行洗牌 并且指定重复的次数 再指定每个批次传递的样本数量
    dataset = dataset.shuffle(10000, seed=0).repeat(10).batch(50)
    return dataset
# 评估预测函数
def eval_input_fn(features, labels= None):
    """评估或者预测的函数
    评估有label 预测没有
    """
#     features 要求是字典类型
    features = dict(features)
    if labels is None:
        inputs = features
    else:
        inputs = (features, labels)
    dataset = tf.data.Dataset.from_tensor_slices(inputs)
#     进行评估或者测试 无需打乱样本的顺序 与重复样本数量
    dataset = dataset.batch(100)
    return dataset
X, y = load_data('data.csv')
train_X, test_X, train_y, test_y = train_test_split(X, y, test_size=0.25, random_state=0)
# 定义一个列表 保存分类器需要的特征列
my_feature_column = []
for key in train_X.keys():
#     使用列表加入特征列
#  optimizer 优化器   hidden_units隐藏层 
    my_feature_column.append(tf.feature_column.numeric_column(key=key))
# classfier = tf.estimator.DNNClassifier(feature_columns=my_feature_column,n_classes=10,
#                           hidden_units=[512,512], optimizer='SGD')  
classfier = tf.estimator.DNNClassifier(feature_columns=my_feature_column,n_classes=10,
                          hidden_units=[512,512], optimizer=tf.train.AdadeltaOptimizer())  
classfier.train(input_fn=lambda : train_input_fn(train_X, train_y))
classfier.evaluate(input_fn=lambda : eval_input_fn(test_X,test_y))
# classfier.predict(input_fn=lambda : eval_input_fn(test_X))


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
9天前
|
机器学习/深度学习 算法 测试技术
深度学习环境搭建笔记(二):mmdetection-CPU安装和训练
本文是关于如何搭建深度学习环境,特别是使用mmdetection进行CPU安装和训练的详细指南。包括安装Anaconda、创建虚拟环境、安装PyTorch、mmcv-full和mmdetection,以及测试环境和训练目标检测模型的步骤。还提供了数据集准备、检查和网络训练的详细说明。
45 5
深度学习环境搭建笔记(二):mmdetection-CPU安装和训练
|
9天前
|
机器学习/深度学习 数据可视化 计算机视觉
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
这篇文章详细介绍了如何通过可视化深度学习中每层特征层来理解网络的内部运作,并使用ResNet系列网络作为例子,展示了如何在训练过程中加入代码来绘制和保存特征图。
28 1
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
|
11天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
深度学习之格式转换笔记(三):keras(.hdf5)模型转TensorFlow(.pb) 转TensorRT(.uff)格式
将Keras训练好的.hdf5模型转换为TensorFlow的.pb模型,然后再转换为TensorRT支持的.uff格式,并提供了转换代码和测试步骤。
42 3
深度学习之格式转换笔记(三):keras(.hdf5)模型转TensorFlow(.pb) 转TensorRT(.uff)格式
|
11天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
深度学习之格式转换笔记(二):CKPT 转换成 PB格式文件
将TensorFlow的CKPT模型格式转换为PB格式文件,包括保存模型的代码示例和将ckpt固化为pb模型的详细步骤。
25 2
深度学习之格式转换笔记(二):CKPT 转换成 PB格式文件
|
11天前
|
机器学习/深度学习 PyTorch 算法框架/工具
深度学习之格式转换笔记(一):模型文件pt转onnx转tensorrt格式实操成功
关于如何将深度学习模型从PyTorch的.pt格式转换为ONNX格式,然后再转换为TensorRT格式的实操指南。
61 0
深度学习之格式转换笔记(一):模型文件pt转onnx转tensorrt格式实操成功
|
11天前
|
机器学习/深度学习 数据可视化 Windows
深度学习笔记(七):如何用Mxnet来将神经网络可视化
这篇文章介绍了如何使用Mxnet框架来实现神经网络的可视化,包括环境依赖的安装、具体的代码实现以及运行结果的展示。
28 0
|
9天前
|
机器学习/深度学习
深度学习笔记(十二):普通卷积、深度可分离卷积、空间可分离卷积代码
本文探讨了深度可分离卷积和空间可分离卷积,通过代码示例展示了它们在降低计算复杂性和提高效率方面的优势。
23 2
深度学习笔记(十二):普通卷积、深度可分离卷积、空间可分离卷积代码
|
11天前
|
机器学习/深度学习 数据处理 数据库
基于Django的深度学习视频分类Web系统
基于Django的深度学习视频分类Web系统
36 4
基于Django的深度学习视频分类Web系统
|
9天前
|
机器学习/深度学习 并行计算 PyTorch
深度学习环境搭建笔记(一):detectron2安装过程
这篇博客文章详细介绍了在Windows环境下,使用CUDA 10.2配置深度学习环境,并安装detectron2库的步骤,包括安装Python、pycocotools、Torch和Torchvision、fvcore,以及对Detectron2和PyTorch代码的修改。
30 1
深度学习环境搭建笔记(一):detectron2安装过程
|
9天前
|
机器学习/深度学习 算法 PyTorch
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
这篇文章详细介绍了多种用于目标检测任务中的边界框回归损失函数,包括IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU和WIOU,并提供了它们的Pytorch实现代码。
20 1
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现